文章目录
指令格式
指令中的(目标 / 源)操作数来源
七种叫法:
- 立即寻址方式
- 寄存器寻址方式
- 直接寻址方式
- 寄存器间接寻址方式
- 寄存器相对寻址方式
- 基址加变址寻址方式
- 相对基址加变址寻址方式
一、立即数寻址
把一个数直接在指令里面给出来,然后把这个数赋值给目标操作数。如:把 1234H 这个数赋值给DX【数据寄存器】

但是,一般这种寻址方式我们只会在赋初值的时候才会用。
二、寄存器寻址
就是我们不直接在指令里面给出源操作数,而是把这个源操作数放在一个寄存器里面,通过寄存器来赋值。
例如:把通用寄存器 BX 里面存放的数据赋值给 AX。(源寄存器和目标寄存器的大小一定要相同)

三、存储器寻址
3.1 直接寻址
这里,我们就给出了源操作数的偏移地址是 3000H,那么段地址去哪了?
3.2 寄存器间接寻址
这里是通过把偏移地址放在寄存器中的寻址方式。用于存放数据在内存中的偏移地址的,只能有 4 个通用寄存器:BX, BP, SI, DI。
如果存放偏移地址的是寄存器:BX, SI, DI, 那么默认的段就是数据段 DS;
如果存放偏移地址的是寄存器:BP,那么默认的段就是堆栈段 SS
因为我们知道:16位 CPU 它这个内存单元一个就是 8位的,我们通过 [BX] 所访问到的就是一个存储单元,也就是说,我们只取出了1个数,这个数是 8 位的。但是想要赋值的寄存器 AX 是 16位的,因此这时,我们还需要再往下多取一个8位二进制数,作为高位,存放在 AH。
3.3 基址寻址 (寄存器相对寻址?)
采用基址寻址时,我们的偏移地址是这样表示的:[基址寄存器] + 偏移量
这里,偏移量是一个常数,而能够存放基址的,只有 BP 和 BX。
- 在使用 BX【基址寄存器】 时,默认的段就是数据段DS;
- 在使用 BP 【基址指针】时,默认的段就是堆栈段 SS
3.4 变址寻址(寄存器相对寻址?)
上面我们采用的偏移地址表示是 [基址寄存器] + 偏移量,而在变址寻址中,我们偏移地址的表示就是:[变址寄存器] + 偏移量。
在16位变址寻址中,变址寄存器只能是SI 、 DI,且它们都是默认段是 DS
变址寻址主要的目的是为了一维数组的操作,因为我们知道,要想访问一维数组,需要有表头,还要有数组内数据和表头的距离。那么我们常常用那个常数偏移量代表表头,有寄存器的变化代表数组内元素距表头的距离。
3.5 基址变址寻址
类似的,在这种寻址方式下,我们的偏移地址就表示成:[基址寄存器] + [变址寄存器]
说明:在这种寻址模式下,哪个段主要取决于基址寄存器
3.6 带位移的基址加变址寻址方式
3.7 小结
———————————————————————————
寻址方式中容易出现的错误
另类写法
练习题
第1题

第2题
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/222581.html原文链接:https://javaforall.net
