单片机教程之第5章 汇编语言程序设计
单片机-第五章 单片机中断系统

(1)CPU正在执行一个同级或高优先级的中断服务程序; (2)正在执行的指令尚未执行完; (3)正在执行中断返回指令RETI或者对寄存器IE、IP进 行读/写的指令。 CPU在执行完上述指令之后,要再执行一条指令,才 能响应中断请求。
二、中断响应过程 从中断请求发生直到被响应,准备去执行中断服务程 序,此过程即中断响应过程。中断响应过程一般包括如下几 个阶段: 1、中断采样并置位 中断采样过程:CPU在每个机器周期S5P2期间顺序对 中断源采样、置中断标志。 2、查询标志 在中断采样后的下一个周期的S6按优先级顺序查 询中断标志。
第5章 MCS-51单片机中断系统
5.1.1中断的概念
单片机系统中,CPU和外部设备之间不断进行信息的传 输。通常CPU和外设之间的信息传送方式有以下几种: 程序控制方式 中断方式 直接存储器存取(DMA)方式
1、 程序控制方式 可以分为以下两种方式。 (1)无条件传送方式 外设始终处于就绪状态,CPU不必查询外设的状 态,直接进行信息传输,称为无条件传送方式。 此种信息传送方式只适用于简单的外设。如开 关和数码段显示器等。
三、中断响应的时间
一般来说,中断的响应时间最短为3个机器周期,最长 为8个机器周期。 一般中断请求标志位查询占1个机器周期。而机器周期 又恰好是指令的最后一个机器周期。执行此指令后,CPU 将响应中断,产生硬件长调用指令。 长调用LCALL指令需要2个机器周期。这样,中断响应 时间为3个机器周期。
是不可寻址的
在同级的几个中断源中同时发生请求时, 内部对同级的各中断源的优先级别有一个规 定的查询顺序: 自然优先级
外部中断请求 INT0 最高 定时/计数器 T0 外部中断请求 INT1 定时/计数器 T1 串行口 UART 最低 定时/计数器 T2
单片机原理及应用教程(C语言版)-第5章 MCS-51单片机的中断系统

5.2.5 中断允许控制
例5-1 假设允许INT0、INT1、T0、T1中断,试 设置IE的值。 (2)汇编语言程序 按字节操作: MOV IE,#8FH 按位操作: SETB EX0 ;允许外部中断0中断 SETB ET0 ;允许定时器/计数器0中断 SETB EX1 ;允许外部中断1中断 SETB ET1 ;开定时器/计数器1中断 SETB EA ;开总中断控制位
IP (B8H)
D7 —
D6 D5 D4 D3 D2 D1 D0 — PT2 PS PT1 PX1 PT0 PX0
PT2:定时器/计数器T2的中断优先级控制位 PT2设置1则T2为高优先级,PT2设置0则T2为 低优先级。 后面各位均是如此,设置1为高优先级,设置0 为低优先级,不再一一赘述。 PS:串行口的中断优先级控制位。 PT1:定时器/计数器1的中断优先级控制位。 PX1:外部中断1的中断优先级控制位。 PT0:定时器/计数器0的中断优先级控制位。 PX0:外部中断0的中断优先级控制位。
5.2.4 中断请求标志
4.定时器/计数器T2中断请求标志
T2CON D7 D6 D5 (C8H) TF2 EXF2 D4 D3 D2 D1 D0
EXF2:定时器/计数器2的外部触发中断请求标志 位。T2以自动重装或外部捕获方式定时、计数,当 T2EX(P1.1)引脚出现负跳变时,TF2由硬件置1, 向CPU请求中断,CPU响应中断后,EXF2不会被硬 件清0,需要在程序中以软件方式清0。
5.2.3 外中断触发方式
TCON格式如下:
D7 D6 D5 D4 D3 D2 D1 D0
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
IT0=1,外中断0为下降沿触发 CPU在每一个机器周期的S5P2期间对P3.2引 脚采样,若上一个机器周期检测为高电平,紧挨着 的下一个机器周期为低电平,则使IE0置1。 IT1:外中断1触发方式控制位。功能同IT0
单片机实用教程_5 89C51单片机汇编语言程序设计

;除以100得百位数
;余数除以10得十位数 ;余数为个位数
5.4.2 分支结构程序设计 程序分支是通过条件转移指令实现的,满足条件 则进行程序转移,不满足条件就顺序执行程序。 分支程序又分为单分支和多分支结构。 通过条件判断实现单分支程序转移的指令有: JZ、JNZ、CJNE、DJNZ等。 以位状态作为条件进行程序分支的指令有: JC、JNC、JB、JNB、JBC等。 完成0, 1, 正, 负以及相等,不等作为条件判断。 多分支程序根据条件判断,分别转移去执行不 同的程序,有散转指令“JMP @A+DPTR” 。
第5章 89C51单片机 汇编语言程序设计
汇编语言进行程序设计是面向过程 设计的典型方法,也是程序设计最基本 的能力体现。本章介绍89C51汇编语言 程序设计的方法和一些实用程序。
5.1 汇编语言语句的类型和组成 5.1.1 汇编语言
汇编语言: 用指令的助记符、符号地址、标号等符 号书写程序的编程语言。 源程序: 用汇编语言编写的程序为汇编语言源程序.
[标号:] 操作码 [目的操作数, 源操作数] [;注释]
其中: 方括号[ ]的部分为可选项, 可有可无, 随指令而异. 字段之间要用分隔符(空格,冒号,逗号,分号)分开.
⑴. 标号
标号位于语句的开始, 代表该语句的地址(符号地址) 标号由1-8个字母和数字组成, 由字母打头, 以冒号结 尾。不能使用指令助记符、寄存器名、伪指令等。 每个语句标号可用可不用。转移指令可以标号作为 指令的目标地址, 汇编中自动计算出转移的偏移量。 标号可以用赋值伪指令来赋值。
ORG 0000H LJMP CMPT ORG 1000H CMPT: MOV A,30H JNB ACC.7,NCH MOV C,ACC .7 CPL A ADD A,#1 MOV ACC.7,C NCH: MOV 31H,A SJMP $ END
单片机原理及应用第五章汇编语言程序设计

开始
1
Y
N
?
第五章 汇编语言程序设计
5-1-3 评价程序质量的标准 (1)程序的执行时间。 (2)程序所占用的内存字节数。 (3)程序的逻辑性、可读性。 (4)程序的兼容性、可扩展性。 (5)程序的可靠性。
5-2 顺序程序 直线程序又称简单程序,程序走向只有一条路径。 例1 双字节变补程序(设数据在R4 R5中)双字节变补程序(设数据在R4R5中): MOV A,R5 ;取低字节 CPL A ADD A,#1 ;低字节变补 MOV R5,A MOV A,R4 ;取高字节 CPL A ADDC A,#0 ;高字节变补 MOV R4,A
第五章 汇编语言程序设计
循环控制方法:计数控制、特征标志控制。 一.计数控制: 设循环计数器,控制循环次数。正计数和倒计数两种方式。 例:为一串7位ASCII码数据的D7位加上奇校验,设数据存放在片外RAM的2101H起始单元,数据长度在2100H单元。 MOV DPTR,#2100H MOVX A,@DPTR MOV R2,A NEXT:INC DPTR MOVX A,@DPTR ORL A,#80H JNB P,PASS ;判断是否加校验 MOVX @DPTR,A;是,则加奇校验 PASS:DJNZ R2,NEXT DONE:SJMP DONE
第五章 汇编语言程序设计
参考程序: JMPN:MOV DPTR,#PRGTBL;DPTR指向表首址 MOV A,R7 ;取地址代号高8位 MOV B,#3 ; MUL AB ;×3 ADD A,DPH ; MOV DPH,A ;修改指针高8位 MOV A,R6 ;取地址代号低8位 MOV B,#3 ;×3 MUL AB ; XCH A,B ;交换乘积的高低字节 ADD A,DPH ;乘积的高字节加DPH MOV DPH,A XCH A,B ;乘积的低字节送A JMP @A+DPTR ;散转
No.5C51程序设计

– 指定存储区的指针
• 指定存储区的指针在指针的声明中经常包含一个 存储类型标识符指向一个确定的存储区。 • 例如: char data *str; int xdata *ptr; long code *tab;
• 指定存储区指针存放时不再像通用指针那样需 要保存存储类型,指向idata、data 、bdata 和pdata存储区的指针只需要一个字节存放, 而code和xdata指针也才需要两字节。从而减 少了指针长度,节省了存储空间。
– 如:sfr16 TL0=0x8A;
– 特殊功能寄存器中特定位的定义
• 在C51中可以利用关键字sbit定义可独立寻址访问 的位变量
• 对一般位变量的定义
– 当位变量位于内部RAM的可位寻址区(20H~2FH 单元)时,可以利用C51编译器提供的bdata存储器 类型进行访问 – 带有bdata类型的变量可以进行字节或位寻址,用 sbit指定bdata变量的相应位后就可以进行位寻址。
– 考虑存储器结构 – 正确使用片内外RAM、特殊功能寄存器 – 正确处理接口芯片收发数据 – 不需要具体组织和分配存储器资源 – 结构模块化,思路与思维相同 – 但要与单片机结构相关联,否则不能正确映射
• C程序:
• C51:
– – – –
自动完成存储单元分配(内定义) 可编制常见接口芯片通用驱动函数 可采用模块化设计应用程序 加快开发速度
var=XBYTE[0x8000]; 头文件内定义的函数 XBYTE[0x8000]=0x21;
P71
– 例如:unchared xdta xram[0x8000]_at_0x1000; //在外部RAM1000H开始定义了一个一维数组
第5章 MCS-51单片机的程序设计

X + 1, X > 0 Y = 0, X = 0 1, X < 0
5.3.4 循环程序
循环程序一般由如下四部分组成: 循环程序一般由如下四部分组成: ①初始化部分:用来设置循环初值,包括预置变量、计数器和数据指针 初始化部分:用来设置循环初值,包括预置变量、 初值,为实现循环做准备。 初值,为实现循环做准备。 ②循环处理部分:要求重复执行的程序段,是程序的主体,称为循环体。 循环处理部分:要求重复执行的程序段,是程序的主体,称为循环体。 循环体既可以是单个指令,也可以是复杂的程序段,通过它可完成对数据 循环体既可以是单个指令,也可以是复杂的程序段, 进行实际处理的任务。 进行实际处理的任务。 ③循环控制部分:控制循环次数,为进行下一次循环而修改计数器和指 循环控制部分:控制循环次数, 针的值,并检查该循环是否已执行了足够的次数。也就是说, 针的值,并检查该循环是否已执行了足够的次数。也就是说,该部分用条 件转移采控制循环次数和判断循环是否结束。 件转移采控制循环次数和判断循环是否结束。 ④循环结束部分:分析和存放结果。 循环结束部分:分析和存放结果。
√ × 机器汇编
√
√
×
√
×
√
×
5.3.1 16位加减法程序 位加减法程序
位二进制数分别存放在R1R0和R3R2中,试求其和, 例5-1:已知两个 位二进制数分别存放在 :已知两个16位二进制数分别存放在 和 中 试求其和, 并将结果存入R1R0中。 中 并将结果存入 汇编语言程序: 汇编语言程序: ORG CLR R1 R3 R1 R0 R2 R0 MOV ADD MOV MOV ADDC MOV SJMP END 0000H C A,R2 A,R0 R0,A A,R3 A,R1 R1,A $
单片机汇编语言程序设计

6.定义空间指令DS
指令格式:
地址
ROM
[标号:]DS <表达式>
2000H
说明:DS伪指令是定义存储区,即从标
2001H 号指定的单元开始保留表达式所代表的
存储单元数。
2002H
【例】
2003H
ORG 2000H
单片机汇编语言程序设计
单片机汇编语言程序设计
1.1 源程序的编辑与汇编
1.源程序的编辑 源程序的编写要依据80C51汇编语言的基本规则,特别要用好常用
的汇编命令(即伪指令),例如: ORG 0040H MOV A,#7FH MOV R1,#44H END
这里的ORG和END是两条伪指令,其作用是告诉汇编程序此汇编源程 序的起止位置。编辑好的源程序应以.ASM扩展名存盘,以备汇编程序调 用。
这里使用的“字符名称”不是标号,不能用“:”来隔分隔符;其 中的“项”可以是一个数值,也可以是一个已经有定义的名字或可以求 值的表达式。该指令的功能是将一个数或特定的汇编符号赋予规定的字 符名称。用EQU指令赋值的字符名称可以用做数据地址、代码地址、位 地址或直接当做一个立即数使用。因此,给字符名称所赋的值可以是8 位二进制数,也可以是16位二进制数。
置循环初值
置循环初值
循环体
N 循环条件? Y
循环条件? Y
N 循环体
(a)先处理后判断方式
(b)先判断后处理方式
4.子程序结构 在汇编语言程序设计时,通过循环程序可以解决连续重复执行同
一程序段的问题,而对于不连续重复执行同一程序段的问题,为避免 重复编制程序,节省程序代码所占的存储空间,可将其编制成独立的 程序即子程序,在需要的位置采用特定的指令调用该子程序,执行后 再返回到调用位置继续执行后序程序指令。子程序调用是实现I/O操 作的重要方法。
C51单片机汇编语言程序设计

C51单片机汇编语言程序设计一、二进制数与十六进制数之间的转换1、数的表达方法为了方便编程时书写,规定在数字后面加一个字母来区别,二进制数后加B十六进制数后加H。
2、二进制数与十六进制数对应表二进制十六进二进制制0000000100100011010001010110011101234567100010011010101111001101 11101111十六进制89ABCDEF3、二进制数转换为十六进制数转换方法为:从右向左每4位二进制数转化为1位十六进制数,不足4位部分用0补齐。
例:将(1010000110110001111)2转化为十六进制数解:把1010000110110001111从右向左每4位分为1组,再写出对应的十六进制数即可。
0101000011011000111150D8F答案:(1010000110110001111)2=(50D8F)16例:将1001101B转化为十六进制数解:把10011110B从右向左每4位分为1组,再写出对应的十六进制数即可。
100111109E答案:10011110B=9EH4、十六进制数转换为二进制数转换方法为:将每1位十六进制数转换为4位二进制数。
例:将(8A)16转化为二进制数解:将每位十六进制数写成4位二进制数即可。
8A10001010答案:(8A)16=(10001010)2例:将6BH转化为二进制数解:将每位十六进制数写成4位二进制数即可。
6B01101011答案:6BH=01101011B二、计算机中常用的基本术语1、位(bit)计算机中最小的数据单位。
由于计算机采用二进制数,所以1位二进制数称作1bit,例如110110B为6bit。
2、字节(Byte,简写为B)8位的二进制数称为一个字节,1B=8bit3、字(Word)和字长两个字节构成一个字,2B=1Word。
字长是指单片机一次能处理的二进制数的位数。
如AT89S51是8位机,就是指它的字长是8位,每次参与运算的二进制数的位数为8位。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本章介绍程序设计的基本知识及如何使用汇编 语言来进行基本的程序设计。 语言来进行基本的程序设计。 5.1 概述 按照语言的结构及其功能可以分为三种: 按照语言的结构及其功能可以分为三种:
1.机器语言:用二进制代码表示指令和数据。 .机器语言:用二进制代码表示指令和数据。 2.汇编语言:用助记符表示指令含义,面向机器。 .汇编语言:用助记符表示指令含义,面向机器。 3.高级语言:面向过程且独立于计算机硬件结构之 .高级语言: 目前单片机开发中常用的高级语言是C语言 语言。 外,目前单片机开发中常用的高级语言是 语言。
伪指令
5.DW(Define Word)定义数据字命令 . ( )
从指定的地址开始, 从指定的地址开始,在程序存储器的连续单元中定 双字节)的数据字 义16位(双字节 的数据字。例如: 位 双字节 的数据字。例如: ORG 2000H DW 1246H,7BH,10 , ,
汇编后: 汇编后:
(2000H)=12H ) (2002H)=00H ) (2004H)=00H ) (2001H)=46H ;第1个字 ) 个字 (2003H)=7BH;第2个字 ) ; 个字 (2005H)=0AH; )
例5.10 已知80C51单片机使用的晶震频率是 已知 单片机使用的晶震频率是 6MHz,要求设一一个软件延时程序,延时 ,要求设一一个软件延时程序, 10ms。 。
机器周期是2us,DJNZ指 指 机器周期是 MOV R0,#0AH 令是双周期指令, 令是双周期指令,一个 DL2:MOV R1,#125 DJNZ指令用时 ,需 指令用时4us, 指令用时 DL1:NOP 内重循环 要执行2500次就延时 要执行 次就延时 10ms。80C51是8位机, 位机, 。 是 位机 NOP 一次8微妙 循环125次 循环控制变量最大值是 DJNZ R1,DL1 255,所以要采用双重循 , 环。如果增加一次循环执 DJNZ R0,DL2 行的时间, 行的时间,还可以减少循 环的次数。 环的次数。 只考虑内重循环体的延时,则延时时间为: × 只考虑内重循环体的延时,则延时时间为:8×125us×10=10ms × = 考虑所有指令的延时,延时为: + + × 考虑所有指令的延时,延时为:2+(2+8×125+4)×10= + × = 10062us
养成在程序的适当位置上加上注释的好习惯。 养成在程序的适当位置上加上注释的好习惯。
(6)上机调试,修改完善源程序。 )上机调试,修改完善源程序。
5.2 顺序与循环程序设计
5.2.1顺序程序设计 顺序程序设计
单元的2个 例5.8 将20H单元的 个BCD码拆开并变成 单元的 码拆开并变成 ASCII码存入 码存入21H、22H单元。 单元。 码存入 、 单元 ASCII码0~9为30H~39H。 码 ~ 为 ~ 。 实现过程是,取出20H的低 位(1个BCD 的低4位 实现过程是,取出 的低 个 ),将它放到一个字节中 将它放到一个字节中, 码),将它放到一个字节中,再将其转换为 相应的ASCII码,方法就是再该数值基础上加 相应的 码 上30H,然后将这个数存入 ,然后将这个数存入22H。然后取出 。 20H的高 位,放入一个字节(放到低4位), 的高4位 放入一个字节(放到低 位 的高 将其加上30H,然后将结果放到 将其加上 ,然后将结果放到21H。 。
汇编语言的格式
(2)工作寄存器和特殊功能寄存器: 2 工作寄存器和特殊功能寄存器 工作寄存器和特殊功能寄存器: 可以用代号表示,也可以是位代号。 可以用代号表示,也可以是位代号。 特殊功能寄存器可以用寄存器的地址表示。 特殊功能寄存器可以用寄存器的地址表示。 (3)美元符号“$”: 美元符号“ : 3 美元符号 常在转移指令中使用,表示该指令所在的地址 该指令所在的地址。 常在转移指令中使用,表示该指令所在的地址。 如:SJMP $ 相当于 HERE:SJMP HERE
5.1.2 汇编语言的规范
汇编语言有两种基本类型: 汇编语言有两种基本类型:指令语句和伪 指令语句 (1)指令语句 )
每一条指令语句在汇编时都产生相应的指令 代码(机 是为汇编服务的。在汇编时没有机器代码与 之对应。 之对应。
1. 汇编语言源程序的格式
伪指令
6.BIT 定义位地址指令 .
位地址(Q4 BIT P2.2) 字符名称 BIT 位地址 第一前边字符和后边位地址等价。 第一前边字符和后边位地址等价。
7. DATA定义标号数值伪指令 定义标号数值伪指令
表达式(MN DATA 3000H) 字符名称 DATA 表达式 它于EQU的区别是可以先使用后定义,后边只能是数值。 的区别是可以先使用后定义, 它于 的区别是可以先使用后定义 后边只能是数值。
汇编语言的格式
2.操作码字段:是不能空缺的,是指令或伪指 操作码字段:是不能空缺的, 令的助记符,用来表示指令的操作性质。 令的助记符,用来表示指令的操作性质。 操作数字段: 3.操作数字段:
给出的是参加运算(或其他操作 的数据或数据的地址 给出的是参加运算 或其他操作)的数据或数据的地址。 或其他操作 的数据或数据的地址。 (1)操作数书写型式 1 操作数书写型式 操作数一般为十六进制, 结尾,如果是A~F 操作数一般为十六进制,用“H”结尾,如果是 开头,则为了与字符串区别开需要在操作数前加0。 开头,则为了与字符串区别开需要在操作数前加0 如果为二进制则以“ 结尾。 如果为二进制则以“B”结尾。 如果是十进制则以“ 结尾,也可以省略“ 如果是十进制则以“D”结尾,也可以省略“D”。
ORG 0000H;程序起始地址 ; LJMP MAIN;跳转到主程序 ; ORG 0100H;主程序起始地址 ; MAIN:MOV R0 , #22H;设置 指针指向 指针指向22H ;设置R0指针指向 MOV @R0,#0;将R0指向的地址 ; 指向的地址22H清零 清零 指向的地址 MOV A , 20H;读取要转换的 位ASCII码到 码到A ;读取要转换的2位 码到 XCHD A, @R0 ;将被转换数的低位送到 将被转换数的低位送到22H低位 低位 ORL 22H, #30H;将22H中数变成相应的 中数变成相应的ASCII码 ; 中数变成相应的 码 SWAP A;将A中数高位移到低位 ; 中数高位移到低位 ORL A,#30H;将A中数转换为相应的 ; 中数转换为相应的ASCII码 码 中数转换为相应的 MOV 21H,A;将高位数的 码送入21H ;将高位数的ASCII码送入 码送入 SJMP $;循环等待 ; END 中数据为56H,分析各指令执行后各地址和寄存 设20H中数据为 中数据为 , 器的值
MCS-51的汇编语言的(指令语句)四分段格式如下: 的汇编语言的(指令语句)四分段格式如下: 的汇编语言的
标号字段:操作码字段,操作数字段;注释 标号字段:操作码字段 操作数字段; 操作数字段 START: MOV A,30H;A←(30H) : , ; ( )
规则: 规则: 标号段: 1.标号段:标号字段和操作字码段之间要有冒号 “:”相隔,由1~8个ASCII字符组成,开头必须为 相隔, 字符组成, 相隔 字符组成 字母,标号不能重复, 字母,标号不能重复,不能用汇编语言已经定义的 字符串,可以没有标号。 字符串,可以没有标号。
5.2.2循环程序设计
循环的结构
(1)循环初态 )
设置循环过程中工作单元的初始值。 设置循环过程中工作单元的初始值。
(2)循环体 )
重复执行的程序段。 重复执行的程序段。
(3)循环控制部分 )
用于控制循环的执行和结束, 用于控制循环的执行和结束,判断循环执行的条 件。 常用循环控制指令有DJNZ,CJNE,SJMP等 常用循环控制指令有 等
开始 取出20H的低位 的低位BCD码,放到一个新地址中 取出 的低位 码 转化为相应的ASCII码 码 转化为相应的 将低位BCD码的 码的ASCII码存入 码存入22H 将低位 码的 码存入 取出20H的高位 的高位BCD码,放到一个新地址中 取出 的高位 码 转化为相应的ASCII码 码 转化为相应的 将高位BCD码的 码的ASCII码存入 码存入21H 将高位 码的 码存入 结束
4. 注释字段 注释字段:
以半角分割符“ 以半角分割符“;”开头,表示对前面语句的解释。 开头,表示对前面语句的解释。
2. 汇编语言的伪指令
汇编语言源程序中应有向汇编程序发出的 汇编语言源程序中应有向汇编程序发出的 指示信息,告诉它如何完成汇编工作, 指示信息,告诉它如何完成汇编工作,这 是通过使用伪指令来实现的。 伪指令来实现的 是通过使用伪指令来实现的。 也称为汇编程序控制命令。 也称为汇编程序控制命令。只有在汇编前 的源程序中才有伪指令。 的源程序中才有伪指令。经过汇编得到目 标程序(机器代码) 标程序(机器代码)后,伪指令已无存在 的必要,所以“ 体现在汇编时, 的必要,所以“伪”体现在汇编时,伪指 令没有相应的机器代码产生。 令没有相应的机器代码产生。
3. EQU(Equate)赋值指令 赋值指令
字符名称 EQU 数或汇编符号 定义前边字符与后边数据或符号等价。 定义前边字符与后边数据或符号等价。 OUTPORT EQU P1
4.DB(Define Byte)定义字节命令 . ( )
在程序存储器的连续单元中定义字节数据。 在程序存储器的连续单元中定义字节数据。
设由2个 位 码分别存放在23H、 例5.9 设由 个4位BCD码分别存放在 码分别存放在 、 22H单元和 单元和33H和32H单元中,求他们的和, 单元中, 单元和 和 单元中 求他们的和, 并送入43H、42H单元中(低位在低字节, 单元中( 并送入 、 单元中 低位在低字节, 高位在高字节) 高位在高字节)
CLR C MOV A,22H;取得低位被加数 ; ADD A,32H;低字节相加,不考虑进位位 低字节相加, 低字节相加 DA A;十进制调整 ; MOV 42H,A;保存 ; MOV A,23H;取得高位被加数 ; ADDC A,33H;高字节相加考虑字节的进位 高字节相加考虑字节的进位 DA A;十进制调整 ; MOV 43H,A;保存 ; 设 (23H)=12H, (22H)=34H,(33H)=56H,(32H)=78H, 分析各指令执行后相应寄存器、地址中数值。 分析各指令执行后相应寄存器、地址中数值。