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

  • 相关阅读:
    初窥RabbitMQ消息中间及SpringBoot整合
    博客园页面嵌入左下角小女孩
    不依赖Spring使用AspectJ达到AOP面向切面编程
    彻底搞懂计算机网络通信设备与协议
    博客园如何嵌入网易云音乐播放器
    并发编程之详解InheritableThreadLocal类原理
    2小时学会Spring Boot(IDE:eclipse)
    $.Ajax、$.Get、$.Post代码实例参数解析
    设计模式之空对象模式
    设计模式之黑板模式
  • 原文地址:https://www.cnblogs.com/hailong/p/1934002.html
Copyright © 2011-2022 走看看