欢迎来到天天文库
浏览记录
ID:48782649
大小:525.50 KB
页数:101页
时间:2020-01-24
《第三讲 寄存器.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第3章寄存器(内存访问)3.1内存中字的存储3.2DS和[address]3.3字的传送3.4mov、add、sub指令3.5数据段3.6栈3.7CPU提供的栈机制3.8栈顶超界的问题3.9push、pop指令3.10栈段引言在第2章中,我们主要从CPU如何执行指令的角度讲解了8086CPU的逻辑结构、形成物理地址的方法、相关的寄存器以及一些指令。这一章中,我们从访问内存的角度继续学习几个寄存器。在0地址处开始存放20000:0号单元是低地址单元,1号单元是高地址单元。3.1内存中字的存储3.1内存中字的存储问题:(1)0地址单元中存放的字节型数据是多少
2、?(2)0地址字单元中存放的字型数据是多少?(3)2地址字单元中存放的字节型数据是多少?3.1内存中字的存储问题(续):(4)2地址单元中存放的字型数据是多少?(5)1地址字单元中存放的字型数据是多少?结论3.1内存中字的存储结论:任何两个地址连续的内存单元,N号单元和N+1号单元,可以将它们看成两个内存单元,也可以看成一个地址为N的字单元中的高位字节单元和低位字节单元。3.2DS和[address]CPU要读取一个内存单元的时候,必须先给出这个内存单元的地址;在8086PC中,内存地址由段地址和偏移地址组成。8086CPU中有一个DS寄存器,通常用来存
3、放要访问的数据的段地址。例如3.2DS和[address]例如:我们要读取10000H单元的内容可以用如下程序段进行:movbx,1000Hmovds,bxmoval,[0]上面三条指令将10000H(1000:0)中的数据读到al中。3.2DS和[address]moval,[0]已知的mov指令可完成的两种传送功能:(1)将数据直接送入寄存器;(2)将一个寄存器中的内容送入另一个寄存器中。mov指令还可以将一个内存单元中的内容送入一个寄存器。3.2DS和[address]从哪个内存单元送到哪个寄存器中呢?mov指令的格式:mov寄存器名,内存单元地址
4、“[…]”表示一个内存单元,“[…]”中的0表示内存单元的偏移地址。那么内存单元的段地址是多少呢?3.2DS和[address]执行指令时,8086CPU自动取DS中的数据为内存单元的段地址。如何用mov指令从10000H中读取数据?10000H表示为1000:0(段地址:偏移地址)将段地址1000H放入ds用moval,[0]完成传送(mov指令中的[]说明操作对象是一个内存单元,[]中的0说明这个内存单元的偏移地址是0,它的段地址默认放在ds中)如何把1000H送入ds?3.2DS和[address]如何把1000H送入ds?传送指令movax,1相
5、似的方式movds,1000H?8086CPU不支持将数据直接送入段寄存器的操作,ds是一个段寄存器。(硬件设计的问题)movds,1000H是非法的。数据一般的寄存器段寄存器3.2DS和[address]问题:写几条指令,将al中的数据送入内存单元10000H?(思考后分析)分析问题本质:怎样将数据从寄存器送入内存单元?结论:movbx,1000Hmovds,bxmov[0],al(一种合理的回答)3.3字的传送因为8086CPU是16位结构,有16根数据线,所以,可以一次性传送16位的数据,也就是一次性传送一个字。问题3.3:内存中的情况如右图,
6、写出下面指令执行后寄存器ax,bx,cx中的值。思考后看分析。(单步跟踪)3.3字的传送问题3.3分析问题3.4:内存中的情况如右图,写出下面指令执行后寄存器ax,bx,cx中的值。思考后看分析。(单步跟踪)3.3字的传送问题3.4分析3.4mov、add、sub指令已学mov指令的几种形式:mov寄存器,数据mov寄存器,寄存器mov寄存器,内存单元mov内存单元,寄存器mov段寄存器,寄存器根据已知指令进行推测3.4mov、add、sub指令根据已知指令进行推测:mov段寄存器,寄存器mov寄存器,段寄存器(验证)mov内存单元,寄存器mov内存
7、单元,段寄存器mov段寄存器,内存单元验证(Debug)mov段寄存器,寄存器mov寄存器,段寄存器add和sub指令同mov一样,都有两个操作对象。它们可以对段寄存器进行操作吗?(请自行在Debug中试验)3.4mov、add、sub指令3.5数据段前面讲过,对于8086PC机,我们可以根据需要将一组内存单元定义为一个段。我们可以将一组长度为N(N≤64K)、地址连续、起始地址为16的倍数的内存单元当作专门存储数据的内存空间,从而定义了一个数据段。比如我们用123B0H~123B9H这段空间来存放数据:段地址:123BH长度:10字节3.5数据段如
8、何访问数据段中的数据呢?将一段内存当作数据段,是我们在编程时的一种安排,我们可以
此文档下载收益归作者所有