【任务】
程序功能:从键盘上输入一个字符串,以结束,将字符串倒序输出(字符串不超过80个字符)。
输入样例:abcd#1234 efg
输出样例:gfe 321#dcba
算法要求:逐个输入字符(21H中断的01H功能)并压栈,遇$后,将字符出栈按倒序写入数据区,输出字符串(21H中断的09H功能)
技术要求:用.data、.code等伪指令,写“简洁型”程序
【参考解答】
.8086
.MODEL small
.data
str db 81 dup ('$') ;初始全$,前面加任意字符后均可结束
.stack 100H
.code
start: mov ax,@data
mov ds,ax
mov cx, 0
input: mov ah, 01 ;输入字符并压栈,直到¥
int 21h
cmp al, '$'
je reverse
push ax ;实际关心的,只是al中的字符
inc cx
jmp input
reverse: ;反转并存储
lea bx,str
mov si, 0
b_rev:
pop ax
mov [bx+si], al ;将从栈中倒序取出的数据存储下来
inc si
loop b_rev
output:
lea dx,str ;字符串的起始地址放dx
mov ah, 09h
int 21h ;输出
stop: mov ax,4c00h
int 21h
end start