8086 CPU 寻址方式

8086 CPU 寻址方式灵活。有以下几种

idata 表示常量

1.   [ idata ] 用一个常量来表示地址,可用于直接定位内存单元,但是在 MASM中要显实在的说明 ds 段寄存器, 比如 mov ax, ds:[0]  ,表示把 ds 寄存器中所在段的地址+偏移地址 0 的内存单元中的值赋给ax  , 不能用

mov  ax, [0] ,这样在masm 中会当作mov ax, 0,   在windows的 debug 和 nasm 中可以用 mov ax, [..] 的方式定位内存,段地址默认放在 ds 中。

2.   [bx]  用一个变量来表示内存地址,可用于间接定位一个内存单元。 比如 mov ax, [bx] ,段地址默认放在ds 中

3.  [bx+idata]  用一个变量加常量表示内存地址,可在一个其实地址的基础上用变量间接定位一个内存单元

比如:

mov  ax, [bx+idata]

mov ax, [idata+bx]

mov ax, idata[bx]

都是等价的,相当于高级语言中的数组表示方法。

4.   [bx+si] 用两个变量表示地址。

5.   [bx+di] 等价于 [bx+si].

6.   [bx+si+idata]  用两个变量和一个常量表示地址。

7    [bx+di+idata] 等价于 [bx+si+idata].

关于 bx,si,di,bp

在 8086 CPU 中,只有这四个寄存器可以用在 [...] 中进行内存单元的寻址,比如

mov  ax, [bx]

mov ax,  [bx+si]

mov ax, [bx+di]

mov  ax,[ bp]

mov ax, [bp+si]

mov ax, [bp+di]

在[..]中,bx,di,si,bp,可以单个出现,但是只能以四种组合方式出现

bx和si,  bx和di,  bp和si, bp和di

比如

mov  ax,[bx+bp]

mov  ax,[si+di]

这两条指令是错误的。

只要在[...]中使用寄存器bp, 而指令中没有显实的给出段地址,段地址默认在 ss 中

mov ax, [bp]         段地址在 ss中

mov ax,[bp+idata]      段地址在 ss中

mov ax,[bp+si]           段地址在 ss中

mov ax, [bp+si+idata]      段地址在 ss中

也可以显实的指定段寄存器

mov ax, ds:[bp]

mov ax, es:[bx]

mov ax, ss:[bx]

mov ax ,cs:[bx+si]

-------------------------------------------------------------------------------------------------

寻址方式总结

寻址方式                                                                              名称

[idata]                                                                                直接寻址

[bx]                                                                                      寄存器间接寻址

[si]                                                                                       寄存器间接寻址

[di]                                                                                       寄存器间接寻址

[bp]                                                                                      寄存器间接寻址

[bx+idata]                                                                            寄存器相对寻址
                [ si+idata]                                                                            寄存器相对寻址

[di +idata]                                                                           寄存器相对寻址

[bp+ idata]                                                                           寄存器相对寻址

[bx+si]                                                                                 基址变址寻址

[bx+di]                                                                                 基址变址寻址

[bp+si]                                                                                 基址变址寻址

[bp+di]                                                                                 基址变址寻址

[bx+si+idata]                                                                        相对基址变址寻址

[bx+di+idata]                                                                        相对基址变址寻址

[bp +si +idata]                                                                      相对基址变址寻址

[bp+di+idata]                                                                        相对基址变址寻址

http://blog.csdn.net/daiyutage/article/details/9141251

时间: 2024-10-19 16:31:45

8086 CPU 寻址方式的相关文章

Intel X86 CPU寻址方式

X86系列是指Intel从16位微处理器8086开始的整个CPU芯片系列,系列中的每种型号都保持与以前的各种型号的兼容.在x86系列中,8086和8088是16位处理器,从80386开始为32位处理器,80286则是该系列从8088到80386,是从16位到32位过渡的过程.80286虽然是16位处理器,但是在寻址方式上开始从"实地址模式"到"保护模式"的过渡.一个CPU是16位或32位时,指的是处理器中算术逻辑单元ALU的宽度.系统总线中的数据线部分,称为数据总线

8086 cpu为什么要把段地址*16+偏移量形成物理地址呢?

这是因为,8086地址线是20位,段寄存器是16位,将段寄存器*16实际上就是向左移动4位,形成20位和8086的二十位地址线匹配. IP(Instruction Pointer):指令指针寄存器,与CS配合使用,可跟踪程序的执行过程:      SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置.      BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置:      SI(Source Index):源变址寄存器可用来存放相对于D

8086——CPU的功能结构

***************************************** ******************************************************************************************************************************************

8086 七种寻址方式

8086/8088 CPU寻址方式 <1> 立即寻址 操作数在指令中,紧跟在操作码之后,这样的操作数成为立即数,可以是8bit或者16bit. 例如: MOV AL,12H MOV AX,1234H <2> 直接寻址 操作数的地址中的偏移量直接跟在操作码之后,默认情况下基址存放在DS中,这个时候不需要加前缀,如果是加了别的前缀,如ES,则表示基址在ES中. 例如: movax,[4000h] movax,value   (如果我们在前面定义了"符号地址"valu

【OS】实模式和保护模式区别及寻址方式

实模式和保护模式区别及寻址方式 转载请注明出处:http://blog.csdn.NET/rosetta 64KB-4GB-64TB? 我记得大学的汇编课程.组成原理课里老师讲过实模式和保护模式的区别,在很多书本上也有谈及,无奈本人理解和感悟能力实在太差,在很长一段时间里都没真正的明白它们的内含,更别说为什么实模式下最大寻址空间为1MB?段的最大长度不超过64KB?而保护模式下为啥最大寻址能力就变成了64TB?每个段最大也达4GB? 更甚者分段和分页这两个高深的概念像我这种菜鸟怎么也理解不了啊!

汇编语言--寄存器(cpu工作原理)

本文地址:http://www.cnblogs.com/archimedes/p/assembly-register.html,转载请注明源地址. 本文主要将介绍的是8086 CPU中的寄存器, 寄存器就是个存储信息的单元或者说是器件又或者说是容器而已,就比如内存也是一个存储介质或者说是存储单元而已,其实寄存器从理解上来说和内存差不多, 只不过寄存器(这里讨论的寄存器都是 CPU 中的寄存器,不包括外设上的寄存器)位于CPU内部,寄存器是 CPU 中的稀有资源,而对于一个汇编程序员来说,CPU

8086寄存器详解

8086寄存器详解              因为现在的PC机处理器,都是向下一直兼容到8086,编语言是针对微处理器(即CPU)的,如INTEL8088/8086,8051/8031,Z80等...,我们不可能掌握所有的汇编,无必要也不可能,所以我们选择8086来学习汇编语言.         而对于一个汇编程序员来说,CPU 中主要可以使用的也就是寄存器而已,汇编程序员可以使用指令来读写 CPU 中的寄存器,从而可以实现对于 CPU 的控制,当然,不同的 CPU ,寄存器的个数和结构都是不一

CPU 寄存器

CPU 寄存器 寄存器是中央处理器内的组成部分,是有限存贮容量的高速存贮部件,它们可用来暂存指令.数据和地址.在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC). 寄存器是集成电路中非常重要的一种存储单元,通常由D触发器组成.在集成电路设计中,寄存器可分为电路内部使用的寄存器和充当内外部接口的寄存器这两类.内部寄存器不能被外部电路或软件访问,只是为内部电路的实现存储功能或满足电路的时序要求.而接口寄存器可以同时被内部电路和外部电路或软件访问,CPU中的寄存器就是其中一

关于CPU位数,OS位数以及内存大小关系的一点总结

(这个学期做助教,说来好惭愧啊,虽然我也是考研进来的,但是就在两年前复习的资料居然全部都忘光了.对大二的孩子们提问的问题多半都解决不了!!!越来越觉得自己的学习方法有问题了,总是想着一些知识能够根据自己多看几遍印象就深刻了,或者说每次记忆知识时总是想下次再记在脑海里吧!这样导致很多东西必须看资料才能想起来:啊原来是这样的,我看过啊,我知道的啊!这样的陋习一定要赶紧改正了,每次学习一个新的知识,都要记在脑海里,深刻地理解一下!!!) 1. CPU位数:一个时钟周期内处理器处理的二进制位数. CPU