《汇编语言》讲稿_03.ppt

《汇编语言》讲稿_03.ppt

ID:48243753

大小:790.00 KB

页数:107页

时间:2020-01-18

《汇编语言》讲稿_03.ppt_第1页
《汇编语言》讲稿_03.ppt_第2页
《汇编语言》讲稿_03.ppt_第3页
《汇编语言》讲稿_03.ppt_第4页
《汇编语言》讲稿_03.ppt_第5页
资源描述:

《《汇编语言》讲稿_03.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、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)0地址字单元中存放的字型数据是多少?(

2、3)2地址字单元中存放的字节型数据是多少?3.1内存中字的存储问题(续):(4)2地址单元中存放的字型数据是多少?(5)1地址字单元中存放的字型数据是多少?结论3.1内存中字的存储结论:任何两个地址连续的内存单元,N号单元和N+1号单元,可以将它们看成两个内存单元,也可以看成一个地址为N的字单元中的高位字节单元和低位字节单元。3.2DS和[address]CPU要读取一个内存单元的时候,必须先给出这个内存单元的地址;在8086PC中,内存地址由段地址和偏移地址组成。8086CPU中有一个DS寄存器,通常用来存放要访问的数据的段地址。例如3.2DS和[addre

3、ss]例如:我们要读取10000H单元的内容可以用如下程序段进行:movbx,1000Hmovds,bxmoval,[0]上面三条指令将10000H(1000:0)中的数据读到al中。3.2DS和[address]moval,[0]已知的mov指令可完成的两种传送功能:(1)将数据直接送入寄存器;(2)将一个寄存器中的内容送入另一个寄存器中。mov指令还可以将一个内存单元中的内容送入一个寄存器。3.2DS和[address]从哪个内存单元送到哪个寄存器中呢?mov指令的格式:mov寄存器名,内存单元地址“[…]”表示一个内存单元,“[…]”中的0表示内存单元的

4、偏移地址。那么内存单元的段地址是多少呢?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相似的方式movds,1000H?8086CPU不支持将数据直接送

5、入段寄存器的操作,ds是一个段寄存器。(硬件设计的问题)movds,1000H是非法的。数据一般的寄存器段寄存器3.2DS和[address]问题:写几条指令,将al中的数据送入内存单元10000H?(思考后分析)分析问题本质:怎样将数据从寄存器送入内存单元?结论:movbx,1000Hmovds,bxmov[0],al(一种合理的回答)操作数就包含在指令中,它作为指令的一部分,跟在操作码后存放在代码段。这种操作数称为立即数。立即数可以是8位的可以是16位的。如果立即数是16位的按‘高高低低的原则。例如:指令:MOVAX,1234H的存储和执行情况如下图:

6、AHAL存储器AX1234…OP34指令代码段12…图中指令存放在代码段中,OP表示该指令的操作码部分再例如:MOVAL,5则指令执行后,(AL)=05HMOVBX,3064H则指令执行后,(BX)=3064H立即寻址方式操作数在CPU内部的寄存器中,指令指定寄存器号。对于16位操作数数,寄存器可以是:AX、BX、CX、DX、SI、DI、SP和BP等;对于8位操作数,寄存器可以是:AL、AH、BL、BH、CL、CH、DL、DH。这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数,因而可以取得较高的运算速度。例如:MOVAX,BX如指令执行前(AX

7、)=3064H,(BX)=1234H;则指令执行后,(AX)=1234H,(BX)保持不变例如:MOVSI,AXMOVAL,DH寄存器寻址方式直接寻址方式操作数在寄存器中,指令直接包含有操作数的有效地址(偏移地址)。操作数一般存放在数据段,所以操作数的地址由DS加上指令中直接给出的16位偏移得到。如果采用段超越前缀,则操作数也可含在数据段外的其他段中。3.3字的传送因为8086CPU是16位结构,有16根数据线,所以,可以一次性传送16位的数据,也就是一次性传送一个字。问题3.3:内存中的情况如右图,写出下面指令执行后寄存器ax,bx,cx中的值。思考后看分析

8、。(单步跟踪)3.3字的传送问题3.3

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。