保护模式、实地址模式及V8086模式下的指令格式(下)
来源:互联网 发布:qt5编程入门 pdf 编辑:程序博客网 时间:2024/05/19 17:22
保护模式、实地址模式及V8086模式下的指令格式(下)
本文转自:http://blog.csdn.net/misterliwei/article/details/5550467
学习汇编语言时,我们都是从寻址方式开始的。所谓寻址方式就是指令中操作数是如何指定的。在16位时,寻址方式有:
1.立即数寻址
操作数直接存放在指令中,紧跟在操作码之后。
2.寄存器寻址
操作数在寄存器中,指令指定寄存器号。
3.存储器寻址,存储器寻址方式是说操作数存放在内存之中,指定这些内存的有效地址(effective address)有下面这几种方法。
3.1 直接寻址
直接寻址时,操作数的有效地址紧跟操作码之后。比如:MOV AX, [0X1000]
3.2 寄存器间接寻址
操作数的有效地址存放在基址寄存器BX和BP、或者变址寄存器SI和DI中。
EA = 16 * DS + SI
或EA = 16 * DS + DI
或EA = 16 * DS + BX
或EA= 16 * SS + BP (注意:BP的缺省段寄存器为SS,其他都为DS)
3.3 寄存器相对寻址
操作数的有效地址是一个基址或变址寄存器的内容和指令中指定的8位或16为偏移量的和。注意这个偏移量是带符号的,即可正可负。
EA = 16 * DS + SI + DISP8/16
或 EA = 16 * DS + DI + DISP8/16
或 EA = 16 * DS + BX + DISP8/16
或 EA = 16 * SS + BP + DISP8/16
3.4 基址变址寻址
操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和。
EA = 16 * DS + BX + SI或 DI
或 EA = 16 * SS + BP + SI或 DI
3.5 相对基址变址寻址
操作数的有效地址是一个基址寄存器和一个变址寄存器的内容和8位或16位偏移量之和。同上面一样,这个偏移量是带符号的,即可正可负。
EA = 16 * DS + BX + SI(或 DI) + DISP8/16
或 EA = 16 * SS + BP + SI(或 DI) + DISP8/16
上面的这些寻址方式,我将它在表2-1中表示了出来,见表2-1a。当初学习寻址方式时总是一头雾水,现在将它和I32的指令码格式联系在一起总算明白了。:)
上图中我们还发现一个问题:寄存器间接寻址中可以使用SI、DI、BX、BP这四个寄存器。但是我们看到Mod=00时只能表示SI、DI、BX三个寄存器,那么BP是如何表示的呢?原来它是通过在MOD=01和10时,设置disp8和disp16偏移值来实现的。所以在编译下面两条指令时可能差别很大的。
指令 编码
Mov ax, [bx] 8B 07
Mov ax, [bp] 8B 46 00
32位寻址方式和16位上述的寻址方式基本一致见表2-2a。
和16位寻址方式的几个区别:
a.32位的寄存器间接寻址可以使用除ESP外的所有通用寄存器,而不是16位时的四个寄存器(SI、DI、BX、BP)。
b.32位的寄存器相对寻址、基址变址寻址、相对基址变址寻址都可以使用除ESP外的所有的通用寄存器。
c.由于32位寻址方式添加了一位SIB字节(见表2-3),所以在基址变址寻址和相对基址变址方式时,可以使用一个新的特性:比例。一共有1、2、4、8四种比例方式。
参考文献:
1.《IBM-PC汇编语言程序设计》,沈美明,温冬蝉编著,清华大学出版社
- 保护模式、实地址模式及V8086模式下的指令格式(下)
- 保护模式、实地址模式及V8086模式下的指令格式(下)
- 保护模式、实地址模式及V8086模式下的指令格式(上)
- 保护模式、实地址模式及V8086模式下的指令格式(上)
- 实地址模式与保护模式下的中断与异常处理
- 关于实地址模式和保护模式
- 实地址模式与保护模式
- 实模式、保护模式、V8086模式
- 实地址模式和保护模式的理解
- 实模式及保护模式下的地址转换
- 只能在保护模式下执行的指令
- 保护模式下的寻址
- 保护模式下的应用
- 保护模式下的应用
- 实地址模式(Real-address Mode)下,可以操控的资源有哪些(即其执行环境)?
- 保护模式下的RPL(一)
- 保护模式下寻址
- 保护模式下寻址
- mysql 创建 用户 并赋权 远程登陆
- 保护模式、实地址模式及V8086模式下的指令格式(上)
- SVM入门(五)线性分类器的求解——问题的描述Part2
- VC MFC 子窗口内部和外部的控件焦点用Tab键区切换
- HDU2040 亲和数
- 保护模式、实地址模式及V8086模式下的指令格式(下)
- 浅谈Http中GET和POST的区别
- 怎样让小球沿着一条曲线运动-类似于祖玛游戏中的小球的运动
- eclipse svn的分支与合并指南
- myBatis sql配置高级用法
- Android学习笔记 - listview与adapter和Dialog
- UVA10815 Andy's First Dictionary
- 《京东技术揭秘》读书笔记
- Linux Kernel Makefiles