一、DS和[address]
????1.CPU要读取一个内存单元的时候,必须先给出这个内存单元的地址。 ????2.在8086PC中,内存地址由段地址和偏移地址组成。 ????3.8086CPU中有一个DS寄存器,通常用来存放要访问的数据的段地址。
mov al,[0] 已知的mov指令可完成的两种传送功能: ????(1)将数据直接送入寄存器; ????如mov ax,2 ????(2)将一个寄存器中的内容送入另一个寄存器中。 ????如mov bx,ax 除此之外,mov指令还可以将一个内存单元中的内容送入一个寄存器。
????4.8086CPU不支持将数据直接送入段寄存器的操作,DS是一个段寄存器。但是8086CPU可以将数据直接送入通用寄存器。 8086CPU5.若想将数据送入段寄存器,首先要先将数据送入通用寄存器,然后将通用寄存器中的内容送入段寄存器。
数据→通用寄存器→段寄存器
二、mov、add、sub指令
????1.add和sub指令同mov一样,都有两个操作对象。 ????2.一个段最大的长度是16位,它的偏移地址最多是ffff(一共16位),16位最大是64KB,所以段的偏移地址是不可能大于64KB的。 ????我们可以将一组长度为N(N≤64K)、地址连续、起始地址为16的倍数的内存单元当作专门存储数据的内存空间,从而定义了一个数据段。
比如我们用123B0H~123B9H这段空间来存放数据: 段地址:123BH 长度:10字节 看段地址的方式:把123B0和123B9向右移一位,就是段地址; 看长度的方式:123B是段地址,偏移地址是0,123B是段地址,偏移地址是9,0到9是十个数字,所以长度是10个字节。
????3.
(1)字在内存中存储时,要用两个地址连续的内存单元来存放,字的低位字节存放在低地址单元中,高位字节存放在高地址单元中。 (2)用mov指令要访问内存单元,可以在mov指令中只给出单元的偏移地址,此时,段地址默认在DS寄存器中。 (3)[address]表示一个偏移地址为address的内存单元。 (4)在内存和寄存器之间传送字型数据时,高地址单元和高8位寄存器、低地址单元和低8位寄存器相对应。 (5)mov、add、sub是具有两个操作对象的指令。jmp是具有一个操作对象的指令。
未完待续
|