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

实验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,它是位移跳转!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值