汇编语言(王爽)》(第九章、实验8分析一个奇怪的程序)学习笔记

本文通过一个具体的汇编语言示例,解析了转移指令的工作原理。重点介绍了如何通过修改内存中的指令来实现特定的跳转行为,并解释了这种技术在程序控制流程中的应用。

<加深转移指令原理的理解>

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

程序可以正确返回;第10到13行是将s2标号的机器码(如EBF6,F6:十进制表示-10)复制到s标号的两个字节中;

当转到s:处时,机器指令为EBF6(补码表示),当执行机器指令时,ip=0010h,则转移的标号地址为F6H+10H=0,即

翻译出的汇编指令为:jmp short 0000h;执行mov ax,4c00h,int 21h;程序即可正确返回;

评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值