先上代码
SSEG SEGMENT PARA STACK'STACK' ;定义堆栈段
DW 256 DUP(?)
SSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,SS:SSEG
START:
MOV AX,SSEG ;将堆栈段的地址给SS
MOV SS,AX
MOV CX,10 ;设置循环次数
READ:
MOV AH,01 ;01号中断,可以从键盘输入一个一个字符并存在AL中
INT 21H
PUSH AX ;入栈,入栈的必须是字
LOOP READ ;循环READ
MOV CX,10 ;重新设置循环次数
DISP:
POP DX ;出栈,出栈的也必须是字
MOV AH,02H ;02号中断,输出DL一个字符
INT 21H
LOOP DISP ;循环DISP 一次出栈
MOV AH,4CH
INT 21H
CSEG ENDS
END START
需要时倒序输出,正好堆栈这种数据结构可以满足,因此我们只要将从键盘得到的数据一次入栈,然后出栈的时候因为从栈顶开始,此时设置好循环次数依次出栈并保存到DX直接输出就可以了
下面我们尝试用debug 来查看堆栈段的数据 是不是和我们输出的一致
特别说明一下如果程序里面输入的 按T进行单步执行的时候,遇到输出很自动跳出来,然后直接输入按回车就好了
我们先连续执行t 命令 输出两个参数(这里我输入R和W)