汇编语言实验八

本文通过分析一个包含jmp指令的程序,探讨了 jmp 指令在程序中的作用,特别是它如何处理转移距离而不是直接包含目的地址。实验结果显示程序无法正确返回,原因是 jmpshort sjmp 的跳转导致无限循环。通过对这一知识点的深入理解,有助于提升对汇编语言中转移指令的掌握。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分析一个奇怪的程序

一、 实验目的

分析代码,加深对jmp的相关内容的理解。

二、实验内容或主要代码

分析下面的程序,在运行前思考:这个程序可以正确返回吗?
运行后再思考:为什么是这种结果?
通过这个程序加深对相关内容的理解。
assume cs:codesg
codesg segment
mov ax,4c00h 3字节
int 21h 2字节
start:mov ax,0 3字节

s:nop 运行时在代码段中分配一个字节的空间
nop
mov di,offset s 将s的偏移地址存到di寄存器中
mov si,offset s2 将s2的偏移地址存到si寄存器中
mov ax,cs:[si] 将cs:[si]内存中的机器码存到ax寄存器中
mov cs:[di],ax 将ax寄存器中的机器码放到cs:[di]中

s0:jmp short s jmp到 0008

s1:mov ax,0
int 21h
mov ax,0

s2:jmp short s1
nop

codesg ends
end start

三、 实验结果或截图

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

四、实验分析或体会

此次实验重在对jmp指令的理解与掌握,jmp指令要给出两种信息,(1)转移的目的地址,(2)转移的距离(段间转移,段内短转移、段内近转移)。但是,虽然jmp指令含有目的地址,但其机器码中并不包含转移的目的地址,而是包含要转移的位移!通过理解这个知识点,可以更好的完成实验。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值