在宏汇编里JMP或CALL指令后如何使用立即数作转移地址.
在DEBUG中JMP FFFF:0或JMP FE00H(JMP FE00H指令的地址与FE00H相距超过去100H)在宏汇编中怎么写,JMP指令如何跳到一表达式运算后的地址,如JMP OFFSET LOOP1+600H.我是先将转移后的地址送到一个寄存器后,再跳.如:
MOV AX,F000+OFFSET B-OFFSET A
JMP AX (跳到F000)
直接跳怎么写.
问题点数:30、回复次数:8Top
1 楼snowingedge(下雪边界)回复于 2001-11-14 18:47:32 得分 0
直接插入mechine code,我记得有一个near属性的绝对跳转的.mechine code我忘了.:(Top
2 楼CNer(Leemaasn)回复于 2001-11-14 21:53:52 得分 15
我记得jmp指令有两种形式!
一个是相对的,一个是绝对的!
绝对的经常用于引导程序!
你可以查查boot代码!
好像是ea9,我看看。。。。Top
3 楼CNer(Leemaasn)回复于 2001-11-14 22:08:56 得分 0
呀,找不到了。。。
改天吧
等等别人的说法吧Top
4 楼CodeDemon(CWL)回复于 2001-11-15 22:19:05 得分 0
db e9h
dd xxxxh
dd xxxxh
Top
5 楼CNer(Leemaasn)回复于 2001-11-15 23:41:58 得分 0
CodeDemon(CWL) ,好样的!!Top
6 楼totkid(皮耶德)回复于 2001-11-15 23:54:37 得分 0
对,这种形式也用于realmode与保护模式的互相切换Top
7 楼vBin(彬)回复于 2001-11-16 13:35:30 得分 15
下面是我在DOS编写程序时,所要用到的宏。
我想这些足够说明你的问题啦。
(好不容易打出来的,没想到TASM中带有这个文件,唉!)
;-----------------------------------------
;32位偏移的段间转移宏指令
JUMP32 MACRO selector,offsetv
DB 0EAH ;操作码
DW offsetv ;32位偏移
DW 0 ;0
DW selector ;选择子
ENDM
;-----------------------------------------
;32位偏移的段间调用宏指令
CALL32 MACRO selector,offsetv
DB 09AH ;操作码
DW offsetv ;32位偏移
DW 0
DW selector ;选择子
ENDM
;-----------------------------------------
;16位偏移的段间转移宏指令
JUMP16 MACRO selector,offsetv
DB 0EAH ;操作码
DW offsetv ;16位偏移
DW selector ;段值/选择子
ENDM
;-----------------------------------------
;16位偏移的段间调用宏指令
CALL16 MACRO selector,offsetv
DB 9AH ;操作码
DW offsetv ;16位偏移
DW selector ;段值/选择子
ENDMTop
8 楼pj19811024(彭骏)回复于 2001-12-31 17:04:33 得分 0
I know
Top




