保持微型计算机运行必不可少,保持微型计算机正常运行必不可少的输入输出设备...

保持微型计算机正常运行必不可少的输入输出设备

outstr macro string ;定义宏,用以输出字符串。不定义可以

local next,tmp

ifnb

jmp next

tmp db '&string','$'

next: push ax

push dx

push ds ;保护寄存器

mov ax,seg tmp

mov ds,ax

mov dx,offset tmp

mov ah,09h

int 21h

pop ds

pop dx

pop ax

endif

endm

br macro ;定义宏进入回车换行

push ax

mov ah,0eh

mov al,0dh

int 10h ;调用bios输出换行符

mov al,0ah

int 10h ;调用bios输出回车符

pop ax

endm

buffersize = 20 ;设置数据缓冲区大小

dseg segment 'data' ;定义数据段

buffer db buffersize,?,buffersize dup(0);串实践最长为buffersize-1

dseg ends

sseg segment stack ;定义栈

db 1024 dup(0)

sseg ends

cseg segment 'code'

assume cs:cseg

start: outstr ;调用宏输出提示,有的环境不支持中文,那么,就用英文代替<>中的内容

mov ax,dseg

mov ds,ax

mov dx,offset buffer ;设置ds:dx对准缓冲区

mov ah,0ah

int 21h ;调用系统功能,输入串

;为输入的字符串设置串结束标志,以供串输出使用

mov bx,dx

add bl,ds:1[bx]

adc bh,0

mov byte ptr ds:2[bx],'$'

add dx,2 ;使用dx对准串头

;串结束设置完成。下面进行验证

br ;先输出回车换行

outstr

mov ah,09h

int 21h

;下面进行用户交互

br ;输出回车

outstr

mov ah,0h

int 16h ;用键盘读入一个字符到al

cmp al,'1'

je next

br

outstr

br

jmp start ;如果用户输入的为数字1,则继续执行下面的代码,否则重新执行上面的代码

;下面进行串序颠倒

next: mov di,dx ;使di指向串头

lea si,ds:1[bx];si指向串尾

xor cx,cx

mov cl,ds:[di-1];把实践输入的串的长度存入cx

shr cx,1 ;cx除以2

lp: mov al,[si] ;开始交换数据

xchg al,[di]

mov [si],al ;完成一对数

据的交换

inc di

dec si

loop lp

;输出结果

br ;先输出一个回车换行

outstr

mov ah,9h

int 21h

mov ax,4c00h

int 21h

cseg ends

end start

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值