汇编学习(一)
9.内存中字的存储
对于8086CPU ,16位作为一个字
16位的字存储在一个16位的寄存器中,如何存储?
高8位放高字节 低8位放低字节
16位的字在内存中需要2个连续字节存储,怎么存放?
低位字节存在低地址单元,高位字节存在高地址单元
字单元
字单元:由两个地址连续的内存单元组成,存放一个字型数据(16位)
10.用DS 和[address] 实现字的传送
要解决的问题: CPU 从内存单元中要读取数据
要求:
CPU要读取一个内存单元的时候,必须先给出这个内存单元的地址;
原理:
在8086PC中,内存地址由段地址和偏移地址组成(段地址:偏移地址)
解决方案:DS和[address]结合
用DS寄存器存放要访问的数据的段地址
偏移地址用[...]形式直接给出
例1:
mov bx,1000h
mov ds,bx
mov al,[0]
将10000h(1000:0)中的数据读到al中(读取一个字节)
例2:
mov bx,1000h
mov ds,bx
mov [0],al
将al 中的数据写到10000h(1000:0)中
将段地址送入DS的两种方式
(1) mov ds,1000h (错误 硬件不支持该操作)
(2) mov bx, 1000h
mov ds,bx
8086CPU不支持将数据直接送入段寄存器中(硬件设计的问题)
套路: 数据 ----------》一般的寄存器-------------》段寄存器
8086CPU 可以直接一次性传送一个字(16位的数据)
例:
mov bx,1000h
mov ds, bx
mov ax,[0] ;1000::0 处的字型数据送入ax
mov [0],cx ;cx 中的16位数据送到1000:0中
汇编实例:
使用DOSBox 首先需要挂在