微机原理 寻址方式

有效地址: E A = 基 址 + ( 变 址 × 比 例 因 子 ) + 位 移 量 EA=基址+(变址×比例因子)+位移量 EA=+×+

物理地址: P A = 段 址 ( D S ) × 16 + 段 内 偏 移 量 PA=段址(DS)×16+段内偏移量 PA=DS×16+

1、立即寻址

  • 操作数(立即数)紧跟在操作码之后,直接存放在代码段中。

  • 立即寻址只能用于源操作数

例:

MOV AX, 1C8FH

MOV BYTE PTR[2A00H], 8FH

错误:

MOV 2A00H, AX 错误!

2、直接寻址

  • 指令中直接给出操作数的16位偏移地址

  • 偏移地址即为有效地址EA(也可以用符号地址表示,如ADDR、VAR)

  • 默认的段寄存器为DS(可省略),也能显示指定其他段寄存器(段超越前缀)

例:

MOV AX , [2A00H]
MOV DX , ES: [2A00H]
MOV SI , TABLE_PTR

3、寄存器寻址

  • 操作数在CPU的寄存器中,而寄存器名由指令给出

  • 源操作数与目的操作数字长要相同

  • 寄存器寻址与段基址无关

例:
MOV AX, BX
MOV [3F00H], AX
MOV CL, AL
错误:
MOV AX, BL 字长不同
MOV ES: AX, DX 寄存器与段无关

!!!中括号 [ ] 中一定为地址

4、寄存器间接寻址

  • 操作数的偏移地址(EA)放在寄存器中
  • 只有SI、DI、BX和BP可作间址寄存器

例:

MOV AX, [BX]

MOV CL, [DI]

错误 :

MOV AX, [DX]

MOV CL, [AX]

5、寄存器相对寻址

  • EA=间址寄存器的内容加上一个8/16位的位移量

例:

MOV AX, [BX+8]
MOV CX, TABLE[SI] (与上述写法等同)
MOV AX, [BP+200] ; 默认段寄存器为SS

6、基址-变址寻址

  • 若操作数的偏移地址:

    • 由基址寄存器(BX或BP)给出 —— 基址寻址方式
    • 由变址寄存器(SI或DI)给出 —— 变址寻址方式
  • 由一个基址寄存器的内容和一个变址寄存器的内容相加而形成操作数的偏移地址,称为 基址-变址寻址

E A = { ( B X ) ( B P ) } + { ( S I ) ( D I ) } EA= \begin{Bmatrix} (BX) \\ (BP) \end{Bmatrix} \quad+\begin{Bmatrix} (SI) \\ (DI) \end{Bmatrix} \quad EA={(BX)(BP)}+{(SI)(DI)}

例:
MOV AX, [BX] [SI]
MOV AX, [BX+SI]
MOV AX, DS: [BP] [DI]
错误:
× MOV AX, [BX] [BP]
× MOV AX, [DI] [SI]

7、相对的基址-变址寻址

  • 在基址-变址寻址的基础上再加上一个相对位移量

例:

MOV AX,BASE [SI] [BX]
MOV AX,[BX+BASE] [SI]
MOV AX,[BX+SI+BASE]
MOV AX,[BX] BASE [SI]
MOV AX,[BX+SI] BASE

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值