2017年春季汇编语言第七讲基础指令(二)-v1.0.ppt

2017年春季汇编语言第七讲基础指令(二)-v1.0.ppt

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

另一个例子 另一个例子 SHLD/SHRD的ATT指令格式 shldx count, src, dest shrdx count, src, dest 指令后缀x可要可不要 因为src是寄存器,可确定指令的操作数大小 未定义标志位 CBW CBW:字节扩展为字 指令格式(Intel):CBW 语义:将隐含源操作数AL的字节数据符号扩展为隐含目的操作数AX的字数据 AX- signed-extend(AL) 指令格式(ATT):CBTW as汇编器也能正确识别CBW CWDE CWDE:字扩展为双字 指令格式(Intel):CWDE 语义:将隐含源操作数AX的字数据符号扩展为隐含目的操作数EAX的双字数据 EAX- signed-extend(AX) 指令格式(ATT):CWTL as汇编器也能正确识别CWDE CWD CWD:字扩展为双字 指令格式(Intel):CWD 语义:将隐含源操作数AX的字数据符号扩展为隐含目的操作数DX:AX的双字数据 DX:AX- signed-extend(AX) 指令格式(ATT):CWTD as汇编器也能正确识别CWD CDQ CDQ:双字扩展为四字 指令格式(Intel):CDQ 语义:将隐含源操作数EAX的双字数据符号扩展为隐含目的操作数EDX:EAX的四字数据 EDX:EAX- signed-extend(EAX) 指令格式(ATT):CLTD as汇编器也能正确识别CDQ mul/div/imul指令示例(ATT) mul/div/imul指令示例(ATT) mul/div/imul指令示例(ATT) mul/div/imul指令示例(ATT) mul/div/imul指令示例(ATT) mul/div/imul指令示例(ATT) mul/div/imul指令示例(ATT) idiv/cbw指令示例(ATT) idiv/cbw指令示例(ATT) idiv/cbw指令示例(ATT) idiv/cbw指令示例(ATT) idiv/cbw指令示例(ATT) idiv/cbw指令示例(ATT) idiv/cbw指令示例(ATT) idiv/cbw指令示例(ATT) idiv/cbw指令示例(ATT) idiv/cbw指令示例(ATT) LEA指令 LEA:装载有效地址 指令格式(Intel) :LEA dest,src 语义:dest - effective address(src),src是内存操作数,dest是寄存器操作数 LEA指令常被用作计算指令 NOP指令 NOP:空操作指令 指令格式:NOP / NOP src 语义:空操作,主要用于占据指令流的位置。无操作数的NOP是单字节指令,带src操作数的NOP指令用于产生多字节指令 指令示例(ATT) SETcc SETcc:根据条件码设置字节操作数 指令格式(Intel) :SETcc dest 语义:若条件码满足,则dest = 1,否则dest = 0 SETcc指令用于消除逻辑赋值类的条件分支 相当于 Jcc+MOV指令的组合 MOV赋值的结果是0/1 SETcc指令基本格式 注意: SETcc是字节操作指令,操作数是8位 不同条件码的SETcc指令(一) 不同条件码的SETcc指令(二) 指令示例(ATT) 指令总结 shl/sal, shr, sar,shld, shrd mul, div, imul, idiv, cbw, cwde,cwd, cdq lea, nop setcc 程序实例 编写一个符合x86-linux-32 ABI的子过程 输入参数: 32位无符号整数 返回值:无 功能:将输入的32位无符号整数以16进制的字符串形式在终端输出 如, 输入无符号整数:0x9812abcd 输入:4095 终端输出字符串:0x9812abcd 输出:0x00000fff 相关指令 移位指令,逻辑运算指令、lea、call/ret等 C语言描述 完整子过程程序 独立的子过程文件 主程序文件 独立编译,一同链接 as -o print_hex_proc.o print_hex_proc.S as -o main.o main.S ld -o main main.o print_hex_proc.o ./main 作业 编写一个符合x86-linux-32 ABI的子过程 输入参数: 32位有符号整数 返回值:无 功能:将输入的32位有符号整数以16进制字符串形式在终端输出,输出格式为: {+|-}0xhhhhhhhh 其中,hhhhhhhh是16进制的绝对值 如, 输入:0x0812abcd, 输出:+0x0812abcd 输入:0 输

文档评论(0)

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

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

1亿VIP精品文档

相关文档