您的位置:首页 > 其它

汇编语言 实验8(王爽 第三版) 分析一个奇怪的程序

2019-04-17 21:48 134 查看

实验8 分析一个奇怪的程序

分析下面的程序,在运行前思考,这个程序可以正确返回吗?
运行后再思考:为什么是这种结果?
通过这个程序加深对相关内容的理解。

assume cs:codesg
codesg segment
mov ax, 4c00h
int 21h
start: mov ax, 0
s:     nop
nop
mov di, offset s
mov si, offset s2
mov ax, cs:[si]
mov cs:[di], ax
s0:    jmp short s
s1:    mov ax, 0
int 21h
mov ax, 0
s2:    jmp short s1
nop
codesg ends
end start

分析:
这个程序可以正确返回,注意:jmp short s1是跳转相对位移,程序在编译时确定了这个相对位移,往上跳 * 个单元,之后这句指令被复制到s起始地址后,还是往上跳 * 个单元,到达程序结束指令 mov ax, 4c00h int 21h处,正常结束程序并返回。
千万不要理解为总是跳往s1,它是位移跳转!!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: