http://orangelsk.zone/
内存中字的存储
字用来描述cpu一次性能处理的数据量,比如8086PC机的CPU是16位机型,一次可处理16位bit,那么对于该机器,一个字表示16个bit。
一块内存单元存放一个字节,那么一个字需要两个内存单元。实际上,字存储在连续的两个内存单元中,这两个内存单元成为字单元。高位地址单元存放字的高位,低位地址单元存放字的低位。
比如,1234H,0号单元存储34H,1号单元存储12H。
寄存器的赋值
前面我们学习过如何将汇编指令写入内存,让CS:IP指向命令所在内存地址,通过t命令来执行汇编指令。其中寄存器写入方式有两种:
- mov ax,1000H
- 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