1、1单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计v1 1 程序设计方法程序设计方法程序设计方法程序设计方法v2 2 顺序程序顺序程序顺序程序顺序程序v3 3 分支程序分支程序分支程序分支程序v4 4 循环程序循环程序循环程序循环程序v5 5 子程序子程序子程序子程序v6 6 算术运算程序算术运算程序算术运算程序算术运算程序2单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计5-1-2 5-1-2 汇编语言程序设计步骤汇编语言程序
2、设计步骤一一.分析问题。分析问题。二二.确定算法。确定算法。三三.制定程序流程图:表示程序结构和程序功能制定程序流程图:表示程序结构和程序功能四四.编制源程序编制源程序 1.1.合理分配存储器单元和了解合理分配存储器单元和了解I/OI/O接口地址。接口地址。2.2.按功能设计程序,按功能设计程序,明确各程序之间的相互关系。明确各程序之间的相互关系。3.3.用注释行说明程序,用注释行说明程序,便于阅读和修改调试和修改。便于阅读和修改调试和修改。五五.程序调试。程序调试。开始开始1 YN?3单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言
3、程序设计汇编语言程序设计5-1-3 5-1-3 评价程序质量的标准评价程序质量的标准 (1)(1)程序的执行时间。程序的执行时间。(2)(2)程序所占用的内存字节数。程序所占用的内存字节数。(3)(3)程序的逻辑性、可读性。程序的逻辑性、可读性。(4)(4)程序的兼容性、可扩展性。程序的兼容性、可扩展性。(5)(5)程序的可靠性。程序的可靠性。4单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三5-2 5-2 顺序程序顺序程序 直线程序又称简单程序,程序走向只有一条路径。直线程序又称简单程序,程序走向只有一条路径。例例1 双字节变补程序(设数据在双字节变补程
4、序(设数据在R4 R5中)中)双字节变补程序双字节变补程序(设数据在设数据在R4R5中中):MOV A,R5;取低字节取低字节CPL AADD A,#1;低字节变补低字节变补MOV R5,AMOV A,R4;取高字节取高字节CPL AADDC A,#0;高字节变补高字节变补MOV R4,A第五章第五章 汇编语言程序设计汇编语言程序设计5单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计例例2 2 压缩式压缩式BCDBCD码分解成为单字节码分解成为单字节BCDBCD码。码。MOV R0,#40H;设指针设指针MOV
5、 A,R0;取一个字节取一个字节MOV R2,A;暂存暂存ANL A,#0FH;清清0高半字节高半字节INC R0MOV R0,A ;保存数据个位保存数据个位MOV A,R2SWAP A ;十位换到低半字节十位换到低半字节ANL A,#0FHINC R0MOV R0,A;保存数据十位保存数据十位十十 个个6单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计 例例5-1 假设两个双字节无符号数,分别存放在假设两个双字节无符号数,分别存放在R1R0和和R3R2中,高字节在中,高字节在前,低字节在后。编程使两数相加,和
6、数存放回前,低字节在后。编程使两数相加,和数存放回R2R1R0中。中。ORG 1000h CLR C MOV A,R0;取被加数低字节至取被加数低字节至A ADD A,R2;与加数低字节相加与加数低字节相加 MOV R0,A;存和数低字节存和数低字节 MOV A,Rl;取被加数高字节至取被加数高字节至A ADDC A,R3;与加数高字节相加与加数高字节相加 MOV Rl,A;存和数高字节存和数高字节 MOV A,#0 ADDC A,#0;加进位位加进位位 MOV R2,A;存和数进位位存和数进位位 SJMP$;原地踏步原地踏步 END7单片机原理及应用单片机原理及应用常州大学信息学院常州大学信
7、息学院2024/5/8 周三条件满足条件满足?N影响条件影响条件处理段处理段YN第五章第五章 汇编语言程序设计汇编语言程序设计5-3 5-3 分支程序分支程序 由条件转移指令构成程序判断框部分,形成程序分支结构。由条件转移指令构成程序判断框部分,形成程序分支结构。5-3-15-3-1 单重分支程序单重分支程序 一个判断决策框,程序有两条出路。两种分支结构。一个判断决策框,程序有两条出路。两种分支结构。例例1 求求R2中补码绝对值,正数不变,负数变补。中补码绝对值,正数不变,负数变补。MOV A,R2 JNB ACC.7,NEXT ;为正数?;为正数?CPL A ;负数变补;负数变补 INC A
8、 MOV R2,ANEXT:SJMP NEXT ;结束;结束8单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计5-3-2 5-3-2 多重分支程序多重分支程序多次使用条件转移指令,形多次使用条件转移指令,形成两个以上判断框。成两个以上判断框。例例5-75-7 设设30H30H单单元元存存放放的的是是一一元元二二次次方方程程axax2 2+bx+c=0+bx+c=0根根的的判别式判别式=b=b2 2-4ac-4ac的值。的值。解解:值值为为有有符符号号数数,有有三三种种情情况况,即即大大于于零零、等等于于零零、小
9、小于零。于零。9单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计 编程:编程:ORG 1000HSTART:MOV A,30H ;值送值送A JNB ACC.7,YES ;=0转转YES MOV 31H,#0 ;0转转TOW MOV 31H,#1 ;=0有相同实根有相同实根 SJMP FINISHTOW:MOV 31H,#2 ;有两个不同实根有两个不同实根FINISH:SJMP$10单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设
10、计5-3-3 5-3-3 N路分支程序路分支程序 N路分支程序是根据前面程序运行的结果,可以有路分支程序是根据前面程序运行的结果,可以有N种选择,并能转向其种选择,并能转向其中任一处理程序。中任一处理程序。11单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计例例5-10 1285-10 128路分支程序。路分支程序。功能:根据功能:根据R3R3的值的值(00H(00H7FH)7FH)转到转到128128个目的地址。个目的地址。参考程序:参考程序:JMPl28:MOV A,R3 RL A ;(A)2 MOV DP
11、TR,#PRGTBL ;散转表首址送;散转表首址送DPTR JMP A+DPTR ;散转;散转PRGTBL:AJMP ROUT00 AJMP ROUT01 AJMP ROUT7F ;128个个AJMP指令占指令占256个字节个字节12单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计5-45-4 循环程序循环程序包含多次重复执行的程序段,循环结构使程序紧凑。包含多次重复执行的程序段,循环结构使程序紧凑。5-4-15-4-1循环程序的导出循环程序的导出各个环节任务:各个环节任务:一初始化部分一初始化部分循环准备工作
12、。循环准备工作。如:清结果单元、设指针、设循环控制变量初值等。如:清结果单元、设指针、设循环控制变量初值等。二循环体二循环体循环工作部分:循环工作部分:需多次重复处理的工作。需多次重复处理的工作。循环控制部分:循环控制部分:1.修改指针和循环控制变量。修改指针和循环控制变量。2.检测循环条件:满足循环条件,继续循环,否则退出循环。检测循环条件:满足循环条件,继续循环,否则退出循环。三三.结束部分结束部分 处理和保存循环结果。处理和保存循环结果。1)已知循环次数)已知循环次数 2)循环次数未知)循环次数未知允许允许0次循环的循环结构:在循环工作之前检测循环条件。次循环的循环结构:在循环工作之前检
13、测循环条件。循环控制循环控制?循环工作循环工作循环结束循环结束循环初始化循环初始化YNNY13单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计单重循环单重循环简单循环结构:循环体中不套循环。简单循环结构:循环体中不套循环。例:例:求求n n个单字节数据的累加,设数据串已在个单字节数据的累加,设数据串已在43H43H起始单元,数据串长度起始单元,数据串长度在在42H42H单元,累加和不超过单元,累加和不超过2 2个字节。个字节。SUM:MOVR0,#42H;设指针;设指针MOV A,R0MOV R2,A ;循环计
14、数器循环计数器R2nCLRA ;结果单元清结果单元清0MOV R3,AADD1:INCR0 ;修改指针;修改指针 ADDA,R0 ;累加;累加 JNC NEXT ;处理进位;处理进位 INCR3 ;有进位,高字节加;有进位,高字节加1NEXT:DJNZ R2,ADD1;循环控制:数据是否加完?;循环控制:数据是否加完?MOV 40H,A ;循环结束,保存结果;循环结束,保存结果 MOV41H,R3 RET14单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计v循环控制方法循环控制方法:计数控制、特征标志控制。计数
15、控制、特征标志控制。一一.计数控制:计数控制:设循环计数器,控制循环次数。设循环计数器,控制循环次数。正计数正计数和和倒计数倒计数两种方式。两种方式。例例:为为一一串串7 7位位ASCIIASCII码码数数据据的的D D7 7位位加加上上奇奇校校验验,设设数数据据存存放放在在片片外外RAMRAM的的2101H2101H起起始始单单元元,数数据据长度在长度在2100H2100H单元。单元。MOV DPTR,#2100HMOVX A,DPTRMOV R2,ANEXT:INC DPTRMOVX A,DPTRORL A,#80HJNB P,PASS;判断是否加校验判断是否加校验MOVX DPTR,A;
16、是,则加奇校验是,则加奇校验PASS:DJNZ R2,NEXTDONE:SJMP DONE15单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计二二.特征控制:特征控制:设定循环结束标志实现循环控制。设定循环结束标志实现循环控制。例:找正数表最小值。正数表存在片外例:找正数表最小值。正数表存在片外RAMRAM中以中以LISTLIST为起始单元,用为起始单元,用-1-1作为结束标志。作为结束标志。START:MOVDPTR,#LIST ;数表首地址数表首地址 MOVB,#127 ;预置最小值预置最小值NEXT:MO
17、VX A,DPTR ;取数取数 INC DPTR ;修改指针修改指针 CJNE A,#0FFH,NEXT1;是否为数表结尾?是否为数表结尾?SJMP DONE ;循环结束循环结束NEXT1:CJNE A,B,NEXT2 ;比较比较NEXT2:JNCNEXT ;Cy=1,则则AB MOVB,A ;保存较小值保存较小值 SJMP NEXTDONE:SJMP DONE16单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计5-4-2 5-4-2 多重循环多重循环循环体中套循环结构。以双重循环使用较多。循环体中套循环结构。
18、以双重循环使用较多。例:将内存一串单字节无符号数升序排序。例:将内存一串单字节无符号数升序排序。步骤:步骤:每次取相邻单元的两个数比较,每次取相邻单元的两个数比较,决定是否需要交换数据位置。决定是否需要交换数据位置。第一次循环,比较第一次循环,比较N-1N-1次,取数据表中最大值。次,取数据表中最大值。第二次循环,比较第二次循环,比较N-2N-2次,取到次大值。次,取到次大值。第第N-1N-1次循环:比较一次,排序结束。次循环:比较一次,排序结束。内循环控制内循环控制?循环工作循环工作循环结束循环结束外循环控制外循环控制?内循环初始化内循环初始化开始开始外循环初始化外循环初始化NNYY17单片
19、机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计SORT:MOV A,#N-1;N个数据排序个数据排序 MOV R4,A;外循环次数;外循环次数LOOP1:MOV A,R4 MOV R3,A;内循环次数;内循环次数 MOV R0,#TAB;设数据指针;设数据指针LOOP2:MOV A,R0;取二数;取二数 MOV B,A INC R0 MOV A,R0 CJNE A,B,L1;比较;比较L1:JNC UNEX;AB,不交换,不交换 DEC R0;否则交换数据;否则交换数据 XCH A,R0 INC R0 MOV R
20、0,AUNEX:DJNZ R3,LOOP2;内循环结束?;内循环结束?DJNZ R4,LOOP1;外循环结束?;外循环结束?RETR3R31=0?B(R0)A (R0+1)循环结束循环结束外循环次数外循环次数R4R4R41=0?内循环次数内循环次数R3表首表首TABR0开始开始A BA B?(R0)(R0+1)R0)(R0+1)R0 R0+1R0 R0+1Y YN NNYNYNY18单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计v软件延时程序软件延时程序 用循环程序将指令重复多次执行,实现软件延时。用循环程序
21、将指令重复多次执行,实现软件延时。试计算延时程序的执行时间。试计算延时程序的执行时间。源程序源程序指令周期指令周期(M)(M)指令执行次数指令执行次数DELAY:MOV R6,#64H1 I1:MOV R7,#0FFH 1 I2:DJNZ R7,I2 2 DJNZ R6,I1 2 RET 2延时时间计算:(设时钟延时时间计算:(设时钟f=12MHz)t=(11+1100+2100255+2100+21)M=51.3 ms1100100255100119单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计5.5.2编
22、写循环程序应注意的问题编写循环程序应注意的问题 1)循环体前应注意安排循环初始化;)循环体前应注意安排循环初始化;2)内外循环间不应相互交叉。)内外循环间不应相互交叉。20单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计v5-5 5-5 查表程序查表程序例例5-19 一个十六进制数存放在一个十六进制数存放在HEX单元的低四位,将其转换成单元的低四位,将其转换成ASCII码并送回码并送回HEX单元。单元。编程:编程:ORG 0100H HEX EQU 30HHEXASC:MOV A,HEX ANL A,#0000
23、1111B ADD A,#3 ;变址调整;变址调整 MOVC A,A+PC MOV HEX,A ;2字节字节 RET ;1字节字节ASCTAB:DB 30H,3lH,32H,33H DB 34H,35H,36H,37H DB 38H,39H,41H,42H DB 43H,44H,45H,46H END 21单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计v5-6 5-6 子程序设计子程序设计子程序:能完成某项特定功能的独立程序段,可被反复调用。子程序:能完成某项特定功能的独立程序段,可被反复调用。优点:优点:(
24、1)不必重复书写同样的程序,提高编程效率;不必重复书写同样的程序,提高编程效率;(2)程序的逻辑结构简单,便于阅读;程序的逻辑结构简单,便于阅读;(3)缩短了源程序和目标程序的长度,节省了程序存储器空间;缩短了源程序和目标程序的长度,节省了程序存储器空间;(4)使程序模块化、通用化,便于交流,共享资源;使程序模块化、通用化,便于交流,共享资源;(5)便于按某种功能调试。便于按某种功能调试。22单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计1.1.子程序结构子程序结构一子程序入口用标号作为子程序名。一子程序入口
25、用标号作为子程序名。二调用子程序之前设置好堆栈。二调用子程序之前设置好堆栈。三用返回指令三用返回指令RETRET结束子程序,并保证堆栈栈顶为调结束子程序,并保证堆栈栈顶为调 用程序的返回地址。用程序的返回地址。四四.子程序嵌套须考虑堆栈容量。子程序嵌套须考虑堆栈容量。五五.提供足够的调用信息提供足够的调用信息:如如:子子程程序序名名、子子程程序序功功能能、入入口口参参数数和和出出口口参参数数、子子程程序序占占用用的硬件资源、子程序中调用的其他子程序名。的硬件资源、子程序中调用的其他子程序名。23单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章
26、汇编语言程序设计汇编语言程序设计2.2.参数传递参数传递入口参数:调用子程序之前,需要传给子程序的参数。入口参数:调用子程序之前,需要传给子程序的参数。出口参数:子程序送回调用程序的结果参数。出口参数:子程序送回调用程序的结果参数。(1)子程序无须传递参数子程序无须传递参数,如延时子程序。如延时子程序。DELAY:MOV R6,#64H I1:MOV R7,#0FFH I2:DJNZ R7,I2 DJNZ R6,I1 RET 24单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计(2)用累加器和工作寄存器传递参数
27、用累加器和工作寄存器传递参数例例5-24 双字节求补子程序双字节求补子程序CPLD。解解 入口参数:入口参数:(R7R6)=16位数位数 出口参数:出口参数:(R7R6)=求补后的求补后的16位数位数 CPLD:MOV A,R6 CPL A ADD A,#1 MOV R6,A MOV A,R7 CPL A ADDC A,#0 MOV R7,A RET INC A25单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计(3)通过操作数地址传递参数通过操作数地址传递参数例例5-25 n字节求补子程序。字节求补子程序。解
28、解 入口参数:入口参数:(R0)=求补数低字节指针,求补数低字节指针,(R7)=n-1 出口参数:出口参数:(R0)=求补后的高字节指针求补后的高字节指针 CPLN:MOV A,R0 CPL A ADD A,#1 MOVR0,A NEXT:INC R0 MOV A,R0 CPL A ADDC A,#0 MOV R0,A DJNZ R7,NEXT RET26单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计(4)通过堆栈传递参数通过堆栈传递参数例例5-26 在在HEX单元存放两个十六进制数,将它们分别转换单元存放两
29、个十六进制数,将它们分别转换 成成ASC码并存入码并存入ASC和和ASC+1单元。单元。解解 由于要进行两次转换,故可调用查表子程序完成。由于要进行两次转换,故可调用查表子程序完成。主程序:主程序:MAIN:PUSH HEX ;取被转换数;取被转换数 LCALL HASC ;转子;转子*PC POP ASC ;ASCLASC MOV A,HEX ;取被转换数;取被转换数 SWAP A ;处理高四位;处理高四位 PUSH ACC LCALL HASC ;转子程序转子程序 POP ASC+1 ;ASCH ASC+1 27单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/
30、8 周三第五章第五章 汇编语言程序设计汇编语言程序设计子程序:子程序:HASC:DEC SP DEC SP ;修改修改SP指向指向HEX POP ACC ;弹出弹出HEX ANL A,#0FH ;屏蔽高四位;屏蔽高四位 ADD A,#5 ;变址调整;变址调整 MOVCA,A+PC ;查表查表 PUSHACC ;结果入栈结果入栈 (2字节字节)INCSP ;(1字节字节)INCSP ;修改修改SP指向断点位置指向断点位置(1字节字节)RET ;(1字节字节)ASCTAB:DB 0 1 2.72.7 DB 8 9 A.F 28单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024
31、/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计3.3.现场保护现场保护推入与弹出的顺序应按推入与弹出的顺序应按“先进后出先进后出”,或,或“后进先出后进先出”的顺序,才能保证的顺序,才能保证现场的恢复。现场的恢复。例:十翻二子程序的现场保护。例:十翻二子程序的现场保护。BCDCB:PUSH ACC PUSH PSW PUSH DPL ;保护现场;保护现场 PUSH DPH POP DPH POP DPL POP PSW;恢复现场;恢复现场 POP ACC RET 29单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设
32、计汇编语言程序设计4.4.设置堆栈设置堆栈 调用子程序时,主程序的断点将自动入栈;调用子程序时,主程序的断点将自动入栈;转子后,现场的保护都要占用堆栈工作单元,尤其多重转子或子转子后,现场的保护都要占用堆栈工作单元,尤其多重转子或子 程序嵌套,需要程序嵌套,需要使栈区有一定的深度使栈区有一定的深度。由于由于MCS-51的堆栈是由的堆栈是由SpSp指针组织的内部指针组织的内部RAM区,仅有区,仅有128个个 地址空间,堆栈并非越深越好,深度要恰当。地址空间,堆栈并非越深越好,深度要恰当。30单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语
33、言程序设计汇编语言程序设计5.6.3 子程序的调用及嵌套子程序的调用及嵌套1子程序调用子程序调用2子程序嵌套子程序嵌套31单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计2子程序嵌套子程序嵌套断点入栈断点入栈断点出栈断点出栈32单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计1、计算下面子程序中指令的偏移量和程序执行的时间(晶振频、计算下面子程序中指令的偏移量和程序执行的时间(晶振频率为率为 12MHz)。)。v MOVR3,#
34、15;1个机器周期个机器周期vDL1:MOVR4,#255;1个机器周期个机器周期vDL2:MOVP1,R3 ;2个机器周期个机器周期v DJNZ R4,DL2;2个机器周期个机器周期v DJNZ R3,DL1;2个机器周期个机器周期v RET;2个机器周期个机器周期答:答:15348us析:(析:(22)25512)151215348us 33单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计2 2、试编写程序,查找在内部、试编写程序,查找在内部RAMRAM的的30H30H50H50H单元中是否有单元中是否有0
35、AAH0AAH这一数据。若这一数据。若有,则将有,则将51H51H单元置为单元置为“01H”“01H”;若未找到,则将;若未找到,则将51H51H单元置为单元置为“00H”“00H”。答:答:START:MOVR0,#30HMOVR2,#21HLOOP:MOVA,R0CJNEA,#0AAH,NEXTMOV51H,#01HLJMPEXITNEXT:INCR0DJNZR2,LOOPMOV51H,#00HEXIT:RET34单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计3 3、试编写程序,查找在内部试编写程序,查找
36、在内部RAM的的20H40H单元中出现单元中出现“00H”这一数据的次数。并将查找到的结果存入这一数据的次数。并将查找到的结果存入41H单元。单元。答:答:START:MOV41H,#0MOVR0,#20HMOVR2,#21HLOOP:MOVA,R0JNZNEXTINC41HNEXT:INCR0DJNZR2,LOOPRET35单片机原理及应用单片机原理及应用常州大学信息学院常州大学信息学院2024/5/8 周三第五章第五章 汇编语言程序设计汇编语言程序设计v4 4、若若SP=60H,标号,标号LABEL所在的地址为所在的地址为3456H。LCALL指令的地址为指令的地址为2000H,执行指令如下:,执行指令如下:v2000H LCALL LABELv后,堆栈指针后,堆栈指针SP和堆栈内容发生了什么变化?和堆栈内容发生了什么变化?PC的值等于什么?如果将的值等于什么?如果将指令指令LCALL直接换成直接换成ACALL是否可以?如果换成是否可以?如果换成ACALL指令,可调用的指令,可调用的地址范围是什么?地址范围是什么?答:答:1)SP=SP+1=61H(61H)=PC的低字节的低字节=03HSP=SP+1=62H(62H)=PC的高字节的高字节=20H 2)PC=3456H 3)不可以)不可以 4)2KB2048 Byte
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100