332算术运算指令内容摘要:

转向。 举例: 比较 AL、 BL、 CL中 带 符号数 的大小,将 最小数放在 AL中。 程序: CMP AL,BL ; AL和 BL比较 JNG BBB ; 若 AL≤BL, 则转 XCHG AL,BL ; 若 AL> BL,则交换 BBB: CMP AL,CL ; AL和 CL比较 JNG CCC ; 若 AL≤CL, 则转 XCHG AL,CL ; 若 AL> CL,则交换 CCC: HLT 思考 : 程序的结果 ? (AL、 BL、 CL中数据的大小顺序 ) 23 进行乘法时: 8位  8位 → 16 位乘积 (即 AL  mem8/reg8 → AX) 16位  16位 → 32 位乘积 (即 AX  mem16/reg16 → DX AX) (1) 无符号数 的乘法指令 MUL mem/reg 格式: MUL src 操作:字节操作数 (AX)  (AL) (src) 字操作数 (DX, AX)  (AX) (src) 指令例子: MUL BL ; (AL) (BL),乘积在 AX中 MUL CX ; (AX) (CX),乘积在 DX,AX中 MUL BYTE PTR[BX] 3. 乘法指令 24 格式与 MUL指令类似,只是要求两操作数均为 有符号数。 指令例子: IMUL BL ; (AX)←(AL) (BL) IMUL WORD PTR[SI] ; (DX,AX)←(AX) ([SI+1][SI]) (2) 有符号数 乘法指令 IMUL 注意: MUL/IMUL指令中 ● AL(AX)为隐含的乘数寄存器; ● AX(DX,AX)为隐含的乘积寄存器; ● SRC不能为 立即数 ; ● 除 CF和 OF外,对 其它 标志位无定义。 25 MUL/IMUL乘法指令对 CF/OF的影响: 00 乘积的高一半为零 11 否则 MUL指令 : CF/OF = 00 乘积的高一半是低一半的符号扩展 11 否则 IMUL指令 : CF/OF = 例: (AL) = A5H(5B), (BL) = 11H (1) IMUL BL。 (AX)  (AL) (BL)。 A5 11  5B 11=060B  F9F5。 (AX) = F9F5H CF=OF=1 (2) MUL BL。 (AX)  (AL) (BL)。 A5 11= 0AF5。 (AX) = 0AF5H CF=OF=1 26 4. 除法指令 进行除法时: 16位 /8位 → 8位商及 8位余数 32位 /16位 → 16位商及 16位余数 对被除数、商及余数存放有如下规定: 被除数 商 余数 字节除法 AX AL AH 字除法 DX:AX AX DX 27 格式: DIV src 操作:字节操作 (AL)  (AX) / (src) 的商 (AH)  (AX) / (src) 的余数 字操作 (AX)  (DX, AX) / (src) 的商 (DX)  (DX, AX) / (src) 的余数 指令例子: DIV CL DIV WORD PTR[BX] 注: 若除数为零或 AL中商大于 FFH(或 AX中商大于FFFFH),则 CPU产生一个类型 0的内部中断。 (1) 无符号数 除法指令 DIV 28 (2) 有符号数 除法指令 IDIV 格式: IDIV src 操作与 DIV类似。 商及余数均为有符号数 ,且余数符号总是与被除数符号相同。 CBW与 CWD两指令主要用于被除数扩展 注意 : 对于 DIV/IDIV指令 • AX(DX,AX)为隐含的被除数寄存器。 • AL(AX)为隐含的商寄存器。 • AH(DX)为隐含的余数寄存器。 • src不能为 立即数。 • 对所有 FLAGS的状态 标志位均 无定义。 29 • 运算要求被除数字长是除数字长的两倍 ,若不满足则需 对被除数进行扩展 ,否则产生错误。 8位 16位 16位 32位 ALAX( AH AL) AXDX AX • 对 无符号数 除法扩展,只需将 AH或 DX清。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。