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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了下面程序为啥不行??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 这样写不规范吧

PLC编程里的JMP指令

这个程序是直接从JMP跳到了LBL?中间的程序忽略了?

JMP是汇编语言中的无条件跳转指令。无条件跳转指令可转到内存中任何程序段。转移地址可在指令中给出,也可以在寄存器中给出,或在储存器中指出。

和调用指令类似,无条件转移指令也可有四种形式。下面是四种无条件转移指令的实例。

1、JMP 1000H

段内直接转移,转移地址的偏移量由指令给出。

2、JMP CX    

段内间接转移,转移地址的偏移量由CX指出。

3、JMP 1000H:2000H    

段间直接转移,段码和偏移量由指令给出。

4、JMP DWORD PTR [SI]    

段间间接转移转移地址在SI所指地址开始的4个单元中。

扩展资料

JMP在SAS的基础上形成了自己的算法,特别强调以统计方法的实际应用为导向,交互性、可视化能力强,使用方便,尤其适合非统计专业背景的数据分析人员使用,在同类软件中有较大的优势。

类型:

①短程转移(直接短转移)

指令格式:JMP SHORT OPRD

语法格式: JMP 地址标号 ;(IP)←(IP)+8位位移量

② 近程转移(段内直接转移)

指令格式:JMP NEAR PTR OPRD

语法格式: JMP 地址标号 ;(IP)←(IP)+16位位移量

③段间直接转移(远程转移)

指令格式:JMP FAR PTR OPRD

语法格式: JMP 地址标号 ;(IP)←新的偏移地址, ;(CS)←新的代码段地址

参考技术A

这是一条跳转指令。

跳转指令又称转移指令。在程序中使用跳转指令后,系统可以根据对不同条件选择执行不同的程序段。跳转指令由跳转指令JMP和标号指令LBL组成,JMP指令在梯形图中以线圈形式编程。

当控制条件满足时,执行跳转指令JMP n,程序转移到标号n指定的目的位置执行二该位置由标号指令LBL n确定。n的范围为0- 255。
    使用跳转指令时需注意以下问题。
    1) JMP和LBL指令必须在同一程序段中,如同一主程序、子程序或中断程序等。即不能从一个程序段跳到另一个程序段。
    2)执行跳转指令后,在JMP与LBL之间程序段中的计数器停止计数,其计数值及计数器位状态不变。
    3)执行跳转指令后,在JMP与LBL之间程序段中的输出Q、位存储器M及顺序控制继电器S的状态不变。
    4)执行跳转指令后,在JMP与LBL之间程序段中,分辨率为1 ms、10 ms的定时器保持原来的工作状态及功能;分辨率为100 ms的定时器则停止工作,当前值保持在跳转时的值不变。

参考技术B 对,只要jump的条件满足就会跳转 参考技术C

本回答被提问者采纳

以上是关于下面程序为啥不行??jmp指令不能越段转移吗??有啥方法越段呢??的主要内容,如果未能解决你的问题,请参考以下文章

汇编语言流程转移与子程序篇--05

jmp指令用法

汇编指令JMP是啥意思?

汇编指令JMP是啥意思?

汇编指令JMP是啥意思?

JMP指令包括啥