汇编语言(王爽版)学习笔记 第三章 寄存器【内存访问】(1)

引言

在第二章中,我们主要从CPU如何执行指令的角度讲解了8086CPU的逻辑结构、形成物理地址的方法、相关寄存器以及一些指令。
这一章中,我们从访问内存的角度继续学习几个寄存器。


3.1 内存中字的存储

例:在0地址处开始存放20000(4E20)
在这里插入图片描述

  • 高8位存放高位字节,低8位存放低位字节
  • 内存单元是字节单元,一个单元只能存放一个字节,一个字的储存要2个单元
  • 字单元=2*字节单元

问题3.1

(1)0地址单元中存放的字节型数据是多少?
答:20H
(2)0地址字单元中存放的字型数据是多少?
答:4E20H
(3)2地址字单元中存放的字节型数据是多少?
答:12H
(4)2地址单元存放的字型数据是多少?
答:0012H 注:2地址单元,即起始地址为2的字单元
(5)1地址单元中存放的字型数据是多少?
答:124EH

结论

任何两个地址连续的内存单元,N号单元和N+1号单元,可以将它们看成两个内存单元,也可以看成一个地址为N的字单元中的高位字节单元和低位字节单元。


3.2 DS和[address]

  • CPU要读取一个内存单元的时候,必须先给出这个内存单元的地址;
  • 8086PC中,内存地址由段地址和偏移地址组成;
  • 8086CPU中有一个DS寄存器,通常用来存放要访问的数据的段地址;

例:
要读取10000H单元的内容

 mov bx,1000H
 mov ds,bx
 mov al,[0]

上述指令将1000:0地址的内容送入al

详解mov al,[0]

已知的mov指令可完成的两种传送功能:
(1)将数据直接送入寄存器;如:mov ax,2
(2)将另一个寄存器中的内容送入另一个寄存器中。如:mov ax,bx
此外,mov指令还可以讲一个内存单元中的内容送入一个寄存器。

mov指令格式

mov 寄存器名,内存单元地址
"[…]"存放的是偏移地址,ds中存放的是段地址。
执行指令时,8086CPU会自动读取DS中的数据为内存单元的段地址。

mov的典型错误指令

错误示范
mov ds,1000H
8086CPU不支持直接将数据送入段寄存器的操作,ds是一个段寄存器。

将数据从寄存器送入内存单元

将al中的数据送入10000H内存单元

mov bx,1000H
mov ds,bx
mov [0],al

3.3字的传送

8086CPU是16位结构,有16根数据线,可以一次性传送16位的数据,即一次性传送一个字(两个字节)

问题3.3

在这里插入图片描述
注:
mov ax,[0]是将1000:0处的字型数据传到ax
mov al,[0]是将1000:0处的字节型数据传到al
还要注意数据的高低位

在这里插入图片描述

问题3.4

在这里插入图片描述
在这里插入图片描述
注:
sub bx,[2]操作是:
bx=bx中的字型数据-1000:2处的字型数据

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值