整数运算:从基础指令到编程实践
1. 非压缩十进制整数运算指令
1.1 AAS 指令
在 32 位模式下,AAS(减法后 ASCII 调整)指令跟在 SUB 或 SBB 指令之后,用于将一个非压缩十进制值从另一个中减去,并将结果存储在 AL 中,使 AL 中的结果与 ASCII 数字表示一致。只有当减法产生负结果时才需要调整。例如:
.data
val1 BYTE '8'
val2 BYTE '9'
.code
mov ah,0
mov al,val1 ; AX = 0038h
sub al,val2 ; AX = 00FFh
aas ; AX = FF09h
pushf ; save the Carry flag
or al,30h ; AX = FF39h
popf ; restore the Carry flag
在 SUB 指令之后,AX 等于 00FFh。AAS 指令将 AL 转换为 09h,并从 AH 中减去 1,将其设置为 FFh 并设置进位标志。
1.2 AAM 指令
在 32 位模式下,AAM(乘法后 ASCII 调整)指令将 MUL 产生的二进制乘积转换为非压缩十进制。乘法只能使用非压缩十进制。例如:
.data
AscVal BYTE 05h,06h
.code
mov bl,ascVal ; first operand
mov al,[ascVal+1] ; s
超级会员免费看
订阅专栏 解锁全文
1707

被折叠的 条评论
为什么被折叠?



