分析下面的程序,在运行前考虑:这个程序能正确返回吗?运行后在思考:为什么是这种结果。
assume cs:code
code segment
mov ax,4c00h
int 21h
start: mov ax,0
s: nop
nop
mov di,offset s ;取得s的偏移地址
mov si,offset s2 ;取得s2的偏移地址
mov ax,cs:[si]
mov cs:[di],ax ;将s2处的两字节复制到s处
s0: jmp short s
s1: mov ax,0
int21h
mov ax,0
s2: jmp short s1
nop
code ends
end start
第一次执行jmp short s后,程序到s:处。用debug发现jmp short s1是2字节,也就是把这句复制到了s:处。debug 发现转移的距离也是刚好到code第一句的地方,刚好返回
- [nbfengyi] 图在相册 10/22 22:02
- [nbfengyi] 图片在相册里 10/21 15:43
- [chinatree] 书上有讲。 10/04 12:30
- [12345678911] 第三问的解答我不懂什么回事能解释下吗 10/04 11:45
- [chinatree] 写出来就行了,不用太纠结。 09/29 21:00
- [nbfengyi] 用了一整个下午写这个程序,一开始就想到了循环,开始想外循环必有一次,内循环有4字节和2字节的,是不要 09/29 20:20
- [nbfengyi] 开始没有注意是四个字母 09/27 20:06
- [nbfengyi] 开始时: -d ds:0 144C:0000 31 2E 20 64 69 73 70 6C- 09/27 20:06
- [chinatree] 你不要拿半成品来糊弄自己好不好?! 09/27 17:50
- [nbfengyi] 受教了, 09/24 09:59