80x86——寻址方式

目录

一、指令的概念

(一)、指令的概念

1.计算机指令的分类

2.机械指令

3.指令的组成

4.指令的一般格式

(二)、指令的分类

二、80x86的寻址方式

(一)寻址方式的相关概念

1、立即数

2、寄存器操作数

3、存储器操作数

4、有效地址(EA)

5、段跨越前缀

6、寻址方式与什么有关?

(二)与数据相关的寻址方式

1、立即寻址方式

2.寄存器寻址方式

3.直接寻址方式

4.寄存器间接寻址方式

6.基址变址方式

7.相对基址变址寻址方式

8.端口(输入/输出)寻址方式

(三)与转移地址有关的寻址方式

1、端内直接寻址

2、端内间接寻址

3、端间直接寻址

4、端间间接寻址



 

一、指令的概念

(一)、指令的概念

1.计算机指令的分类

计算机指令可分为:机械指令、伪指令和宏指令。

2.机械指令

机械指令是指计算机完成某种操作是命令。

3.指令的组成

计算机中指令有操作码字段操作数字段组成。

(1)操作码字段

操作码字段知识计算机所要执行的操作

(2)操作数字段

操作数字段是指令执行操作是过程中多需要的操作数。

4.指令的一般格式

操作码 操作数 [,操作数] [,操作数]

即 :操作码 DST SRC

DST(目的操作数)

SRC(源操作数)

(二)、指令的分类

指令可以分为:无操作数指令、单操作数指令和双操作数指令。

二、80x86的寻址方式

(一)寻址方式的相关概念

1、立即数

操作数跟随在指令操作码之后,称为立即数

2、寄存器操作数

操作数存放在CPU内部的寄存器中,称为寄存器操作数。

3、存储器操作数

操作数存放在内存储器中,称为存储器操作数。

4、有效地址(EA)

操作数的偏移地址,称为有效地址。

有效地址的计算公式:

EA=基址+(变址*比例因子)+位移量

(1)、基址

基址是存放在基址寄存器中的内容,是有效地址的一部分,通常用来指向数据段中数组或字符串的首地址。

(2)变址

变址是存放在变址寄存器中的内容,一般是用来访问数组中的某个元素或字符串中某个字符。

(3)比例因子

比例因子是寻址方式中的一个术语,其值可以为1、2、4或8。

(4)位移量

位移量是存放在指令中一个8位、16位或32位的数,是一个地址。

5、段跨越前缀

80x86中可以将数据存放在数据段以外的段中,在指令中用该段寄存器加冒号“:”,即段跨越前缀来指定该段。SP寄存器隐含的段寄存器为SS,其他寄存器隐含的寄存器为DS。

注:在一下情况中,不可以使用段跨越前缀

(1)串处理指指令的目的串必须使用ES段;

(2)PUSH指令的目的和POP指令的源必须用SS段,指令代码必须存放在CS段中;

(3)80x86 CPU中为了使指令不要过长,规定双操作数指令的两个操作数中,只能有一个使用存储器寻址方式。

6、寻址方式与什么有关?

寻址方式分别与数据和转移地址有点

(二)与数据相关的寻址方式

与数据相关的寻址方式

立即寻址方式

寄存器寻址方式

直接寻址方式

寄存器间接寻址方式

寄存器相对寻址方式

基址变址方式

相对基址变址寻址方式

端口寻址方式

比例变址寻址方式

基址比例变址寻址方式

相对基址比例变址寻址方式

无有效地址

有有效地址

无有效地址

有效地址

图:与数据相关的寻址方式

1、立即寻址方式

功能:操作数存放在存储器中,指令下一个单元的内容为立即操作数n

如:

MOV AX,66    ;将66送给AX
MOV AX,129H

注:(1)只能用于SRC字段;

(2)SRC和DST的字长必须保持一致;

(3)“;”为注释

2.寄存器寻址方式

操作数在寄存器中,指令指定寄存器名称。

如:

MOV AL,BL

注:(1)字节寄存器只有AH、AL、BH、BL、CH、CL、DH和DL;

(2)SRC和DST的字长必须保持一致;

如:

MOV AH,BX      ;此操作不正确,SRC和DST的字长不一致

(3)CS不能用MOV指令改变。

如:

MOV CS,AX        ;此操作不正确

3.直接寻址方式

操作数的有效地址(EA)为位移量的值。有效地址是有指令直接给出的

如:

MOV AX,[2000H]

EA=2000H,

操作数地址也可有变量(符合地址)表示

MOV AH,VALUE

注:(1)VALUE有隐含的段,数据段为DS;

(2)可使用段跨越前缀

MOV AX,ES:[2000H]

(3)使用变量时,需要注意变量属性

VALUE DB 10

(4)适用于处理单个变量

4.寄存器间接寻址方式

有效地址(EA)在基址寄存器(BP/BX)或变址寄存器(SI/DI)中。

SP的隐含段寄存器为SS;BX、SI和DI的隐含段寄存器为DS;

所以有效地址/物理地址=16d*(DS)/(SS)+((BX)/(SI)/(DI))/(BP)

如:

MOV AX,[BX]        ;PA=16d*(DS)+(BX)
MOV AX,ES:[BX]     ;PA=16d*(ES)+(BX)

注:

(1)不能使用AX、CX、DX存放EA;

(2)SRC和DST的字长一致

(3)适用于数组、字符串和表格的处理

5.寄存器相对寻址方式(或称直接变址寻址方式)

操作数的有效地址为基址寄存器或贬值寄存器的内容和指令中指定的位移量之和。

EA=((BX)/(SI)/(DI)/(BP))+(8为位移量)/(16为位移量)

如:

MOV AX,COUNT[SI]
MOV ES:STRING[SI],DL

注:

(1)可使用段跨越前缀

(2)适用于数组、字符串和表格的处理

6.基址变址方式

操作数的有效地址EA一个基址寄存器和一个变址寄存器的内容之和,可使用段跨越前缀。

EA=(BX)/(BP)+(SI)/(DI)

如:

MOV AX,ES:[BX] [SI]
MOV AX,[BX+DI]

注:(1)适用于数组、字符串和表格的处理

(2)必须是一个基址寄存器和一个变址寄存器的组合

7.相对基址变址寻址方式

操作数的有效地址EA一个基址寄存器和一个变址寄存器的内容和指令中指定的位移量之和,可使用段跨越前缀。

EA=(BX)/(BP)+(SI)/(DI)+(8为位移量)/(16为位移量)

如:

MOV ES:MASK[BX][SI],AX
MOV AX,[MASK+BX+SI]

注:(1)适用于堆栈处理和数组处理

8.端口(输入/输出)寻址方式

特点:一个操作数必须为AX或AL或EAX,另一个用端口直接寻址方式(端口号<256)或端口间接寻址方式(DX的内容为端口号,端口号为>=256)

(三)与转移地址有关的寻址方式

这是用于确定转移指令和CALL指令的转向地址。

端内寻址

端间寻址

端内直接寻址

端内间接寻址

端间直接寻址

端间间接寻址

端内:转移指令与转向的目标指令在同一代码中,(CS)不变。

段间:转移指令和转向的目标指令在两个代码段中,(CS)变化。

1、端内直接寻址

转向的有效地址是当前IP内容和指令中指定的8位或16位位移量之和(操作数OPR采用相对寻址方式)

2、端内间接寻址

转向的有效地址EA是一个寄存器或存储器单元的内容。(除了立即数以外,任意一种数据寻址方式都可以得到)

EA=寄存器内容/存储器内容

物理地址=16d*(CS)+EA

3、端间直接寻址

指令中直接提供了转向的段地址和偏移地址。(操作数OPR采用立即数寻址方式)

4、端间间接寻址

用寄存器中两个相连字来取代IP和CS的内容。(操作数OPR采用存储器寻址方式)

  • 9
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

斯择微韵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值