汇编语言AAM(乘法后的ASCII调整)和AAD(除法之前的ASCII调整)指令

< 上一页AAS指令 压缩十进制运算简介下一页 >

32 位模式下,MUL 执行非压缩十进制乘法,AAM(乘法后的 ASCII 调整)指令转换由其产生的二进制乘积。乘法只能使用非压缩十进制数。

下面的例子实现 5 乘以 6,并调整 AX 中的结果。调整后,AX=0300h,非压缩十进制表示为 30:
.data
AscVal BYTE 05h, 06h
.code
mov bl, ascVal      ;第一个操作数
mov al, [ascVal+1]  ;第二个操作数
mul bl              ;AX = 001Eh
aam                 ;AX = 0300h
同样在 32 位模式下,AAD(除法之前的 ASCII 调整)指令将 AX 中的非压缩十进制被除数转换为二进制,为执行 DIV 指令做准备。

下面的例子把非压缩 0307h 转换为二进制数,然后除以 5。DIV 指令在 AL 中生成商 07h,在 AH 中生成余数 02h:
.data
quotient BYTE ?
remainder BYTE ?
.code
mov ax, 0307h         ; 被除数
aad                   ; AX = 0025h
mov bl, 5             ; 除数
div bl                ; AX = 0207h
mov quotient,al
mov remainder,ah
< 上一页AAS指令 压缩十进制运算简介下一页 >

编程帮,一个分享编程知识的公众号。跟着站长一起学习,每天都有进步。

通俗易懂,深入浅出,一篇文章只讲一个知识点。

文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。

文章不涉及代码,不烧脑细胞,人人都可以学习。

当你决定关注「编程帮」,你已然超越了90%的程序员!

编程帮二维码
微信扫描二维码关注