内存中字的存储
CPU中,用16位寄存器来存储一个字。一个内存单元存放一个字节。
1个字 = 2个字节
1个字节 = 8位
一个内存单元一个字节,一共8位
一个字 = 2个内存单元,一共16位
字单元:即存放一个字型数据(16位)的内存单元,由两个连续的内存单元组成。
DS 和 [address]
DS寄存器,通常用来存放要访问数据的段地址。(数据段地址寄存器)
mov指令将一个内存单元中的内容送入一个寄存器中。
格式:mov 寄存器名,内存单元地址
[…] 表示一个内存单元,[…]中的数值表示内存单元的偏移地址。
指令执行时,8086CPU自动取ds中的数据位内存单元的段地址。
例:从10000H中读取数据:(10000H用段地址和偏移地址表示为1000:0)
mov bx, 1000H
mov ds, bx
mov al,[0]
[0]为偏移地址,段地址会自动从ds中获取。
8086CPU不支持将数据直接送入段寄存器的操作,ds是一个段寄存器,所以需要一个寄存器来进行中转。
从寄存器到内存单元:
格式:mov 内存单元地址,寄存器名
mov bx, 1000H
mov ds, bx
mov [0], al
数据段
累加数据段的前三个单元:一个单元是8位 al占8位
mov ax,123BH
mov ds,ax
mov al,0
add al,[0]
add al,[1]
add al,[2]
累加数据段中的前3个字型数据:一个字型数据占2个单元 16位
mov ax,123BH
mov ds,ax
mov ax,0
add ax,[0]
add ax,[2]
add ax,[4]
注意
mov ax, 1234H
mov al, 56H
此时 ax 的值为 1256H
总结
字在内存中存储时,要用两个地址连续的内存单元来存放,低位字节存放在低位地址单元中,高位字节存放在高地址单元中。
用mov指令访问内存单元,可以在mov指令中只给处单元的偏移地址,此时,段地址默认在DS寄存器中。
[address]表示一个偏移地址位address的内存单元。
在内存和寄存器之间传送字型数据时,高地址单元和高8位寄存器、低地址单元和低8位寄存器相对应。
mov、add、sub是具有两个操作对象的指令。jmp时具有一个操作对象的指令。
可以根据自己的推测,在Debug中实验指令的新格式。