第2章 汇编语言程序设计.ppt

第2章 汇编语言程序设计.ppt

ID:48246118

大小:2.96 MB

页数:188页

时间:2020-01-18

第2章 汇编语言程序设计.ppt_第1页
第2章 汇编语言程序设计.ppt_第2页
第2章 汇编语言程序设计.ppt_第3页
第2章 汇编语言程序设计.ppt_第4页
第2章 汇编语言程序设计.ppt_第5页
资源描述:

《第2章 汇编语言程序设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第二章汇编语言程序设计80X86的寻址方式80X86的指令系统汇编语言程序格式汇编语言程序设计方法一条指令就是完成一种操作命令,它由操作码和操作数构成,用二进制数表示。操作码表示计算机所要执行的操作,操作数表示操作的对象,也就是指令执行操作的过程中所需要的数据或地址。一条指令一定包含这样的信息:是做什么操作?操作数从哪里来?一般说来,操作数可以跟随在指令的操作码之后,称为立即数;也可以存放在CPU内部的寄存器中,称为寄存器操作数。绝大多数的操作数存放在内存中,称为存储器操作数。指令规定了操作数存放的位置,在执行指令时需要根据这个信息找到需要的操作数

2、。所谓寻址方式,就是寻找操作数的方式或过程,处理器设计了许多方式用来指明操作数的位置。根据操作数可能的存放位置,有各种不同的寻址方式。第一节80X86的寻址方式固定寻址立即数寻址寄存器寻址存储器寻址I/O端口寻址与转移地址有关的寻址1、固定寻址是一种特定的单操作数指令,其操作数隐含在操作码中,常常是对某一个固定的寄存器进行操作,而这个寄存器名又隐含在操作码中。总之,在固定寻址的指令中,操作数是被隐含在指令中的,不需要执行总线周期,执行速度快。例如:CBW;(AL)→(AX)该指令指定的操作数在AL寄存器中,其功能是将AL寄存器中的符号位扩展到AH中

3、。形成16位的操作数存放在AX中。PUSHAX;源操作数是AX寄存器,目的操作数被隐含在存储器的堆栈中,其操作数地址是堆栈栈顶。该指令的功能是将AX寄存器的内容压入堆栈。2、立即数寻址这种寻址方式下,操作数就包含在指令中,作为指令的一部分,它与操作码一起存放在代码段中。它的特点是执行速度快,主要用来给寄存器赋值。立即数可以是8位的或16位的。立即数寻址只能用于源操作数的寻址,而不能用于目的操作数的寻址。因为操作数是直接从指令中取得,不需要执行总线周期,执行速度非常快。例如:MOVAL,02H;将一个8位立即数送AL寄存器。指令执行完后,(AL)=0

4、2H。MOVAX,1102H;给AX寄存器赋值MOVBX,0A123H;将一个16位立即数送BX寄存器。指令执行完后,(BX)=0A123H。MOVBX,0A123H指令执行后(BX)=0A123HBX:代码段A123OP:存储器例:3、寄存器寻址操作数在CPU内部的寄存器中,指令指定寄存器名,操作数的位数由寄存器名决定。这种寄存器寻址方式的操作数就在寄存器中,不需要访问内存来取得操作数,所以它的执行速度比较快。例如:MOVAX,BX;将BX的内容送AX中。MOV[1234H],BX;将BX内容送地址为1234H的内存单元中。INCCX;CX寄存器

5、中的内容加1。4、存储器寻址如果操作数存放在内存储器中,则指令中需要给出操作数的地址信息。用存储器寻址的指令,其操作数一定在数据段、附加段、堆栈段的主存储器中,指令中一定包含有存储器单元的地址或产生存储器单元地址的信息。执行这类指令时,CPU首先根据指令提供的地址信息计算出偏移地址,用地址产生器产生能直接访问内存单元的物理地址,从内存中取得操作数,再执行指令规定的操作。双操作数指令的两个操作数中,只能有一个使用存储器寻址方式。80X86允许使用段跨域前缀来改变系统所指定的默认段,如允许数据存放在除DS段以外的其他段,此时程序中应使用段跨越前缀。但是

6、在下面三种情况下,不允许使用段跨越前缀。(1)串处理指令的目的串必须用ES段。(2)PUSH指令的目的操作数和POP指令的源操作数必须使用SS段。(3)指令必须放在CS段中。直接寻址方式寄存器间接寻址方式寄存器相对寻址方式基址变址寻址方式相对基址变址寻址方式比例变址寻址方式4、存储器寻址操作数的偏移地址直接由指令给出(就包含在指令中),其默认段在数据段。也就是说,通常用DS寄存器的内容作段基址,也可以通过段跨越前缀来取得其他段中的操作数。直接寻址方式适合处理单个变量。⑴直接寻址方式例如:MOVAL,[2000H];将DS段中偏移地址为2000H的字

7、节单元内容送寄存器AL中.MOVAX,ES:[2000H];将附加段中偏移地址为2000H的字单元内容送寄存器AX中.MOVAX,[1122H];设(DS)=3000H存储器中操作码后面是操作数的偏移地址.物理地址=3000H*16+1122H=31122H,该内存单元的内容送AX寄存器.执行指令后,(AX)=3456H例:操作数的偏移地址存放在指令指定的寄存器中,寄存器作为指针指向内存单元,这样的寄存器称为间址寄存器。操作数在存储器中。16位系统中,间址寄存器可以是基址寄存器BX、BP或变址寄存器SI、DI。寄存器间接寻址方式下,指令会根据所使用

8、的间址寄存器指定默认的段。寄存器间接寻址方式主要用来处理一维数组或表格,只要改变间址寄存器的内容,用一条寄存器间接寻址指令

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

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

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