寄存器指令MOV ADD SUB
1、不可以直接mov到段寄存器
将内存中的东西送入寄存器?
MOV BX 1000H
MOV DS,BX
MOV AL,[0]
先mov到通用寄存器,再从通用寄存器到段寄存器 <数据->通用寄存器->段寄存器>
到时候他会根据偏移地址和段地址找到内存地址将10000H(1000:0)中的数据读到AL
MOV AL,[0]:
1、将数据送入寄存器MOV AX,2E
2、将一个寄存器的内容送到另一个寄存器MOV AX,BX
3、以及现在使用的将一个内存单元的内容送入一个寄存器MOV AL,[0]
2、将AL中的数据送入内存单元1000H
MOV BX,1000H
MOV DS,BX
MOV [0],AL//这里是将AL寄存器里面的东西送到偏移地址为0的地方
MOV的几种形式
MOV 寄存器,数据
MOV 寄存器,寄存器
MOV 寄存器,内存单元
MOV 内存单元,数据
MOV 段寄存器,寄存器
add和sub指令同mov一样,都有两个操作对象
代码段和数据段
对于8086机器,我们可以根据需要将一组内存单元定义为一个段(代码段/数据段)
代码段:CS指向它他就是代码段
数据段:DS指向它就是数据段(怎么指向CPU就怎么认(代码段/数据段))
例子:
用123B0-123B9这段空间存放数据
段地址123B
长度10字节
看我们自己怎么认为123 段地址B0-B9偏移地址。。都可以
#####一个字是16位因为8086CPU是16位所以才有的这个概念,以前都是8位才有的字节
例题:将123B0H-123BAH定义为数据段,累加这个数据段中前三个的单元中的数据
MOV AX,123BH
MOV DS,AX//传送地址
MOV AL,0
ADD AL,[0]
ADD AL,[1]
ADD AL,[2]
传送3个字型数据
MOV AX,123BH
MOV DS,AX//传送地址
MOV AX,0
ADD AX,[0]
ADD AX,[2]
ADD AX,[4]