复习-第九章 第9章转移指令的原理

什么是转移指令?

在这里插入图片描述

9.1操作符offset

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

9.2jmp指令

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

9.3依据位移进行转移的jmp指令

在这里插入图片描述

原理

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

jmp short jmp near ptr

在这里插入图片描述

9.4转移的目的地址在指令中的jmp指令

jmp far ptr 标号

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

9.5转移地址在寄存器中的jmp指令

在这里插入图片描述

比如jmp ax 只改变ip值。

9.6转移地址在内存中的jmp指令

(1)jmp word ptr内存单元地址(段内转移)

在这里插入图片描述

(2)jmp dword ptr内存单元地址(段间转移)

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

检测点9.1

1

在这里插入图片描述
db 0,0,0
db 3 dup(0)
在这里插入图片描述
在这里插入图片描述

2

在这里插入图片描述
在这里插入图片描述
jmp dword的功能:从内存单元处存放着两个字,
高地址处的字是目标转移【段地址】,
低地址是偏移地址。

3

在这里插入图片描述

经上机调试得出:CS=0006H,IP=00BEH
在这里插入图片描述
在这里插入图片描述

9.7jcxz指令

在这里插入图片描述

检测点9.2

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

cxz指令是条件转移指令,当cx=0的时候,转移。
现在段地址已经在2000H处,
现在只需要改变BX,
实现从20000开始,
寻找值为0的字节。

现在的思路就是,
把值放进cx,
然后用jcx判断值是否为0

assume cs:code
code segment 
start: mov ax,2000H
mov ds,ax//ds=2000h
mov bx,0//bx=0h

s:
mov cl,[bx]		//cl=ds:[bx]=2000h:[0]
mov ch,0		//ch=0,cx=00(2000h:[0])
jcxz ok
inc bx			//bx=1

jmp short s		
ok:mov dx,bx	//bx从0开始递增,找到第一个为0的字节,bx正好是偏移地址。

mov ax,4c00h
int 21h
code ends
end start

答案博客

https://blog.csdn.net/syh666233/article/details/82284090?utm_source=blogxgwz4

9.8loop指令

在这里插入图片描述

检测点9.3

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


assume cs:code
code segment 
start:
		mov ax,2000H	
        mov ds,ax	
        mov bx,0	
s:     
		mov cl,[bx]		//cl=2000h:0
        mov ch,0		//ch=0,cx=00(2000h:0) 
		inc cx			//cx++
		inc bx 			//bx++,bx=1
       loop s
ok:  dec bx
       mov dx,bx
       mov ax,4c00h
       int 21h
code ends 
end start

解析:
当我们没找到这个值为0的数时,
cx是一个大于0的数,
所以这个loop可以执行,
当值为0的时候,循环无法继续
所以横线上,我们需要填,inc cx

9.9根据位移进行转移的意义

在这里插入图片描述

9.10编译器对转移位移超界的检测

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

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

可以返回。

实验9根据材料编程

不做。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值