第三章 ---- 第三节

已知MOV指令的几种形式:

MOV  寄存器,  立即数        MOV AX,  4000H

MOV  寄存器, 寄存器         MOV AX,  BX

MOV  寄存器, 内存             MOV AX,  [0]

MOV  内存, 寄存器             MOV [0],   AX

MOV  段寄存器, 寄存器      MOV DS,  AX

MOV  寄存器, 段寄存器      MOV AX,  DS

注意下列MOV指令是不能在8086CPU下被执行的:

MOV  段寄存器,  立即数

 

已知ADD指令的几种形式:

ADD  寄存器,  立即数         ADD AX,  4000H

ADD  寄存器,  寄存器         ADD AX,  BX

ADD  寄存器,  内存             ADD AX,  [0]

ADD  内存,  寄存器             ADD [0],  AX

注意下列ADD指令是不能在8086CPU下被执行的:

ADD  寄存器,  段寄存器

ADD  段寄存器,  寄存器

ADD  段寄存器,  立即数

 

已知SUB指令的几种形式:

SUB  寄存器,  立即数          SUB AX,  4000H

SUB  寄存器,  寄存器          SUB AX,  BX

SUB  寄存器,  内存              SUB AX,  [0]

SUB  内存,  寄存器              SUB [0],  AX

注意下列SUB指令是不能在8086CPU下被执行的:

SUB  寄存器,  段寄存器

SUB  段寄存器,  寄存器

SUB  段寄存器,  立即数

 

数据段:

    我们可以将一组长度为N(N<=64KB)、地址连续、起始地址为16的倍数的内存单元当做专门存储数据的内存空间,从而定义了一个数据段。

比如我们用123B0H~123B9H这段空间来存放数据:

段地址:1230H

偏移地址:0H~9H

长度:10字节

段地址:1230H

偏移地址:B0H~B9H

长度:10字节

……

我们习惯上采用向右偏移16位二进制位的方法来定义该数据的段地址。

 

如何访问数据段中的数据呢?

用DS存放数据段的段地址,再根据需要,用相关指令访问数据段中的具体单元。

 

例如:我们将123B0H~123BAH的内存单元定义为数据段,我们现在要累加这个数据段中的前三个单元中的数据,代码如下:

MOV AX, 123BH

MOV DS, AX

MOV AL, [0]

ADD AL, [1]

ADD AL, [2]

 

3.1~3.5小结:

(1)字在内存单元中存储时,要用两个地址连续的内存单元来存放,字的低位字节存放在地地址单元中,高位自己存放在高位地址单元中。

(2)用MOV指令要访问内存单元,可以再MOV指令中只给出单元的偏移地址,此时,段地址默认在DS寄存器中。

实验MOV AX, 1000:[0] 失败

实验MOV AX, 1000:0   失败

(3)[address]表示一个偏移地址为address的内存单元。

(4)在内存和寄存器之间传送字型数据的时候,高地址单元和高八位寄存器对应,地地址单元和低八位寄存器对应。

(5)MOV ADD SUB是具有两个操作对象的指令,JMP是具有一个操作对象的指令。

(6)可以根据自己的推测,在DEBUG中实验指令的新格式。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值