寄存器访问内存

http://orangelsk.zone/

内存中字的存储

字用来描述cpu一次性能处理的数据量,比如8086PC机的CPU是16位机型,一次可处理16位bit,那么对于该机器,一个字表示16个bit。

一块内存单元存放一个字节,那么一个字需要两个内存单元。实际上,字存储在连续的两个内存单元中,这两个内存单元成为字单元。高位地址单元存放字的高位,低位地址单元存放字的低位。

比如,1234H,0号单元存储34H,1号单元存储12H。

寄存器的赋值

前面我们学习过如何将汇编指令写入内存,让CS:IP指向命令所在内存地址,通过t命令来执行汇编指令。其中寄存器写入方式有两种:

  1. mov ax,1000H
  2. mov ax,bx

但是如何将内存中的值写入寄存器,或是将寄存器中的值写入内存呢?这时需要用到ds段寄存器,ds寄存器中存储内存单元的地址,比如当前ds中存储的值为1000H,那么可以通过mov al,[0]将地址为10000H内存单元中的值写入ax寄存器的低8位。

同样的,mov al,[1]可以将10001H处的内存单元中的值写入al;mov ax,[2]可以将起始地址为10002H的字单元中的值写入ax。因为ax是16位寄存器,完整的写入ax需要使用字单元,也就是连续的两个存储单元。

那么寄存器中的值是否可写入内存单元?只需调换位置:mov [0],ax,这样ax中的低8位就写入0号内存单元,高8位写入了1号内存单元。

那么ds要怎么赋值呢?ds寄存器只能通过寄存器对其赋值,类似mov ds,bx

完整代码如下:

mov bx,1000H mov ds,bx mov ax,[0] mov [0],bx

猜你喜欢

转载自blog.csdn.net/weixin_43237362/article/details/120003909