1.mov ax,2 将数据直接送入寄存器
2.mov bx,ax 将寄存器中的内容送入另一个寄存器中
3.mov al,[0] 将一个内存单元中的内容送入一个寄存器(mov al,[0]:将偏移地址为0的内存单元中的内容送入al寄存器)【[]内的为偏移地址】
4.8086CPU不支持将数据直接送入段寄存器的操作,ds是一个段寄存器,需要通过通用寄存器ax/bx/cx/dx将数据放到ds中(这是硬件设计的问题)
5.mov ds,1000H 是非法的
6.数据-通用寄存器-段寄存器
7.将寄存器al中的数据送入内存单元:
mov bx,1000H
mov ds,bx
mov [0],al
8.字的传送
因为8086CPU是16位结构,有16根数据线,所以可以一次性传送16位的数据,也就是一次性传送一个子。
例:
mov bx,1000H
mov ds,bx
mov ax,[0] //1000:0处的字型数据送入ax中
mov [0],cx //cx中的16位数据送到1000:0处
任何两个地址连续的内存单元,N号单元和N+1号单元,可以将他们看成两个内存单元,也可以看成一个地址为N的字单元中的高位字节单元和地位字节单元。
8086CPU中有一个DS寄存器,通常用来存放要访问的数据的段地址。
例如:我们要读取10000H单元的内容可以用如下程序段进行:
mov bx.1000H
mov ds,bx
mov al,[0]
上面三条指令将10000H(1000:0)中的数据读到al中。
已知的MOV指令可完成的两种传送功能:
1.将数据直接送入寄存器;
mov ax,2;
2.将一个寄存器中的内容送入另一个寄存器中
mov bx,ax;
除此之外,mov指令还可以将一个内存单元中的内容送入一个寄存器
10000H表示为1000:0(段地址:偏移地址)
将段地址1000H放入ds
用mov al,[0]完成传送(mov指令中的[]说明操作对象是一个内存单元,[]中的0说明这个内存单元的偏移地址是0,它的段地址默认放在ds中)
8086CPU不支持将数据直接送入段寄存器的操作,ds是一个段寄存器
mov al,[0] 偏移地址为0的数据的一个字节
执行指令时,8086CPU自动取DS中的数据为内存单元的段地址
10000H表示为1000:0(段地址:偏移地址)
将段地址1000H放入ds
用mov al,[0]完成传送(mov指令中的[]说明操作对象是一个内存单元,[]中的0说明这个内存单元的偏移地址是0,它的段地址默认放在ds中)
8086CPU不支持将数据直接送入段寄存器的操作,ds是一个段寄存器(硬件设计的问题)mov ds,1000H是非法的!
数据----通用寄存器---段寄存器
将数据从寄存器送入内存单元:
mov bx,1000H
mov ds,bx
mov [0],al
学员评论