汇编程序32:检测点10.5(二)

 1 assume cs:code
 2 //推算a程序结束前ax与bx的值,使用call dword ptr指令
 3 stack segment
 4     dw 8 dup(0)
 5 stack ends
 6 
 7 code segment
 8     start:
 9           mov ax,stack
10           mov ss,ax
11           mov sp,16
12           mov word ptr ss:[0],offset s //由挂载程序可知标号s处IP=1A
13           mov ss:[2],cs //CS由机器决定,加入此处CS=1000h
14           call dword ptr ss:[0] //先压栈,此处IP取下一命令第一字节IP=19,把CS:IP=1000:19入栈,再取SS:0处值作为新IP,易知第一次取得IP=0;随后跳到程序第一条指令,直到SS:0处有值;此处易推得IP=19,即继续执行下面指令
15           nop
16         s:
17           mov ax,offset s //ax=1A
18           sub ax,ss:[0cH] //由之前入栈顺序可知SS:0C处值为19,所以ax=1A-19=1
19           mov bx,cs //bx=1000h
20           sub bx,ss:[0eH] //同上,所以bx=1000h-1000h=0
21     mov ax,4c00h
22     int 21h
23 code ends
24 
25 end start

 

posted on 2018-01-30 00:44  叶倾仙  阅读(328)  评论(0编辑  收藏  举报

导航