汇编指令的 疑惑 JMP 指令

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编指令的 疑惑 JMP 指令相关的知识,希望对你有一定的参考价值。

ORG 100H

VAR1 DB 12H

VAR2 DB VAR1 - $ +1001H

VAR3 DD VAR2

假设(DS) = 1234H , (BX) = 1000H , (SI) = 0002H

下列 指令 执行 后 , CS,IP的 值 ?

JMP DWORD PTR VAR3 - 1

这里重要的一点是:一个变量参与另一变量的表达式运算时,变量的值是其地址,而非这个变量所指存储单元的值。

ORG 100H
VAR1 DB 12H
VAR2 DB VAR1 - $ +1001H ;100H-101H+1001H=1000H
因为VAR2定义为字节变量,所以,VAR2存储单元保存的是1000H的低字节值,即00H。
VAR3 DD VAR2 ;VAR2的地址值是101H,所以,VAR3存储单元的低位字是101H;高位字存放的是当前数据段段值。假设(DS) = 1234H,VAR3存储单元的值是:01H 01H 34H 12H。

VAR3-1=102H-1=101H,DWORD PTR VAR3-1存储单元,即101H所指的双字单元的值是:00H 01H 01H 34H

JMP DWORD PTR VAR3-1执行后,就是无条件跳转到DWORD PTR VAR3-1双字存储单元所指定的地址,即:00H 01H 01H 34H。所以,JMP DWORD PTR VAR3-1执行后,CS=3401H,IP=0100H
参考技术A 无异议!

汇编指令学习(CALL,JMP,RET)

一、JMP指令

无条件跳转,直接跳转到后面跟着的参数地址

jmp 0x0046B995

二、CALL指令

函数指令,可以理解为一个函数,当走到call指令的时候,按一下回车键,就可以看到call里面的内容,即函数内容,如果里面还有calll,说明函数里面套函数。

按回车后,跳转到call后面跟着的参数地址,此时,和jmp指令功能相同

实际运行的时候,首先保存了call下面的地址,到堆栈,然后call里面的语句执行完毕后,ret会返回到call下面的地址

我们按F7进入call,堆栈保存了call下面的地址,46B984,

三、RET指令

当执行到ret命令的时候,会返回到call下面的代码处

以上是关于汇编指令的 疑惑 JMP 指令的主要内容,如果未能解决你的问题,请参考以下文章

汇编指令JMP是啥意思?

汇编指令JMP是啥意思?

求助汇编语言中JMP和BR指令

汇编指令

汇编--控制转移指令 jmp

汇编转移指令