源程序:
assume cs:code
code segment
start: mov ax, 0
mov bx, 0
jmp short s ;(1)
;jmp near ptr s ;(2)
;jmp far ptr s ;(3)
add ax, 2
;db 16 dup (0)
s: add ax, 1
inc ax
code ends
end start
调试工具tr
*** (1) *******************************************
AX=0000 BX=0000 CX=0000 DX=255B SP=0000 BP=0000 SI=0100 DI=0000
DS=255B ES=255B SS=256B CS=256B IP=0000 o d I S z a p c t
255B:0000 CD 20 FF 9F 00 9A F0 FE-1D F0 0B 82 8E 05 4B 01 ═ ƒ.Ü≡■.≡.éÄ.K.
255B:0010 23 04 56 01 23 04 23 04-01 01 01 00 02 FF FF FF #.V.#.#......
256B:0000 B80000 MOV AX,0000
256B:0003 BB0000 MOV BX,0000
256B:0006 EB03 JMP 000B ;jmp short s(8bit)
256B:0008 83C002 ADD AX,02
256B:000B 83C001 ADD AX,01
256B:000E 40 INC AX
*** (2) *******************************************
AX=0000 BX=0000 CX=0000 DX=255B SP=0000 BP=0000 SI=0100 DI=0000
DS=255B ES=255B SS=256B CS=256B IP=0000 o d I S z a p c t
255B:0000 CD 20 FF 9F 00 9A F0 FE-1D F0 0B 82 8E 05 4B 01 ═ ƒ.Ü≡■.≡.éÄ.K.
255B:0010 23 04 56 01 23 04 23 04-01 01 01 00 02 FF FF FF #.V.#.#......
256B:0000 B80000 MOV AX,0000
256B:0003 BB0000 MOV BX,0000
256B:0006 E90300 JMP 000C ;jmp near ptr s(16bit)
256B:0009 83C002 ADD AX,02
256B:000C 83C001 ADD AX,01
256B:000F 40 INC AX
*** (3) *******************************************
AX=0000 BX=0000 CX=0000 DX=255B SP=0000 BP=0000 SI=0100 DI=0000
DS=255B ES=255B SS=256B CS=256B IP=0000 o d I S z a p c t
255B:0000 CD 20 FF 9F 00 9A F0 FE-1D F0 0B 82 8E 05 4B 01 ═ ƒ.Ü≡■.≡.éÄ.K.
255B:0010 23 04 56 01 23 04 23 04-01 01 01 00 02 FF FF FF #.V.#.#......
256B:0000 B80000 MOV AX,0000
256B:0003 BB0000 MOV BX,0000
256B:0006 EA0E006B25 JMP FAR 256B:000E ;jmp far ptr s(32bit)
256B:000B 83C002 ADD AX,02
256B:000E 83C001 ADD AX,01
256B:0011 40 INC AX
************************************************
指令"jmp short 标号"的功能为:(ip)=(ip)+8位位移
指令"jmp near ptr 标号"的功能为:(ip)=(ip)+16位位移
指令"jmp far ptr 标号"的功能为:实现的是段间转移
功能:(CS)=标号所在段的段地址;(ip)=标号所在段的偏移地址
机器指令跳转时表示的位移长度有差异
阅读(1402) | 评论(0) | 转发(0) |