网站大量收购独家精品文档,联系QQ:2885784924

第3章16位32位微处理器指令系统.ppt.ppt

  1. 1、本文档共99页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章16位32位微处理器指令系统.ppt

第3章 16位/32位微处理器指令系统 3.1 指令的基本格式 3.2 8086/8088的寻址方式 3.3 8086/8088的指令系统 3.4 80386的寻址方式和指令系统 3.5 Pentium新增加的指令 3.1 指令的基本格式 3.1.1 指令的构成 3.1.2 8086/8088的指令格式 3.1.1 指令的构成 包括两部分: 表示操作性质或类型编码-操作码。 操作对象-操作数。 一般来说,第一字节表示操作码,第二字节表示寻址方式,第三、四字节表示操作数在内存的位移量或者是立即数(在指令中没有位移量时),第五、六字节表示立即数。 3.1.2 8086/8088的指令格式 基本格式为: [标号:] 操作码助记符 目的操作数,源操作数 [;注释] 标号为该条指令所在内存单元的符号地址,后面要跟冒号。标号一般由字母开头,后跟字母、数字或特殊字符,注意不允许使用保留字,例如:MOV,SEGMENT,END等。 操作码助记符,指示CPU执行什么样的操作。 操作数分目的操作数和源操作数两种,目的操作数是指令结果存放的位置,源操作数是指令操作的对象。目的操作数应放在源操作数前,并以逗号隔开。 注释用来说明本条指令或一段程序的功能,使程序可读性强。注释由分号(;)开始,汇编程序对其不进行处理。 3.2 8086/8088的寻址方式 一条汇编语言指令,有两个问题需要关注,一是该条指令将进行什么操作,另一个就是操作的对象和操作后结果的存放位置。 操作数的寻址方式就是指寻找操作数位置的方式。 1.立即寻址(Immediate addressing) 操作数包含在指令中,紧跟在操作码之后(操作数作为指令的一部分存放在操作码之后的主存单元中)。 这种操作数称为立即数 可以是8位数值(00H~FFH) 也可以是16位数值(0000H~FFFFH) MOV AL,80H;将80H送入AL MOV AX,306AH;将306AH送入AX 立即数寻址方式常用来给寄存器和存储单元赋值,多以常量形式出现。 操作数直接在指令中取得,不需要使用另外的总线周期,执行时间短、速度快。 2.寄存器寻址(Register addressing) 操作数存放在CPU的内部寄存器中: 8位寄存器: AH、AL、BH、BL、CH、CL、DH、DL 16位寄存器: AX、BX、CX、DX、SI、DI、BP、SP 4个段寄存器: CS、DS、SS、ES 寄存器名表示其内容(操作数)。 MOV AL,BL;将BL的内容传送到AL中 MOV BX,AX;将AX的内容传送到BX中 采用寄存器寻址的指令在执行时,操作数就在CPU中,不需要访问存储器来取得操作数,执行速度快。另外寄存器名比内存地址短,指令所占内存空间少。 3.直接寻址(Direct Addressing) 通常把操作数的偏移地址称为有效地址EA (Effective Address) ,EA可通过不同的寻址方式来得到。直接寻址方式的有效地址在指令中直接给出。 默认的段基址在DS段寄存器,可使用段前缀改变。 用方括号包含有效地址。 MOV AX,[1000H];若(DS)=2000H,则将数据段21000H、 21001H两个单元的内容送到AX。 如果有效地址是以符号地址形式提供,则可不加方括号。 MOV AX,BUFA;BUFA为符号地址,这时不加跨段前 缀,默认仍为DS数据段。如BUFA变量 在附加段中,就必须书写为: MOV AX,ES:BUFA 4.寄存器间接寻址(Register indirect Addressing) 有效地址存放在基址寄存器BX、BP或变址寄存器SI、DI中。 如用BX、SI或DI作为间址寄存器,则默认的段基址在DS段寄存器。 如用BP作为间址寄存器,则默认的段基址在SS段寄存器。 可使用段前缀改变。 MOV AX,[BX] ;若 ( DS) = 2000H,(BX) = 1000H ,则将数据段 21000H、21001H两个单元的内容送到AX中。 MOV CX,[BP] ;若 ( SS) = 4000H,(BP) = 1000H ,则将堆栈段 41000H、41001H两个单元的内容送到CX中。 MOV AX,ES:[SI]

文档评论(0)

daoqqzhuan2 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档