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

    三、十进制数算术运算调整指令

    8086,8088中使用BCD码表示十进制数

    BCD码可分为压缩的BCD码和非压缩的BCD码。(组合BCD码和非组合BCD码)。

    压缩的BCD码一个字节含两位BCD码,

    非压缩的BCD码一个字节也含两位BCD码,但高4位的BCD码无意义,不使用。

    1.组合BCD码加法调整指令: DAA

    格式: DAA

    操作: 对AL中的和进行调整,调整如下:

    1) 如果低四位在A~F之间,或AF标志位为1,则(AL) <—(AL+06H), AF标志位置为1

    2) 如果高四位在A~F之间,或CF标志位为1,则(AL) <—(AL+60H), CF标志位置为1

    该指令影响标志位为AF, CF, PF, ZF,不影响其他标志位

    例:

    MOV AL, 34H  ; AL=34H

    ADD AL, 47H  ; AL=7BH, AF=0, CF=0

    DAA          ; AL=81H, AF=1, CF=0

    ADC AL, 87H  ; AL=08H, AF=0, CF=1

    DAA          ; AL=68H, AF=0, CF=1

    ADC AL, 79H  ; AL=E2H, AF=1, CF=0

    DAA          ; AL=48H, AF=1, CF=1

    例:

    (BCD3)<—(BCD1)+(BCD2)

    (BCD1)=34H, (BCD1+1)=18H, (BCD2)=89H, (BCD2+1)=27H

    指令:

    MOV AL, BCD1

    ADD AL, BCD2

    DAA

    MOV BCD3, AL

    MOV AL, BCD1+1

    ADC AL, BCD2+1

    DAA

    MOV BCD3+1, AL

    2.压缩BCD码减法调整指令DAS

    本指令对AL中的差进行调整,调整如下:

    1) 如果AL低4位在A~F之间或AF=1,则(AL)=(AL)-06H

    2) 如果AL高4位在A~F之间或CF=1,则(AL)=(AL)-60H

    标志位影响与DAA相同

    例:

    MOV AL, 45H  ; AL=45H

    SUB AL, 27H  ; AL=1EH, AF=1, CF=0

    DAS          ; AL=18H, AF=1, CF=0

    SBB AL, 49H  ; AL=CFH, AF=1, CF=1

    DAS          ; AL=69H, AF=1, CF=1

    例:

    (BCD1)=1234, (BCD2)=4612

    完成(BCD3)=(BCD1)-(BCD2)

    指令:

    MOV AL, BCD1

    SUB AL, BCD2

    DAS

    MOV BCD3, AL

    MOV AL, BCD1+1

    SBB AL, BCD2+1

    DAS

    MOV BCD3+1, AL

  • 相关阅读:
    最近相对闲点,写个笔记2
    最近相对闲点,写个笔记
    ORACLE 调优
    静态工厂方法与构造函数 创建类 区别
    组合与继承 区别
    Java异常
    abstract class 和 interface 区别
    java中的io系统详解
    Tomcat Apache 区别
    Vmware 下的网络模式配置
  • 原文地址:https://www.cnblogs.com/hailong/p/1932292.html
Copyright © 2011-2022 走看看