32位汇编语言程序设计.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
32位汇编语言程序设计 微型计算机接口技术 2 32位汇编语言程序设计 32位CPU在兼容原来的16位指令系统的基础上,一方面将16位指令扩展为支持32位扩展的寻址方式,同时又引入了若干新的指令。 下面只简介新增的指令。 3 1.1 32位CPU指令集 数据传送类指令 LFS/LGS/LSS 将32位内存操作数的低字送入16位目的寄存器,高字送入FS/GS/SS段寄存器。 PUSHA/POPA 将AX,CX,DX,BX,SP,BP,SI,DI依次入栈/相反顺序出栈。 PUSHAD/POPAD 将EAX,EXC,EDX,EBX,ESP,EBP,ESI,EDI依次入栈/相反顺序出栈。 CWDE 将AX符号扩展为EAX。 CDQ 将EAX符号扩展为EDX:EAX。 MOVSX 将8位数符号扩展为16位或32位数,或将16位数符号扩展为32位数。 4 1.1 32位CPU指令集 数据传送类指令 MOVZX 将8位数零扩展为16位或32位数,或将16位数零扩展为32位数。 BSWAP 将32位操作数的第0 字节和第3字节、第1字节和第2字节交换。 算术指令 XADD 首先交换两个操作数的值,然后将二者之和送给第1个操作数。 CMPXCHG 将AL,AX或EAX的值与第一个操作数比较,若相等则ZF=1,并将第二个操作数的值送给第一个操作数,否则ZF=0,并将第1个操作数的值送给AL,AX或EAX。操作数类型确定操作对象是AL,AX,或EAX。 CMPXCHG8B 8字节比较交换指令,将EDX:EAX中的值与内存单元中的64位数比较,相等则ZF=1并将ECX:EBX 的值送到内存单元,否则ZF=0,将EDX:EAX的值送到内存单元。 5 1.1 32位CPU指令集 位操作指令 SHLD 将操作数1左移指定的次数,最高位移到CF,操作数2的最高位移到操作数1的最低位,但操作数2不变。 SHRD 将操作数1右移指定的次数,最低位移到CF,操作数2的最低位移到操作数1的最高位,但操作数2不变。 BT 位测试指令,由源操作数指定目的操作数中的某位=CF时,目的操作数不变。 BTS 位测试并置位指令,由源操作数指定目的操作数中的某位=CF时,将目的操作数中该位置1。 BTR 位测试并置位指令,由源操作数指定目的操作数中的某位=CF时,将目的操作数中该位置0。 BTC 位测试并置位指令,由源操作数指定目的操作数中的某位=CF时,将目的操作数中该位取反。 6 1.1 32位CPU指令集 位操作指令 BSF 前向位扫描指令,从源操作数的低位到高位依次搜索首次出现1的位置,记录相应的位置编号到目的操作数中且ZF=0。若源操作数为0,则ZF=1。 BSR 后向位扫描指令,从源操作数的高位到低位依次搜索首次出现1的位置,记录相应的位置编号到目的操作数中且ZF=0。若源操作数为0,则ZF=1。 SETCC CC为CF,ZF,SF等标志位,指令功能是根据某些标志位的状态,将字节操作数的值设置为1或0。 7 1.1 32位CPU指令集 控制转移指令 JECXZ 实现-128~127的段内直接短转移 串操作指令 MOVSD 将[DS:SI]单元双字传送到[ES:DI]单元,SI和DI指针根据DF自动+/-4。 LODSD 将[DS:SI]单元的32位字送给EAX,并根据DF值将SI+4或SI-4。 STOSD 将EAX的值送到[ES:DI]单元,并根据DF值将DI+4或DI-4。 CMPSD 将[DS:SI]单元的值与[ES:DI]单元的值作比较,并根据DF值将DI+4,SI+4或DI-4,SI-4。 8 1.1 32位CPU指令集 SCASD 将EAX的值和[ES:DI]单元的值作比较,并根据DF值将DI+4或DI-4。 INSB/INSW/INSD 串输入指令,从DX指定的I/O端口读取1个字节/字/双字,存入ES:DI所指的单元,并根据DF值将DI递增或递减1/2/4。 OUTSB/OUTSW/OUTSD 串输出指令,将[DS:SI]所指单元的字节/字/双字写入DX所指的I/O端口,并根据DF值SI递增或递减1/2/4。 上述是实模式下32位CPU新增的指令,另外还提供了一些在32位保护模式下执行的指令,如LGDT,SGDT,LLDT,SLDT,LIDT,SIDT等,通常

文档评论(0)

151****7975 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档