jmp指令用法

Posted

tags:

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

无条件转移指令,
⑴ jmp标号
比如你在程序中定义一个分支程序的名字:chengxu1
在main程序中,运行到某一步需要跳转到chengxu1,则这样:
JMP chengxu1

⑵ jmp 寄存器
如果你明确知道寄存器地址,对地址操作,可以直接JMP到此,一般说来很少在程序中直接对寄存器操作。


jmp 目标地址
参考技术A jmp 地址
jmp 寄存器(将地址存入寄存器)
jmp 标号(标号实质就是一个地址,只不过是编译的时候替换成地址)
参考技术B 正负127目标地址范围内随便转移

下面程序为啥不行??jmp指令不能越段转移吗??有啥方法越段呢??

assume cs:code

code segment
start:
jmp far ptr sss
mov ax,4c00h
int 21h
code ends

code2 segment
sss:mov ax,3

code2 ends
end start

参考技术A 能越段转移
你写的不规范而以
JMP FAR PTR label 远转移(far jump)
执行操作:(IP) ← label的段内偏移地址
(CS) ← label所在段的段地址
远转移实现的是段间的跳转,即从当前代码段跳转到另一个代码段中,这意味着指令执行后,不仅要改变IP的值,CS也会得到一个新的段地址。在汇编指令中,远转移的目标地址也可以使用除立即寻址方式外的任何寻址方式来表示。
参考技术B 可以放一个段的,但是你忘了有一条伪指令:ASSUME。更改后的如下:
code segment
assume cs:code
start:
jmp far ptr sss
exit:mov ax,0200h
int 21h
mov ax,4c00h
int 21h
code ends

code2 segment
assume cs:code2
sss:mov dl,3
add dl,30h
jmp far ptr exit
code2 ends
end start
还有跳到code2执行后,没有和DOS接口的指令了,必须有jmp far ptr exit,回到code中,执行那里的和DOS接口的指令。
另外,其它增加和改变的指令只是为了让你验证用的,不改没有关系。本回答被提问者采纳
参考技术C 干吗要2个code段呢?你放一个段里不行么?2个子程序就行了呗~
另外,段间转移说的是不同的数据段之间转移吧,不是代码段
参考技术D 你要实现段间转移需要分别编2个程序,并且用LINK连接成EXE文件(COM文件不允许远程调用) 第5个回答  2008-11-25 这样写不规范吧

以上是关于jmp指令用法的主要内容,如果未能解决你的问题,请参考以下文章

汇编指令JMP是啥意思?

汇编指令JMP是啥意思?

PLC编程里的JMP指令

PLC编程里的JMP指令

下面程序为啥不行??jmp指令不能越段转移吗??有啥方法越段呢??

第九章 转移指令的原理