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

第3章 80x86寻址方式和指令系统2.ppt

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

第3章 80x86指令系统和寻址方式 3.1 寻址方式 3.2 80x86的指令系统 3.2 80x86的指令系统 3.2.1数据传送指令 3.2.2算术指令 3.2.3逻辑指令 3.2.4串处理指令 3.2.5控制转移指令 3.2.6处理机与其他操作指令 汇编语言的指令格式如下: 指令助记符 [操作数1 [, 操作数2 [,操作数3]]]  [;注释] 指令助记符体现该指令的功能,它对应一条二进制编码的机器指令。指令的操作数个数由该指令的确定,可以没有操作数,也可以有一个、二个或三个操作数。绝大多数指令的操作数要显式的写出来,但也有指令的操作数是隐含的,不需要在指令中写出。 当指令含有操作数,并要求在指令中显式地写出来时,则在书写时必须遵守: 指令助记符和操作数之间要有分隔符,分隔符可以是若干个空格或TAB键; 如果指令含有多个操作数,那么,操作数之间要用逗号,分开。 指令后面还可以书写注释内容,不过,要在注释之前书写分号;。 指令系统是CPU指令的集合,CPU除了具有计算功能的指令外,还有实现其它功能的指令,也有为某种特殊的应用而增设的指令。 3.2.1 数据传送指令 数据传送指令负责把数据、地址、立即数传送 到寄存器或存储单元中。 1.通用数据传送指令 1)传送指令MOV MOV DST,SRC ◆DST:目的操作数 SRC:源操作数 ◆ DST:不能为:立即数、CS; ◆功能:将源操作数传送入目的地址,源地址内容不变。 下图描述了MOV指令在传送数据时允许 传送的路径及类型。 对MOV指令有以下几条具体规定,其中有些规定对其它指令也同样有效。 ? (1)、两个操作数的数据类型要相同,要同为8位、16位或32位;如:MOV? BL, AX等是不正确的; (2)、两个操作数不能同时为段寄存器,如:MOV? ES, DS等; (3)、代码段寄存器CS不能为目的操作数,但可作为源操作数,如:指令MOV? CS, AX等不正确,但指令MOV? AX, CS等是正确的; (4)、立即数不能直接传给段寄存器,如:MOV? DS, 100H等; (5)、立即数不能作为目的操作数,如:MOV? 100H, AX等; (6)、指令指针IP,不能作为MOV指令的操作数; (7)、两个操作数不能同时为存储单元, 如:MOV? VARA, VARB 其中VARA和VARB是同数据类型的内存变量。 对于规定2、4和7,我们可以用通用寄存器作为中转来达到最终目的。表列举一个可行的解决方案,可考虑用其它办法来完成同样的功能。 【例】 MOV AX,ADDR ;源操作数为直接地址 MOV ADDR+2,AX ;寄存器送直接地址 MOV BX,OFFSET ADDR ;段内ADD的偏移地址送入BX,OFFSET为属性操作符,意为把其后符号的段内偏移地址(不是内容)作为SRC。 MOV AX,[BX] ;寄存器间接寻址 MOV 2[BX],AX 【例】存储器与寄存器间数据传送。 MOV AX,BUF ;BUF是变量,源操作数为直接寻址 MOV BH,[DI] ;源操作数为寄存器间接寻址 MOV DI,ES:3[SI] ;源操作数为变址寻址,使用跨段前缀 MOV BP,3[BX+SI] ;源操作数为基址加变址寻址 MOV BUFA,DL ;BUFA是一字节变量 MOV [BP],AX ;使用SS段寄存器 MOV DS:[BP],DL ;使用跨段前缀 MOV BUF,DS ;BUF是个字变量 MOV ES ,BUF 【例】实现两个存储单元之间交换数据: MOV AX,X1 MOV BX,Y1 MOV X1,BX MOV Y1,AX 2)MOVSX DST,SRC ;带符号扩展传送指令(80386及以后) (DST)← 符号扩展(SRC) SRC:8位、16位寄存器或存储单元 DST:16位、32位寄存器 不影响标志位。 MOVSX的执行效果 【例】(P49) 3)MOVZX DST,SRC ;带零扩展传送指令(80386及以后),恒用0来填充目的操作数的高位数据位. (DST)← 零扩展(SRC) MOVZX的执行效果 【例】(P49) 【例】已知:AL=87H,指令MOVSX? CX, AL,MOVZX? DX, AL执行后,问CX和DX的值是什么? 解:根据传送-填充指令的填充方式可知: 指令MOVSX CX, AL执行后,(CX)=0FF87H,指令MO

文档评论(0)

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

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

1亿VIP精品文档

相关文档