(2)MOV R2,60H (3)MOV DPTR,#1000H MOVX A,@DPTR MOV 60H,A (4)MOV DPTR,#1000H MOVX A,@DPTR MOV R2,A (5)MOV DPTR,#1000H MOVX A,@DPTR MOV DPTR,#2000H MOVX @DPTR, A 11.若(R1)=30H,(A)=40H,(30H)=60H,(40H)=08H。试分析执行下列程序段后上述各单元内容的变化。 MOV A,@R1 MOV @R1,40H MOV 40H,A MOV R1,#7FH 答: (R1)=7FH (A)=60H (30H)=08H (40H)=60H 12.若(A)=E8H,(R0)=40H,(R1)=20H,(R4)=3AH,(40H)=2CH,(20H)=0FH,试写出下列各指令独立执行后有关寄存器和存储单元的内容?若该指令影响标志位,试指出CY、AC、和OV的值。 (1)MOV A,@R0 (2)ANL 40H,#0FH (3)ADD A,R4 (4)SWAP A (5)DEC @R1 (6)XCHD A,@R1 答: (1)(A)=2CH (2)(40H)=0CH (3)(A)=22H,(CY)=1,(AC)=1,(OV)=0 (4)(A)=8EH (5)(20H)=0EH,P=1 (6)(A)=EFH,(20)=08H 13.若(50H)=40H,试写出执行以下程序段后累加器A、寄存器R0及内部RAM的40H、41H、42H单元中的内容各为多少? MOV A,50H MOV R0,A MOV A,#00H MOV @R0,A MOV A,#3BH - 5 -
MOV 41H,A MOV 42H,41H 答: (A)=3BH,(R0)=40H,(40H)=00H,(41H)=3BH,(42H)=3BH。 14.试用位操作指令实现下列逻辑操作。要求不得改变未涉及的位的内容。 (1)使ACC.0置位; (2)清除累加器高4位; (3)清除ACC.3,ACC.4,ACC.5,ACC.6。 答: (1)SETB ACC.0 (2)ANL A,#0FH (3)ANL A,#87H 15.试编写程序,将内部RAM的20H、21H、22H三个连续单元的内容依次存入2FH、2EH和2DH单元。 答: MOV 2FH,20H MOV 2EH,21H MOV 2DH,22H 16.试编写程序,完成两个16位数的减法:7F4DH-2B4EH,结果存入内部RAM的30H和31H单元,30H单元存差的高8位,31H单元存差的低8位。 答: CLR CY MOV 30H,#7FH MOV 31H,#4DH MOV R0, #31H MOV A,@R0 SUBB A ,#4E MOV @R0,A ;保存低字节相减结果 DEC R0 MOV A, @R0 SUBB A,#2BH MOV @R0,A ;保存高字节相减结果 17.试编写程序,将R1中的低4位数与R2中的高4位数合并成一个8位数,并将其存放在R1中。 答: MOV A,R2 ANL A,#0F0H ORL R1,A 18.试编写程序,将内部RAM的20H、21H单元的两个无符号数相乘,结果存放在R2、R3中,R2中存放高8位,R3中存放低8位。 答: MOV A,20H MOV B,21H MUL AB - 6 -
MOV R3,A MOV R2,B 19.若(CY)=1,(P1)=10100011B,(P3)=01101100B。试指出执行下列程序段后,CY、P1口及P3口内容的变化情况。 MOV P1.3,C MOV P1.4,C MOV C,P1.6 MOV P3.6,C MOV C,P1.0 MOV P3.4,C 答: (CY)=1, (P1)=10111011B, (P3)=00111100B 章4 80C51的汇编语言程序设计 1.80C51单片机汇编语言有何特点? 答: 汇编语言结构紧凑、灵活,汇编成的目标程序效率高,具有占存储空间少、运行速度快、实时性强等优点。它是面向机器的语言,对于单片机硬件的操作直接、方便,有利于初学者对单片机结构的认知。 但它与高级语言相比移植性不好、编程复杂、对编程人员的基础要求高。 2.利用80C51单片机汇编语言进行程序设计的步骤如何? 答: 一、任务分析 首先,要对单片机应用系统的设计目标进行深入分析,明确系统设计任务:功能要求和技术指标。然后对系统的运行环境进行调研。这是应用系统程序设计的基础和条件。 二、算法设计 经过任务分析和环境调研后,已经明确的功能要求和技术指标可以用数学方法(或模型)来描述,进而把一个实际的系统要求转化成由计算机进行处理的算法。并对各种算法进行分析比较,并进行合理的优化。 三、流程描述 程序的总体构建。先要确定程序结构和数据形式,资源分配和参数计算等。然后根据程序运行的过程,规划程序执行的逻辑顺序,用图形符号将程序流程绘制在平面图上。应用程序的功能通常可以分为若干部分,用流程图将具有一定功能的各部分有机地联系起来。 流程图可以分为总流程图和局部流程图。总流程图侧重反映程序的逻辑结构和各程序模块之间的相互关系;局部流程图反映程序模块的具体实施细节 。 3.常用的程序结构有哪几种?特点如何? 答: 顺序程序:无分支、无循环结构的程序,其执行流程是依指令在存储器中的存放顺序进行的; 分支程序:可以改变程序的执行顺序; 循环程序:按某种控制规律重复执行的程序,控制一部分指令重复执行若干次,以便用简短的程序完成大量的处理任务。 4.子程序调用时,参数的传递方法有哪几种? 答: 利用累加器或寄存器; - 7 -
利用存储器; 利用堆栈。 5.什么是伪指令?常用的伪指令功能如何? 答: 伪指令是汇编程序能够识别并对汇编过程进行某种控制的汇编命令。常用的伪指令包括: ORG,功能是向汇编程序说明下面紧接的程序段或数据段存放的起始地址; END,功能是结束汇编; DB,功能是从标号指定的地址单元开始,在程序存储器中定义字节数据; DW,功能是从标号指定的地址单元开始,在程序存储器中定义字数据空间; EQU,功能是将表达式的值或特定的某个汇编符号定义为一个指定的符号名; BIT,功能是将位地址赋给指定的符号名。 6.设被加数存放在内部RAM的20H、21H单元,加数存放在22H、23H单元,若要求和存放在24H、25H中,试编写出16位无符号数相加的程序(采用大端模式存储)。 答:程序如下: ORG 0000H MOV R0,#21H MOV R1,#23H MOV A,@R0 ADD A,@R1 MOV 25H,A DEC R0 DEC R1 MOV A,@R0 ADDC A,@R1 MOV 24H,A SJMP $ END 7.编写程序,把外部RAM中1000H~101FH的内容传送到内部RAM的30H~4FH中。 答: ORG 0000H MOV DPTR,#1000H MOV R0,#30H MOV R7,#32 LOOP:MOVX A,@DPTR MOV @R0,A INC R0 INC DPTR DJNZ R7,LOOP RET 8.编写程序,实现双字节无符号数加法运算,要求 (R0R1)+(R6R7)→(60H61H)。 答: ORG 0000H MOV A,R1 - 8 -