- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
(二)乘法和除法指令 1. MUL指令 格式(操作数为乘数): MUL r/m8 MUL r/m16 MUL r/m32 功能:无符号乘法。将8位、16位或32位的操作数与AL、AX或EAX相乘。 (二)乘法和除法指令 1. MUL指令 例: (二)乘法和除法指令 2. IMUL指令 有符号乘法,格式与MUL指令相同。 如果积的高半部分不是低半部分的符号扩展,则设置CF和OF。 例: (二)乘法和除法指令 3. DIV指令 无符号除法。 格式(操作数为除数): DIV r/m8 DIV r/m16 DIV r/m32 功能:执行8位、16位、32位无符号整数除法运算。 (二)乘法和除法指令 3. DIV指令 例: (二)乘法和除法指令 4. 有符号整数除法 ① CBW,CWD 和 CDQ 指令 CBW(Convert Byte to Word)将AL中的符号位扩展到AH寄存器中。 CWD(Convert Word to Doubleword)将AX的符号位扩展到DX寄存器中。 CDQ(Convert Doubleword to Quadword)将EAX中的符号位扩展到EDX寄存器中。 (二)乘法和除法指令 4. 有符号整数除法 ② IDIV 指令 执行有符号数整数的除法运算。 格式:与 DIV 指令相同。 当执行8位数的除法指令之前,必须将被除数符号扩展到AH中(可用CBW指令)。 16位除法要求AX被符号扩展到DX中。 32位除法要求将EAX符号扩展到EDX中。 (二)乘法和除法指令 4. 有符号整数除法 ② IDIV 指令 例: (二)乘法和除法指令 4. 有符号整数除法 ③ 除法溢出 当除法产生的商太大而无法容纳在目的操作数中的时候,将导致除法溢出,使CPU触发一个中断,当前程序被终止。例如: mov ax,1000h mov bl,10h div bl ; AL cannot hold 100h 试图除以0也会发生相同的情况。 mov ax,dividend mov bl,0 div bl 解决办法: 使用32位的除数来减小除法溢出的可能性。 测试除数,如果除数等于0则跳过除法指令。 带进位加法指令ADC ADC dest,src ;dest←dest+src+CF 两个操作数相加,再加CF,结果送目的操作数 影响6个状态标志位 实现多精度数的加法,如64位数据 先将两个操作数的低32位相加(用ADD指令) 再加高位部分、并将进位加到高位(用ADC指令) 〔例〕64位数据相加程序 .data qvar1 qword 6778300082347856h qvar2 qword 6776200012348998h .code mov eax,dword ptr qvar1 ;取低32位 add eax,dword ptr qvar2 ;加低32位,设置CF mov edx,dword ptr qvar1+4 ;取高32位 adc edx,dword ptr qvar2+4 ;加高32位,同时加CF 2. 带借位减法指令SBB 目的操作数减去源操作数,再减CF,结果送目的操作数 影响6个状态标志位 SBB dest,src ;dest←dest-src-CF 用于与SUB指令相结合实现多精度数(64位)的减法 先将两个操作数的低32位相减(用SUB指令) 然后减高位部分、并减去借位(用SBB指令) 十进制的调整指令 对二进制运算结果按照十进制运算进行调整 8+9=11H - 17D 压缩BCD码:4个二进制位表示一个十进制位 一个字节表示两个十进制位:00~99 压缩BCD码调整指令:加法DAA和减法DAS 非压缩BCD码:8个二进制位表示一个十进制位 一个字节表示一个十进制位0~9 (ASCII码可以认为是非压缩BCD码) 非压缩BCD码调整指令: 加法AAA、减法AAS、乘法AAM和除法AAD 地址传送指令 LEA 取得存储器操作数的偏移地址 LEA r16/r32,mem ;r16/r32←mem的有效地址EA 与OFFSET的比较 作用相同 LEA指令在指令执行时计算出偏移地址 OFFSET操作符在汇编阶段取得变量的偏移地址 OFFSET无需在执行时计算、指令执行速度更快 微机原理及接口技术 第3章 Intel处理器指令系统及汇编语言 本节要点 字符串操作指令 二维数组 基址变址操作数 相对基址变址操作数 (一)基本字符串操作指令 5组处理字节、字和双字数组的指令,称为基本字符串
文档评论(0)