本文目录一览:
- 1、jmp far ptr和 jmp word ptr的区别
- 2、汇编指令jmp word ptr 详细讲解下怎么用?最好带个例子~~
- 3、jmp word ptr 【bx】 和 jmp bx的区别是什么呢
- 4、JMP指令包括什么
jmp far ptr和 jmp word ptr的区别
指令“jmp far ptr 标号”实现的是段间转移,又称为远转移
指令“jmp far ptr 标号” 功能如下:
(CS)=标号所在段的段地址;
(IP)=标号所在段中的偏移地址。
far ptr指明了指令用标号的段地址和偏移地址修改CS和IP。
指令“JMP DWORD PTR XXXX”实现的是段间间接寻址
由xxxx的寻址方式求得偏移地址(假如是adress后),【adress】和【adress+2】分别就是转移目的地址得偏移地址和段地址
汇编指令jmp word ptr 详细讲解下怎么用?最好带个例子~~
跳到指定的地址~ word ptr是限定符,标识后面地址的长度是word,jmp没什么好解释就是跳转,只是要理解,jmp是相对跳转后面跟的地址是偏移,而非绝对地址
jmp word ptr 【bx】 和 jmp bx的区别是什么呢
jmp word ptr [bx]
是以BX这个寄存器内容开始的内存单元为JMP的IP
即:IP=DS:BX
例:
mov ax,20h
mov ds,ax
sub bx,bx
jmp word ptr [bx]
到了JMP,就会跳到程序的开始执行,就是把IP设置为0。
因为DS=20,BX=0,而20:0里面的内容是0,所以IP为0。
而JMP BX
则是把寄存器BX的内容设置为IP。
即:IP=BX
例子:
mov bx,0
jmp bx
执行后,IP=0,很好理解吧?
JMP指令包括什么
jmp指令用法总结: 1.直接用法(只能在Debug下使用的汇编指令):
jmp 段地址:偏移地址
功能:修改CS、IP的内容
例子:jmp 55BA:8
执行后:(CS)=55EAH, (IP)=0008H 2.根据标号进行转移的用法:
(1).转移的目的地址不在指令中,依据位移进行转移(段内转移)
a.jmp short 标号(IP的修改范围为-128至127)
功能:(IP)=(IP)+8位位移 b.jmp near ptr 标号(IP的修改范围为-32768至32767)
功能:(IP)=(IP)+16位位移注:依据位移进行的转移是段内转移,位移=标号处的地址-jmp指令后的第一个字节的地址。(2).转移的目的地址在指令中(段间转移)
jmp far ptr 标号
功能:用标号的段地址和偏移地址修改CS和IP
(CS)=标号所在段的段地址;(IP)=标号所在段的偏移地址
例子:略
3.转移地址在寄存器中的用法:
jmp 某一合法寄存器
功能:用寄存器中的值修改IP
例子:jmp ax
执行后:(IP)=(ax)
注意:合法寄存器是指通用寄存器。一个有趣的现象:jmp ip在debug下调试也是
错误的。字面上理解:(IP)=(IP),但CPU并不支持4.转移地址在内存中的用法:
(1).jmp word ptr 内存单元地址(段内转移)
功能:从内存单元地址出开始存放着一个字,是转移的目的偏移地址
例子:mov ax,0123H
mov [bx],ax
jmp word ptr [bx]
执行后:(IP)=0123H(2).jmp dword ptr 内存单元地址(段间转移)
功能:从内存单元地址处开始存放着两个字,高地址处的字是转移的目的段地址,低地址处是转移的目的偏移地址
例子:mov ax,0123H
mov [bx],ax
mov word ptr [bx+2],0
jmp dword ptr [bx]
执行后:(CS)=0, (IP)=0123H