题目:
用 INT 21H 的1号功能,输入一个字符串“Hello, world!”,存放在内存,然
后倒序输出。
data segment
;打开一个100字节的内存区
string db 100 dup (?)
data ends
stack segment stack
top label word
;打开一个48字节的内存区
dw 30h dup (?)
stack ends
code segment
assume ds:data,ss:stack,cs:code
main proc far
;初始化
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
lea sp,top
mov bx,0 ;作为存放数据的偏移量
next1:
mov ah,1 ;21H的1号功能:键盘输入并回显,AL=输入字符
int 21h
mov string[bx],al
inc bx
cmp al,0dh ;判断输入的字符是否为回车
jz next2 ;回车跳转到next2
loop next1 ;不是回车继续输入
next2:
mov cx,bx ;bx作为偏移量逆序输出,先把偏移量给cx
inc cx ;字符数是bx+1,即cx+1作为循环次数
;逆序输出字符串
next3:
mov dl,string[bx]
mov ah,2h
int 21h
dec bx
loop next3
mov ah,4ch
int 21h
main endp
code ends
end main