答:MOV A, R1
ADD A, R3 MOV R5, A MOV A, R0 ADDC A, R2 MOV R4, A
15. 设计双字节无符号数相减程序实现(R0 R1)-(R2 R3) → (R4 R5)。R0、 R2、 R4存放16位数的高字节, R1、 R3、 R5存放低字节, 答:
MOV A, R1
CLR C SUBB A, R3 MOV R5, A MOV A, R0 SUBB A, R2 MOV R4, A
17. 设2个BCD码数存在外部RAM的2000H和内部RAM的20H。设计程序实现2个BCD码相加,其结果的十位和个位送到外部 RAM的2000H单元, 结果的百位值送F0位。 答: MOV DPTR,#2000H MOVX A,@DPTR ADD A, 20H DA A MOVX @DPTR, A MOV F0H,CY
18. 设变量X存放在片内10H单元中, 函数Y存放在片内20H单元。 编写程序实现如下函数功能。
80H X>0 Y&#61; 50 X&#61;0 FFH X<0
答&#xff1a; MOV A, 10H ; 取出X送A
JZ COM ; 若X&#61;0 则转移到COM JNB ACC.7, POSI ; 若X>0则转移到POSI MOV A, &#xff03;0FFH ; 若X<0 则A&#61;FFH SJMP COMP ; 转分支结构出口
COM: MOV A,# 50 ; X&#61;0时的赋值
SJMP COMP ; ; 转分支结构出口 POSI: MOV A, &#xff03;80H ; X>0 时A&#61;80H
COMP: MOV 20H, A ; 存函数Y值
SJMP $ ; 结束
第 13 页 共 47 页
19. 利用位逻辑指令, 模拟下图硬件逻辑电路功能。试编写程序实现。
答&#xff1a;MOV CY,P1.0
ANL CY,P1.1 CPL CY MOV F0,CY MOV CY,P1.1 ORL CY,P1.2 ANL CY,F0 CPL CY MOV F0,CY
20.若(CY)&#61;0&#xff0c;(P1)&#61;10110111B&#xff0c;试指出执行下列程序段后&#xff0c;CY、P1口内容的变化情况。 MOV P1.2&#xff0c;C MOV C, P1.4 JBC P1.7 ,SS ORL C, P1.6
SS:CPL P1.3 ANL C, /P1.3 MOV P1.0&#xff0c;C 答&#xff1a;(CY)&#61;0&#xff0c;(P1)&#61;0011 1010B
第5章 思考题及习题参考答案
1、80C51单片机汇编语言有何特点&#xff1f;
答&#xff1a;优点&#xff1b;源程序结构紧凑、灵活&#xff0c;汇编成的目标程序效率高&#xff0c;具有占存储空间少、运行速
第 14 页 共 47 页
度快、实时性强等优点。
缺点&#xff1a;由于它的是面向机器的语言&#xff0c;所以它缺乏通用性&#xff0c;编程复杂繁琐&#xff0c;但应用相当广泛。
2、利用80C51单片机汇编语言进行程序设计的步骤如何&#xff1f; 答&#xff1a;(1).需要对单片机应用系统预先完成的任务进入深入的分析&#xff0c;明确系统的设计任务、功能要求、技术指标。
(2).要对系统的硬件资源和人工作环境进行分析和熟悉.
(3).利用数学方法或数学模型来对其进行描述&#xff0c;从而把一个实际问题转化成由计算机进行处理的问题。
(4).对各种算法进行分析比较&#xff0c;并进行合理的优化。
3、常用的程序结构有哪几种&#xff1f;特点如何&#xff1f; 答&#xff1a;常用的程序结构有以下几种&#xff1a;
(1)顺序程序结构&#xff1a;顺序结构是按照逻辑操作顺序&#xff0c;从某一条指令开始逐条顺序进行&#xff0c;直到某一条指令为止&#xff1b;比如数据传送与交换、查表程序和查表程序的设计等&#xff1b;在顺序结构中没有分支&#xff0c;也没有子程序&#xff0c;但它是组成复杂程序的基础和主干&#xff1b;
(2)分支程序结构&#xff1a;它的主要特点是程序执行流程中必然包含有条件判断指令&#xff0c;符合条件要求的和不符条件合要求的有不同的处理程序&#xff1b;
(3)循环程序结构 &#xff1a;它在本质上只是分支程序中的一个特殊形式&#xff0c;它由循环初始化、循环体、循环控制和结束部分构成&#xff1b;在循环次数已知情况下&#xff0c;采用计数循环程序&#xff0c;其特点是必须在初始部分设定计数的初始值&#xff0c;循环控制部分依据计数器的值决定循环次数&#xff1b;根据控制循环结束的条件&#xff0c;决定是否继续循环程序的执行。
(4)子程序&#xff1a;它的主要特点是&#xff0c;在执行过程中需要由其它的程序来调用&#xff0c;执行完后又需要把执行流程返回到调用该子程序的主程序。
4、子程序调用时&#xff0c;参数的传递方法有哪几种&#xff1f;
答&#xff1a;在80C51单片机中&#xff0c;子程序调用时&#xff0c;参数的传递方法由三种&#xff1a; (1)、利用累加器A或寄存器&#xff1b; (2)、利用存储器&#xff1b; (3)、利用堆栈。
5、什么是伪指令&#xff1f;常用的伪指令功能如何&#xff1f;
答&#xff1a;伪指令是汇编程序能够识别并对汇编过程进行某种控制的汇编命令。常用的伪指令有&#xff1a; (1)起始地址设定伪指令ORG&#xff0c;该指令的功能是向汇编程序说明下面紧接的程序段或数据段存放的起始地址&#xff1b;
(2)汇编结束伪指令END&#xff0c;该指令的功能是汇编程序遇到END伪指令后立即结束汇编&#xff1b; (3)字节数据定义伪指令DB&#xff0c;该指令的功能是从标号指定的地址单元开始&#xff0c;在程序存储器中定义字节数据&#xff1b;
(4)字数据定义伪指令DW&#xff0c;该指令的功能是从标号指定的地址单元开始&#xff0c;在程序存储器中定义字数据&#xff1b;
(5)空间定义伪指令DS&#xff0c;该指令的功能是从标号指定的地址单元开始&#xff0c;在程序存储器中保留由表达式所指定的个数存储单元作为备用空间&#xff0c;并都填以零值&#xff1b;
(6)赋值伪指令EQU&#xff0c;该指令的功能是将表达式的值或特定的某个汇编符号定义为一
第 15 页 共 47 页
个指定的符号名&#xff1b;
(7)位地址符号定义伪指令BIT&#xff0c;该指令的功能是将位地址赋给指定的符号名。
6&#xff1a;把外部RAM的2000-20FFH RAM空间置零 程序如下&#xff1a;
ORG 000H MOV R0,#00H
MOV DPTR,#2000H ;空间首地址送DPTR LOOP: MOV A,#00H
MOVX &#64;DPTR,A ;清零 INC DPTR ;DPTR加1 INC R0 ;字节数加1
CJNE R0,#00H,LOOP ;连续清256个字节 LOOP1: SJMP LOOP1 END
7、录入并调试一个排序子程序&#xff0c;其功能为用冒泡法将内部RAM中从50H开始的十个单字节无符号正整数&#xff0c;按从小到大的次序重新排列。 程序如下&#xff1a;
用冒泡法进行数据排序 ORG 0000H MOV R3,#50H LOOP0: MOV A,R3
MOV R0,A ;指针送R0 MOV R7,#0AH ;长度送R7
CLR 00H ;标志位为0 MOV A,&#64;R0 LOOP1: INC R0 MOV R2,A CLR C
MOV 22H,&#64;R0
第 16 页 共 47 页