zoukankan      html  css  js  c++  java
  • 汇编学习笔记40

    二、未组合BCD码算术运算调整指令

    1.未组合BCD码的加法指令调整指令: AAA

    指令格式: AAA

    本指令对在AL中的由两个未组合BCD码相加后的结果进行调整,产生一个未组合BCD码

    调整方法如下:

    1) 如果AL中低4位在0~9之间,且AF=0,转入3)

    2) 如果AL的低4位在A~F之间,或AF=1,则(AL)=(AL)+6, (AH)=(AH)+1, AF=1

    3) 清除AL的高4位

    4) AF的值送入CF

    该指令影响标志位AF和CF,对其他标志位无定义。

    例:

    MOV AX, 7

    ADD AL, 6   ; AL=0DH, AH=00H, AF=0, CF=0

    AAA         ; AL=03H, AH=01H, AF=1, CF=1

    ADC AL, 5   ; AL=09H, AH=01H, AF=0, CF=0

    AAA         ; AL=09H, AH=01H, AF=0, CF=0

    ADD AL, 39H ; AL=42H, AH=01H, AF=1, CF=0

    AAA         ; AL=08H, AH=02H, AF=1, CF=1

    2. 未组合BCD码的减法指令调整指令 AAS

    指令格式: AAS

    本指令对在AL中的两个未组合BCD码相减所得的差进行调整,产生一个未组合BCD码

    调整方法如下:

    1) 如果AL中的低4位在0~9之间,且AF=0,则转入3)

    2) 如果AL中的低4位在A~F之间或AF=0,则 (AL)=(AL)-6, (AH)=(AH)-1, AF=1

    3) 清除AL的高4位

    4) AF的值送入CF

    该指令影响标志位AF和CF,对其他标志位无定义

    例:

    MOV AL, 34H

    SUB AL, 09H   ; AL=2BH, AF=1, CF=0

    AAS           ; AL=05H, AF=1, CF=1

    3. 未组合BCD码乘法指令调整指令  AAM

    指令格式: AAM

    本指令对存放在AL中的积(由两个未组合BCD码相乘产生)进行调整,产生两个未组合的BCD码。

    调整方法如下:

    把AL中的值除以10, 商放在AH中,余数放在AL中。

    该指令影响标志位SF, ZF, PF, 对其他标志位无影响。

    MOV AL, 03H

    MOV BL, 04H

    MUL BL         ; AL=0CH, AH=00H

    AAM            ; AL=02H, AH=01H

    4. 未组合BCD码除法指令调整指令 AAD

    指令格式: AAD

    本指令与其他调整指令在使用顺序上不同。本指令在调用除运算指令之前调用。把存放在AH和AL中的两位未组合BCD码调整为一个二进制数存放在AL中。

    调整方法为:

    (AL)=(AL)+10*(AH), (AH)=0

    由于上述调整,存放在AL和AH中的非组合BCD码的高4位应为0,该指令影响标志位SF, ZF, PF, 对其他标志位无影响

    例:

    MOV AH, 04H

    MOV AL, 03H

    MOV BL, 08H

    AAD           ; AL=2BH, AH=00H

    DIV BL        ; AL=05H, AH=03H

    例: 写出(DX)=UP1+UP2-UP3

    MOV AX, 0

    MOV AL, UP1

    ADD AL, UP2

    AAA

    MOV DL, AL

    MOV AL, UP1+1

    ADC AL, UP2+1

    AAA

    XCHG AL, DL

    SUB AL, UP3

    AAS

    XCHG AL, DL

    SBB AL, UP3+1

    AAS

    MOV DH, AL

  • 相关阅读:
    bzoj 1053
    bzoj 1004 组合
    字符串哈希
    bzoj 1015 并查集
    bzoj 1003 最短路+dp
    HDU 4352 数位dp
    bzoj 1879 状压dp
    codeforces 55D 数位dp
    Codeforces 830B
    组合计数 && Stirling数
  • 原文地址:https://www.cnblogs.com/hailong/p/1934002.html
Copyright © 2011-2022 走看看