26、整数运算:从基础指令到编程实践

整数运算:从基础指令到编程实践

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
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值