ASCII 和 未压缩十进制整数算术指令 ASCII and Unpacked Decimal Arithmetic

                                未压缩的十进制数字3412             ASCII    '3412'就是字符

在内存中的表示    03 04 01 02h                                   33 34 31 32h

对乘法和除法调整只能用于 未压缩十进制数

AAA ---ASCII adjust after addition  直接对字符数字进行+   然后用该指令调整

mov    ah,0
mov    al,'8'          ;ax=0038h
add    al,'2'          ;ax=006Ah
aaa                    ;ax=0100h
or     ax,3030h        ;ax=3130h='10'

AAS ---ASCII adjust after subtraction
.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           ;保存进位标志
or   al,30h     ;ax=ff39h
popf            ;恢复进位标志


AAM ---ASCII adjust after multiplication

.data
val byte 05h,06h
.code
mov  bl,val
mov  al,val+1
mul  bl        ;ax=001eh
aam            ;ax=0300h   将二进制转成十进制整数


AAD ---ASCII adjust before division

.data
quotient   byte ?
remainder  byte ?
.code
mov  ax,0307h     ;ax=0307h
aad               ;ax=0025h  将十进制整数转成二进制
mov  bl,5
div  bl
mov  quotient,al
mov  remainder,ah


你可能感兴趣的:(Assembly)