汇编 8086寻址方式

汇编 8086寻址方式汇编语言中 8086固定寻址方式 寄存器寻址方式 立即寻址方式 数据寻址方式所确定的有效地址分别是什么?

1. 立即寻址
立即寻址方式用来表示常数,它主要用于给寄存器赋初值,注意:只能用于源操作数字段,不能用于目的操作数字段。
例1 MOV AL,5

2.直接寻址
在IBM PC机中将操作数的偏移地址称为有效地址EA。在直接寻址方式中有效地址EA就在指令中,它存放在代码段中指令操作码之后,但操作数一般存放在数据段中,所以必须先求出操作数的物理地址,然后再访问存储器才能取得操作数.

如操作数在数据段中,则物理地址=16d×(DS)十EA。1BMPC机中允许数据存放在数据段以外的其他段中,此时应在指令中指定段跨越前缀,在计算物理地址时应使用指定的段寄存器。
例4 mov AX , [2000H]
(DS)=3000H,地址32000H中的值为 3050H则,执行结果为;(Ax)=3050H
因为实际mov AX中的内容为 16d * (Ds) +2000H = 32000H

在汇编语言指令中,可以用符号地址代替数值地址,如:
MOV AX,VALUE
此时VAIUE为存放操作数单元的符号地址。如写成
MOV AX,[VALUE]
也是可以的.两者是等效的。如果VALUE在附加段中,则应该指定段跨越前缀如下;
MOV AX, ES:VALUE
或 MOV AX, ES:[VALUE]
直接寻址方式适用于处理单个变量,例如需要处理某个存放在存储器里的变量,可用直接寻址方式,将该变量先取到一个寄存器中,然后在做处理。
IBM PC机规定:除在双操作数中,除立即数外,必须有一个操作数使用寄存器方式。这也是一个常量常常送到寄存器去的原因。

3.寄存器间接址
操作数的有效地址在基址寄存器BX、BP或变垃寄存器SI、DI中,而操作数则在存储器中,如下图所示。

a.如果指令中指定的寄存器是BX、SI、DI,则操作数在数据段(DS)中,所以用DS寄存器的内容作为段地址,即操作数的物理地址为:
物理地址=16d×(DS)十(BX)
或 物理地址;16 d×(DS)十(SI)
或 物理地址=16d×(DS)十(DI)
b.如指令中指定SP寄存器,则操作数在堆栈段(SS)中,段地址在SS中,所以操作数的物理地址为:
物理地址=16d×(SS)十(SP)
MOV AX ,[BX]
如果 (DS)=2000H , (BX)=1000H 则
物理地址=16d×(DS)十(BX) = 20000H+1000H = 21000H
21000H地址里的内容为 50A0H则 执行结果为:(AX)=50A0H
c.指令中也可指定段跨越前缀来取得其他段中的数据。如;
MOV AX,ES:[BX]
这种寻址方式可以用于表格处理,执行完一条指令后,只需要修改寄存器内容就可取出表格中的下一项。

4.寄存器相对寻址方式
操作数的有效地址是一个基址或变址寄存器的内容和指令中指定的8位或16位位移量之和。即
| (BX)
EA =   | (BP) + 8位或者16位的位移量
| (SI)
| (DI)

同寄存器寻址一样 BX BP DI 若没有段跨越前缀 物理地址为=16d×(DS) +位移量 + *
SP 物理地址为=16d×(SS)十(SP) + 位移量 + *

举个例子:
MOV AX,COUNT[SI] (也可表示为MOv AX,[COUKT十SI]
其中,COUNT 为16位位移量的符号地址。
如果(DS)=3000H,(SI)=2000H COUNT=3000H
则物理地址 = 30000十2000十3000 =35000H
温馨提示:内容为网友见解,仅供参考
无其他回答

8086汇编语言指令的寻址方式有哪几类
立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、相对寻址、变址寻址。.寻址方式举例如下:MOV AX, 20B5H ;立即寻址,立即数20B5送入AX MOV AX,[0100H] ;直接寻址,内存偏移首址为0100H的双字节数据送AX MOV AX,BX ;寄存器寻址,BX内容送入AX MOV AX,[BX] ;寄存器间接寻址,以B...

8086汇编语言指令的寻址方式有哪几类?用哪一种寻址方式的指令执行速度...
基址加变址寻址 立即数寻址执行速度最快,因为此种寻址方式,取指令时操作数也一起取出,不需要再次取操作数,所以执行速度最快。

关于汇编语言存储器的分段 一小段的首地址是啥?段起始地址?怎么看出 ...
8086CPU的内存寻址方式是段地址*16+偏移地址的方式的方式 比如说00000H这个地址,他的段地址是0000H偏移地址是0000H。段地址0000h*16(10H)也就是00000H 加上偏移地址也是0000H就是00000H。一个段的空间最大是64KB 也就是偏移地址从0000H-FFFFH。有一点要注意:段地址*16必然是16的整数倍所以一个...

关于8086汇编的寻址方式一题:MOV [1200],23H 请指出该指令的正误_百度...
要显式地给出段地址,如ds:[xxxxh ]才行,否则编译时会被处理成一个立即数xxxxh。[ ]里是什么进制这个无所谓的比如写10和写0aH效果一样,都可以。你同学是对的。因为不知道这个内存地址有多长。或者像上楼所说。用mov byte ptr ds:[xxxxh], 23h这样,或mov word ptr ds:[xxxxh], 23h。

汇编8086寻址基础问题
存储区可以分为数据段、附加段、堆栈段和代码段,其中前三种都可以用来存储数据,最后一种存储指令的代码。在直接寻址方式中,你没有写段超越前缀的话,默认是数据段,所以数据的物理地址是32000H,同时由于8086存储是以字节为单位的,所以低地址存放低字节,高地址存放高字节,所以组合成一个字就是1234...

8086寻址方式
如果你的题目有配图,那么显然要以配图和上文的题设来确定。计算物理地址的方式在解答中已经说得很清楚了,PA = DS * 16d (10h) + SI = 12000h,在地址12000处存放的字类型数据是318bh,因为mov BX, [SI]采用的是间接寻址方式,[SI]也就是318bh,显然BX也为318bh。

关于8086寻址方式
寻址方式 是指在指令中用以说明操作数所在地址(位置)的方法。段超越 不是按照系统的约定,而是在指令中指定某一段寄存器作为存储器操作数的段地址。[注]8086\/8086指令系统对存储单元的访问,其段地址都是从系统事先约定好的段寄存器中获取,若不遵循系统的约定,则要制定段寄存器,即段超越。2. 与...

8086寻址方式与Pentium寻址方式的异同
8086寻址方式:首先内存和寄存器都是可以存放数据的 而寄存器是就那么几个,不可能把所有数据都放在寄存器里 寄存器里面是有值的,如果直接丢给CPU运算,就是寄存器寻址。如果把寄存器里面的数当作地址编号,跟据编号在内存里找到另一个数,就是存储器寻址。CS,DS,ES,SS是CPU的寄存器 MOV AX,DS 都是...

C语言程序设计实验中汇编程序使用的寻址方式有?
c 直接寻址方式:操作数的有效地址(在8086里把操作数的偏移地址叫做有效地址)只包含位移量一种成分,其值就存放在代码段中指令的操作码之后,位移量的指即操作数的有效地址。适用于处理单个变量。d 寄存器间接寻址方式:操作数的有效地址只包含基址寄存器内容或变址寄存器内容一种成分,因此有效地址就在...

汇编中ip是什么东东啊?有什么具体的意义?
用来存放当前程序代码段的地址。这里涉及到8086处理器的寻址方式,即 段:偏移量 寻址方式。一条指令(数据)再内存中的物理地址等于对应的段值×16再加上偏移量。这样作的原因是为了扩大16为地址线的寻址空间。16根地址线只能直接寻址2的16次方个字节。用段加偏移量的方式可以寻址1M字节。

相似回答