汇编语言:第3章 寄存器(内存访问)_第1页
汇编语言:第3章 寄存器(内存访问)_第2页
汇编语言:第3章 寄存器(内存访问)_第3页
汇编语言:第3章 寄存器(内存访问)_第4页
汇编语言:第3章 寄存器(内存访问)_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章寄存器(内存访问)AXBX其他部件CSIP指令缓冲器执行控制器地址加法器输入输出控制电路2000A20009D8200080120007D820006892000500200040320003BB2000201200012320000B8CPU内存地址总线数据总线Movax,0123HMovbx,0003HMovax,bxAddax,bx一、内存中字的存储110001111111011000111001内存单元寄存器的逻辑结构1514131211109876543210字单元:即存放一个字型数据(16位)的内存单元,由两个地址连续的内存单元组成。高地址内存单元中存放字型数据的高位字节,低地址内存单元中存放字型数据的低位字节。0110111110011100字单元020H14EH212H300H45例:1)0地址单元中存放的字节型数据是多少?2)0地址字单元中存放的字型数据是多少?3)2地址单元中存放的字节型数据是多少?4)2地址字单元中存放的字型数据是多少?5)1地址字单元中存放的字型数据是多少?二、DS和[address]DS—数据段寄存器:提供数据所在内存的段地址。[address]:表示一个偏移地址为address的内存单元。例:[1234H]指偏移地址为1234H的内存单元。

[AX]指偏移地址为(AX)的内存单元。10000H20H10001H4EH10002H12H10003H00H10004H10005HMOV BX,1000HMOV DS,BXMOV AL,[0000H]CPU要存取内存中的数据时,段地址默认在DS寄存器中,偏移地址在指令中给出。通用寄存器AX、BX、CX、DX、BP、SP、SI、DI、AL、AH、BL、BH、CL、CH、DL、DH存储器立即数段寄存器CS、DSES、SSCS只能作源操作数MOV AX,1234HMOV BL,12HMOV CX,03HMOV [0],12HMOV [0200H],1234HMOV [AX],03HMOV AX,BXMOV DX,AXMOV BL,ALMOV AX,[0]MOV [0],AXMOV BL,[AX]MOV AX,DSMOV DS,AXMOV AX,CSMOV CS,AX

MOV DS,[0]MOV [1],ESMOV [AX],CS判断下列指令是否正确,若错误,为什么?1、MOVCL,1000H2、MOV AL,[1000H]3、MOV[BX],[SI]4、MOVAH,BH5、MOVAX,[SI]6、MOV 1234H,BX7、MOVCL,AX8、MOVCS,AX9、MOV DS,CS问题:试写几条指令,将AL中的数据保存到内存单元12345H中。 MOV BX,1000H MOV DS,BX MOV [2345H],AL三、字的传送MOV BX,1000HMOV DS,BXMOV AX,[0] ;将1000:0处的字型数据送入AX中MOV [0],CX ;将CX中的16位数据送到1000:0处MOV BH,[0]

;将1000:0处的字节型数据送入BH当向内存单元中存取数据时,若操作的为字节型数据则一次读写一个内存单元,若为字型数据则按低地址为低8位,高地址为高8位的原则存取数据。例:内存单元中的情况如图所示,写出下面指令执行后寄存器AX,BX,CX中的值。

MOV AX,1000H MOV DS,AX MOV AX,[0] MOV BX,[2] MOV CX,[1] ADD BX,[1] ADD CX,[2]10000H23H10001H11H10002H22H10003H66HAX=1000HDS=1000HAX=1123HBX=6622HCX=2211HBX=8833HCX=8833H例:内存单元中的情况如图所示,写出下面指令执行后内存中的值。

MOV AX,1000H MOV DS,AX MOV AX,11316 MOV [0],AX MOV BX,[0] SUB BX,[2] MOV [2],BX10000H23H10001H11H10002H22H10003H11HAX=1000HDS=1000HAX=2C34HBX=2C34HBX=1B12H34H2CH12H1BH四、 MOV、ADD、SUB指令一条指令包括如下内容:1)操作码:指令所执行的操作。2)操作数:指令操作的对象,包括操作数的来源,操作结果的去向。操作对象通常为存储器地址,寄存器或立即数。例:MOVAX,03HMOV操作码操作数AX,03H目的操作数AX源操作数03H通用寄存器AX、BX、CX、DX、BP、SP、SI、DI、AL、AH、BL、BH、CL、CH、DL、DH存储器立即数段寄存器CS、DSES、SSMOV AX,8MOV AX,BXMOV AX,[0]MOV [0],AXMOV DS,AXCS只能作源操作数MOV AX,DSMOV AX,CSMOV [0],DSMOV [0],CSMOV DS,[0]MOV CS,AXADD DS,AXADD DS,[0]五、 数据段XXXX001H12H23H34H45H56H67H78H89H9AHABH123B0H123B1H123B2H123B3H123B4H123B5H123B6H123B7H123B8H123B9H123BAHDS[address]地址加法器MOV AX,123BHMOV DS,AXMOV AL,0ADD AL,[0]ADD AL,[1]ADD AL,[2]六、栈(堆栈)栈:是具有特殊的访问方式的存储空间。栈有两个基本操作:入栈;出栈。DCBADCBADCBA七、CPU提供的栈机制、PUSH和POP指令堆栈指令PUSH堆栈压入指令格式:

PUSHOP(操作数)功能:将OP中的内容放入堆栈段中POP堆栈弹出指令格式:POPOP功能:将堆栈段中的内容弹出到OP。说明:OP可以是段寄存器(CS除外)、通用寄存器或内存的字单元。PUSH AXPUSH DSPUSH[0]POP AXPOP DSPOP[0]10000H10009H1000AH1000BH1000CH1000DH1000EH1000FH设现有10000H—1000FH为一栈段MOV AX,0123HPUSHAX0123MOVBX,2266HPUSHBX2266MOVCX,1122HPUSHCX1122POPAXAX=1122HPOPBXBX=2266HPOPCXCX=0123HCPU如何知道堆栈段在哪里?执行PUSH、POP指令时,CPU如何找到要操作的位置?CPU执行指令——CS:IPCPU读写内存数据—DS:[address]CPU进行堆栈操作—SS:SPSS—堆栈段寄存器:指定堆栈段的段地址SP—堆栈指针寄存器:指向栈顶的偏移地址任意时刻,SS:SP指向栈顶地址。PUSH入栈过程10000H1000BH1000CH1000DH1000EH231000FH01当前:SS=1000H,SP=000EH,AX=2266HPUSHAX栈顶66栈顶1)SP=SP-2,SS:SP指向当前栈顶前面的单元,以当前栈顶前面的单元为新的栈顶。222)将AX中的内容送入SS:SP指向的内存单元处,SS:SP此时指向新栈顶。POP出栈过程10000H1000BH1000CH1000DH1000EH231000FH01POPAX栈顶66栈顶1)将SS:SP指向的内存单元处的数据送入AX中;222)SP=SP+2,SS:SP指向当前栈顶下面的单元,以当前栈顶下面的单元为新的栈顶。当栈空时,栈顶的位置为多少?八、栈顶超界的问题10000H1000BH1000CH1000DH1000EH1000FH10010H栈空间SS:SP768798235645342312当栈满时再执行PUSH指令入栈,或在栈空时执行POP指令出栈,都将发生栈顶超界的问题。在8086CPU中没有预防栈超界的机制,所以程序员必须自己考虑,防止栈超界。九、PUSH、POP指令例:编程,将10000H—1000FH这段空间当作栈,初始状态栈是空的,将AX,BX,DS中的数据入栈。MOVAX,1000HMOVSS,AXMOVSP,0010HPUSHAXPUSHBXPUSHDS例:编程:将10000H—1000FH这段空间当作栈,初始状态是空的;设置AX=001AH,BX=001BH;将AX,BX中的数据入栈;然后将AX、BX清零;从栈中恢复AX、BX原来的内容;MOVAX,1000MOVSS,AXMOVSP,0010HMOVAX,001AHMOVBX,001BHPUSHAXPUSHBXSUBAX,AXSUBBX,BXPOPBXPOPAX例:编程将10000H—1000FH这段空间作栈,初始状态栈是空的;设置AX=002AH,BX=002BH;利用栈,交换AX和BX中的数据。MOVAX,1000HMOVSS,AXMOVSP,0010HMOVAX,002AHMOVBX,002BHPUSHAXPUSHBXPOPAXPOPBX例:如果要将10000H处写入字型数据2266H,可以用以下指令完成:

MOVAX,10

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论