|
1鱼币
assume cs:code stack segment dw 8 dup (0) stack ends code segment start: mov ax,stack mov ss,ax mov sp,16 mov ds,ax mov ax,0 call word ptr ds:[0eh] inc ax inc ax inc ax mov ax,4c00h int 21h code ends end start u指令查看是 0C50:0000 B84F0C MOV AX,0C4F 0C50:0003 8ED0 MOV SS,AX 0C50:0005 BC1000 MOV SP,0010 0C50:0008 8ED8 MOV DS,AX 0C50:000A B80000 MOV AX,0000 0C50:000D FF160E00 CALL [000E] 0C50:0011 40 INC AX 0C50:0012 40 INC AX 0C50:0013 40 INC AX 0C50:0014 B8004C MOV AX,4C00 0C50:0017 CD21 INT 21 |
最佳答案
查看完整内容
你仔细看下mov ds,ax这条指令 ,说明DS和SS在同一段内,然后向下执行到
cll word ptr ds:[0eh] 这条指令执行后IP=11 然后SP=0E(因为是 IP入栈了,本来SP在10H或者16现在指向0E)
也就是说0EH的值也就是SP的所指向的值就是0011也就是下一条指令所指向的IP值也就是inc ax这条指令
意思就是相当于cll word ptr ds:[0eh] 这条指令相当于没执行,然后INC 3次 AX在程序返回之前AX=3
不知道这样说你懂了没有,如果没懂可以给我留言{:1_1:}
|