Mov VAL[SI],BX是什么寻址方式?

Mov VAL[SI],BX是什么寻址方式?,第1张

"MOV VAL[SI], BX" 是基于索引的寻址方式,也称为 "变址寻址"。
基于索引的寻址方式指的是,首先指定一个基地址,然后再通过一个偏移量(也称为变址量)来确定要访问的内存地址。在这个偏移量的计算过程中,使用了一个寄存器,例如这里的SI寄存器。
在这个例子中,VAL是一个内存地址,SI是一个指向偏移量的寄存器,BX是要存储在该地址中的数据。因此,该指令的作用是将BX的值存储到VAL[SI]中的内存地址中。
总之,“MOV VAL[SI], BX”是基于索引的寻址方式。

一、
1。如果源 *** 作数是立即数,那么必须用属性 *** 作符指明存储器 *** 作数的类型,否则不能确定是存为一字节还是二字节。
MOV BYTE PTR [SI],34H
2。MOV 指令第一个 *** 作数不能为立即数
3。INC 指令 *** 作数不能为立即数
4。不支持存储器到存储器的mov *** 作
二、
1、将地址1000H的值送SI寄存器,SI=2234H
2、将内在单元[1000]的偏移地址送SI,SI=1000H
3、高地址送DS,低地址送寄存器,DS=5566h,SI=1000H

三条语句都是MOV传送指令,都是内存与寄存器之间数的传送。EAX,ECX,EBX都是32位的通用寄存器,BX,SI,DI都是16位的寄存器。
三条语句的作用如下:
(1)MOV [SI],EAX
本句的作用是把EAX寄存器中的数据9823F456H存入首地址为[SI]的内存中。[SI]指的是一个内存单元(偏移地址存储于SI寄存器中,段基址默认存储在DS中,因此[SI]表示的是DS:[SI]即DS:2000H内存单元)
由于一个内存单元只能存储2位16进制数,因此用4个内存单元存储9823F456H,数据低位存入低位地址内存,数据高位存入高位地址内存,从内存单元DS:2000H开始存储,因此4个内存单元地址从低到高分别为56H,0F4H,23H和98H。
(2) MOV [BX],ECX
本句语法与(1)一致,因此不作解释,作用类似于(1)。作用是把ECX寄存器中的数据1F23491H存入首地址为[BX]的内存中。
(3) MOV EBX,[DI]
本句的作用是把[DI]内存单元中的数据也就是起始单元为DS:[4044H]的4个字节单元中的数据92H,6DH,0A2H和4CH按照低位到高位(最低位数据为92H,最高位数据为4CH)存入EBX寄存器中(32位寄存器EBX可以存储8位十六进制数据)。
关于问题:mov [ ],EAX等左边加方括号是什么 *** 作?
[ ]表示的是一个内存单元,[ ]内部为一个内存单元的偏移地址。
方括号内如果是一个寄存器如[BX],那么表示寄存器BX内存储着内存单元的偏移地址;如果方括号内是一个数值,如[25H],则表示此内存单元的偏移地址为25H。一般默认内存单元的段基址是存储在DS段寄存器中的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12599831.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存