题目描述:编写一程序,从键盘输入一个不超过40个字符的串,然后逆序输出。
分析:循环输入,每次输入判断是否为回车,是则结束,否则字符进栈,使用一个寄存器保存输入的字符数,以便输入完成后修改出栈次数,完成逆序。
代码:
stack segment dw 100 dup(?) top label word stack ends code segment start: assume ss:stack,cs:code mov ax,stack mov ss,ax mov sp,offset top mov cx,40 ;次数控制 mov bx,0 loop1: mov ah,01H int 21h cmp al,0DH ;回车判定 je next mov ah,0 push ax inc bx loop loop1 next: mov cx,bx output: pop dx mov ah,02H int 21h loop output mov ax,4C00H int 21h code ends end start
过程出现的问题:进栈出栈的时候没有注意到时字操作,直接使用了AL,DL 。判断回车的时候直接跳转到output,没有修改CX。