您的位置:首页 > 其它

8086的七种寻址方式(临时整理1)

2013-10-17 19:43 204 查看
1.立即寻址
(1) 操作数直接存放在指令中,作为指令的一部分放在代码中.
(2) 立即数可以是8位或16位的. 按照高高低低的方式保存.
(3) 只能用于源操作数, 不能用于目的操作数.

比如: mov ax,1234h
mov al,56h

2.寄存器寻址
(1) 操作数在指定的寄存器中, 指令中指定寄存器号.
(2) 对于16位寄存器,可以使用所有通用寄存器,以及段寄存器.
(3) 对于8位寄存器, 可以使用AH,AL, ...

3.直接寻址
(1) 在指令中直接给出位移量, 存放在代码段中指令操作码之后.
(2) 有效地址根据 16D*段寄存器+EA得到
(3) 汇编语言中可以用变量代表数值地址, 以下两种形式等效:
mov ah,var
mov ah,[var]
(4) 段寄存器默认为DS, 可以指定段超越前缀(CS,SS,ES)

4.寄存器间接寻址
(1) 操作数的有效地址EA在基址寄存器(BX/BP)或变址寄存器(SI/DI)中,而操作数在内存中
(2) 若选用BX/SI/DI寄存器间址,则操作数一般在数据段中,用DS提供段基址
(3) 若选用BP寄存器提供间址,则操作数一般在堆栈段中,用SS提供段基址
(4) 用SI/DI/BX/BP作间址时允许段超越前缀(ES,SS,CS,DS)

5.寄存器相对地址
(1) 操作数的有效地址是一个基址或变址寄存器的内容和指定的8位或16位位移量之和
(2) 若选用BX/SI/DI寄存器提供基地址或变地址,则操作数一般在数据段区域中,用DS提供段基址
物理地址 PA = 16*DS+EA = 16*DS+位移量+(BX/SI/DI)
例如: MOV AX,VAR[DI], 等价于 MOV AX,[VAR+DI]
(3) 若选用BP提供基地址,则操作数默认在堆栈段中,用SS提供段基址
物理地址 PA = 16*SS+EA = 16*SS+位移量+BP
(4) 允许使用段超越前缀(CS,SS,DS,ES)

6.基址加变址寻址
(1) 操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和.
(2) 若选用BX提供基地址,SI/DI提供变地址,则操作数一般在数据段中,用DS提供段基址
物理地址 PA = 16*DS+EA = 16*DS+BX+(SI/DI)
(3) 若选用BP寄存器提供基地址,SI/DI提供变地址,则操作数在堆栈段中,用SS提供段基址
(4) 必须是一个基址寄存器和一个变址寄存器的组合
(5) 允许使用段超越前缀(CS,SS,DS,ES)

7.相对基址加变址寻址
(1) 操作数的有效地址是一个基址寄存器和一个变址寄存器的内容和8位或16位位移量之和
(2) 若选用BX提供基地址,SI/DI提供变地址,则操作数一般在数据段中,用DS提供段基址
(3) 若选用BP寄存器提供基地址,SI/DI提供变地址,则操作数在堆栈段中,用SS提供段基址
(4) 允许使用段超越前缀(CS,SS,DS,ES)

8.与转移地址有关的寻址方式
这类寻址方式用于确定条件转移指令,无条件转移指令及CAL指令的转向地址.它可以分为段内转移和
段间转移.对于段内转移,只需修改指令指针IP,它可进一步细分为段内直接寻址,段内间接寻址.对于段间
转移,则需要同时修改代码段寄存器CS和指令指针IP,它可进一步细分段间直接寻址,段间间接寻址.
(1) 段内直接寻址
定义:转向的有效地址EA是当前IP寄存器的内容和指令中指定的8位或16位位移量之和.
a.在机器指令中,转向的有效地址EA用相对于当前IP值的位移量来表示,
指令中的位移量是转向的有效地址与当前IP值之差, 即:
位移量=转向有效地址-当前IP
b.对于16位的位移量,取值范围是-32768~+32767;对于8位,取值范围为-128~+127.
c.这种寻址方式适用于条件转移,无条件转移指令及调用指令CALL.对条件转移指令,
只能用段内直接转移,并且位移量只允许8位;对于无条件转移指令,当位移量为8位时称为短跳转,
当位移量为16位时称为近跳转
d.汇编指令格式:
jmp near ptr LL1 ;IP+16位位移量 => IP
jmp short LL2 ;IP+8位位移量 => IP

(2) 段内间接寻址
定义:转向的有效地址是一个寄存器或一个存储单元的内容,这内容可以用数据寻址方式中除立即数
以外的任何一种寻址方式取得,然后用得到的转向有效地址来取代IP寄存器的内容.
a.这种寻址方式和以下两种段间寻址方式都不能用于条件转移指令.
b.汇编格式:
jmp bx
jmp word pr[bx]

(3) 段间直接寻址
定义:指令中直接提供转向段基址和偏移地址,从而实现从一段转移到另一段的操作
a.用指令中指定的偏移地址->IP, 用指令中指定的段地址->CS
b.汇编指令的格式:
jmp far ptr LLL
其中,LLL是转向的符号地址, far ptr 是段间转移操作符,执行的操作:
取LLL的偏移地址送IP,取LLL的段基址送CS

(4) 段间间接寻址
定义:用内存中两个相继字的内容取代IP,CS以达到段间转移目的.内存单元的地址是由紧跟
在操作码之后除立即数方式和寄存器以外的任何一种寻址方式得到.
a.用内存中两个相继字的低字取代IP,高字取代CS
b.汇编语言格式
jmp dword ptr [bx]

-----------------------------------
女孩不哭 2013-10-17 13:48
EOF
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: