目录

  • 1 项目一 单片机基础知识
    • 1.1 单片机概述
    • 1.2 51系列单片机的结构组成
    • 1.3 单片机存储结构
    • 1.4 单片机I/O口及编程语言
  • 2 项目二 单片机编译软件使用及仿真
    • 2.1 单片机编译软件的使用及电路仿真
    • 2.2 任务1 汽车“双闪”灯控制系统设计
  • 3 项目三 单片机循环彩灯制作
    • 3.1 知识准备:数制及编码
    • 3.2 任务1 循环彩灯的简易控制
    • 3.3 任务2 人工可干预的循环彩灯控制
  • 4 项目四 简易计算器设计与制作
    • 4.1 知识准备:算术指令
    • 4.2 任务1 简易计算机的制作
  • 5 项目五 简易秒表设计与制作
    • 5.1 知识准备:七段数码管控制
    • 5.2 知识准备:十进制数调整指令
    • 5.3 任务1 秒表系统电路设计
  • 6 项目六 交通灯控制系统设计
    • 6.1 知识准备:交通灯发展史
    • 6.2 知识准备:单片机定时/计数器
    • 6.3 任务  交通灯控制系统设计
      • 6.3.1 任务1 交通信号灯驱动电路设计
      • 6.3.2 任务2  信号灯倒计时显示电路设计
      • 6.3.3 任务3 交通灯控制系统调试
  • 7 项目七 单片机中断控制应用
    • 7.1 知识准备:中断系统概念及结构
    • 7.2 知识准备:中断控制
    • 7.3 任务1  可中断控制的循环彩灯系统
    • 7.4 任务2 门铃(音乐)芯片的制作
  • 8 项目八 单片机串行口应用
    • 8.1 知识准备:51系列单片机串行通信
    • 8.2 知识准备:串行通信的程序设计
      • 8.2.1 常用的串行D/A转化器-MAX538
      • 8.2.2 常用的串行A/D转换器-MAX187
    • 8.3 任务1 单片机双机通信
  • 9 实训讲义
    • 9.1 单片机实训讲义
知识准备:十进制数调整指令

                  十进制数调整指令

1、ASCII码除调整指令AAD(Ascii Adjust After Division)

该指令是在作除法前用于调整寄存器AH和AL之值,它是把二个寄存器中单BCD码组成一个十进制数值,为下面的除法作准备的。其调整规则如下:

AL←AH*10+AL,AH←0

指令的格式:

AAD

受影响的标志位:PF、SF和ZF(AF、CF和OF等都是无定义)

例如:

 MOV AX, 0502H

 MOV BL, 10D

 AAD ;AH=0, AL=52D

 DIV BL ;AH=2(余数), AL=5(商)

2、十进制数加调整指令DAA(Decimal Adjust After Addition)

该指令是用于调整AL的值,该值是由指令ADD或ADC运算二个压缩型BCD码所得到的结果。压缩型BCD码是一个字节存放二个BCD码,低四位和高四位都是一个BCD码。

其调整规则如下:

如果AL的低四位大于9,或标志位AF=1,那么,AL=AL+6,并置AF=1;

如果AL的高四位大于9,或CF=1,那么,AL=AL+60H,并置CF=1;

如果以上两点都不成立,则,清除标志位AF和CF。

经过调整后,AL的值仍是压缩型BCD码,即:二个压缩型BCD码相加,并进行调整后,得到的结果还是压缩型BCD码。

指令的格式:

DAA

受影响的标志位:AF、CF、PF、SF和ZF(OF无定义)

例如:

 MOV AL, 43H

 MOV BL, 29H

 ADD AL, BL ;AL=6BH,其不是压缩型的BCD码,因为低四位'B'不是BCD码

 DAA ;调整后,AL=72H,这是压缩型的BCD码,也有:43+29=72

3、十进制数减调整指令DAS(Decimal Adjust After Subtraction)

该指令也是用于调整AL的值,该值是由指令SUB或SBB运算二个压缩型BCD码所得到的结果。其调整规则如下:

如果AL的低四位大于9,或标志位AF=1,那么,AL=AL-6,并置AF=1;

如果AL的高四位大于9,或CF=1,那么,AL=AL-60H,并置CF=1;

如果以上两点都不成立,则,清除标志位AF和CF。

经过调整后,AL的值仍是压缩型BCD码,即:二个压缩型BCD码相减,并进行调整后,得到的结果还是压缩型BCD码。

指令的格式:DAS

受影响的标志位:AF、CF、PF、SF和ZF(OF无定义)

例如:

 MOV AL, 43H

 MOV BL, 29H

 SUB AL, BL ;AL=1AH,其不是压缩型的BCD码,因为低四位'A'不是BCD码

DAS ;调整后,AL=14H,这是压缩型的BCD码,也有:43-29=14