题目如下:
(1)
将代码写在.asm中,然后打开boxdos即可生成t1.exe.
(2)
首先来分析一下,代码完成的功能。
assum cs:codesg
codesg segment
mov ax,2000 // ax = 2000
mov ss,ax // ss = 2000
mov sp,0 // sp = 0
add sp,10 // sp = 10,
pop ax // sp = sp + 2 =12
pop bx // sp = sp + 2 = 14 // 这段代码首先将ss:10位置的两个值,分别放入ax 和 bx中
push ax // sp = sp - 2 = 12
push bx // sp = sp - 2 = 10 // 然后再将ax先入栈,bx再入栈,这样改变了栈中两个值的顺序
pop ax // sp = sp + 2 = 12
pop bx // sp = sp + 2 = 14 // 最后,再将ax和bx中的值,互换
mov ax,4C00
int 21
codesg ends
end
首先,执行exe文件
debug t1.exe
查看栈中2000:10位置的内容
执行前,-r查看
可见:SS和SP两行代码是一起执行的。
交换了AX和BX中的值。