汇编语言(王爽第三版)实验八

本文分析了一个特定的汇编语言程序,探讨了其能否正确返回的问题,并解释了背后的原理。通过运行程序并观察复制的机器码结果,明确了JMP指令的目的地址,证实程序能够正确返回。

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

实验八

题目与个人思路

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

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 转移的目的地址才不同。
F6是补码=-AH,22H-AH=18H
在这里插入图片描述
F6是补码=-AH,AH-AH=0H
在这里插入图片描述
所以它是转移到0000处,即可以正确返回。
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值