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

  1. 1、本文档共154页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 汇编语言程序设计 80X86的寻址方式 80X86的指令系统 汇编语言程序格式 汇编语言程序设计方法 第一节 80X86的寻址方式 固定寻址 立即数寻址 寄存器寻址 存储器寻址 I/O端口寻址 与转移地址有关的寻址 1、 固定寻址 这是一种特定的单操作数指令,其操作数隐含在操作码中,常常是对某一个固定的寄存器进行操作。例如: CBW ; (AL)→(AX) 该指令指定的操作数在AL寄存器中,其功能是将AL寄存器中的符号位扩展到AH中。形成16位的操作数存放在AX中。 2、 立即数寻址 这种寻址方式下,操作数就包含在指令中,作为指令的一部分,它与操作码一起存放在代码段中。例如: MOV AX,1102H ;给AX寄存器赋值 立即数寻址只能用于源操作数的寻址,而不能用于目的操作数的寻址。 MOV BX,0A123H 指令执行后(BX)=0A123H 3、 寄存器寻址 操作数在CPU内部的寄存器中,指令指定寄存器名,操作数的位数由寄存器名决定。例如: MOV AX,BX;将BX的内容送AX中。 MOV [1234H],BX;将BX内容送地址为1234H的内存单元中。 4、 存储器寻址 直接寻址方式 寄存器间接寻址方式 寄存器相对寻址方式 基址变址寻址方式 相对基址变址寻址方式 比例变址寻址方式 ⑴ 直接寻址方式 操作数的偏移地址就包含在指令中,默认段是数据段。例如: MOV AL,[2000H];将DS段中偏移地址为2000H的字节单元内容送寄存器AL中. MOV AX,ES:[2000H];将附加段中偏移地址为2000H的字单元内容送寄存器AX中. MOV AX,[1122H]; 设(DS)=3000H ⑵ 寄存器间接寻址方式 操作数的偏移地址存放在指令指定的寄存器中,寄存器作为指针指向内存单元,这样的寄存器称为间址寄存器。操作数在存储器中。例如: MOV AX,[SI] ;数据段中一个字送AX MOV AX,ES:[DI] ;附加段中一个字送AX MOV AX,[BP] ;堆栈段中一个字送AX MOV AX,DS:[BP] ;数据段中一个字送AX 例: MOV AX,[BX] ; 设(DS)=2000H,(BX)=1234H 物理地址=20000H+1234H =21234H 指令执行后(AX)=5678H ⑶ 寄存器相对寻址方式 操作数的偏移地址是间址寄存器的内容加上位移量,位移量是地址的一部分。例如: MOV AX,10H[SI] MOV AX,ES:10H[SI] MOV AX,TABLE[SI] 位移量TABLE是表的首地址,间址寄存器SI的内容加上位移量就是要访问的表中的某一数据. MOV AX,COUNT[BX] (DS)=3000H,(BX)=1234H,COUNT=1000H 物理地址=30000H+1234H+1000H =32234H 指令执行后 (AX)=5678H ⑷ 基址变址寻址方式 操作数的偏移地址一部分在基址寄存器,一部分在变址寄存器,基址寄存器的内容与变址寄存器的内容之和就是操作数的偏移地址。例如: MOV AX,[BX][SI] ; MOV AX,ES:[BX][SI] ; MOV AX,[BX][SI] (DS)=2100H,(SI)=1234H,(BX)=1100H 物理地址=21000H+1234H+1100H =23334H 指令执行后 (AX)=5678H ⑸ 相对基址变址寻址方式 带位移量的基址变址寻址称为相对的基址变址寻址方式。例如: MOV AX,100H[BX][SI] MOV AX,ES:100H[BX][SI] MOV AX,100H[BP][SI] ⑹ 比例变址寻址方式 比例变址寻址方式只能在32位及以后的系统中使用。操作数的有效地址是变址寄存器的内容乘以指令中指定的比例因子再加上位移量。例如: MOV AX,[EBX+4*EDI+20H]; 这是32位寻址,指令执行的结果是将数据段中偏移地址为(EBX)+4*(EDI)+20H的内存单元的一个字数据送AX寄存器中. 5、 I/O端口寻址 ⑴ 直接端口寻址——指令中包含I/O端口的直接地址 (8位端口) 。 IN AL,80H ;读80H端口的数据 OUT 80H,AL ;往80H端口写数据 ⑵ 间接端口寻址——用DX寄存器间接访问端口(16位端口) 。 MOV DX,200H ;将端口号200H存入DX中 OUT DX,AL ;将(AL)输出到DX所指的端口中 6、

文档评论(0)

叮当文档 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档