第二章 练习题答案 1.将下列各二进制数转换为十进制数。 (1)11011110B=222D (2)01011010B=90D 第二章 练习题答案 1.将下列各二进制数转换为十进制数。 (1)11011110B=222D (2)01011010B=90D (3)10101011B=171D (4)1011111B=95D 2.将第一题中各二进制数转换为十六进制数。 (1)11011110B=DEH (2)01011010B=5AH (3)10101011B=ABH (4)1011111B=5FH
第一章 作业答案 3.将下列各数转换为十六进制数。 (1)224D=E0H (2)143D=8FH (3)01010011BCD=35H 第一章 作业答案 3.将下列各数转换为十六进制数。 (1)224D=E0H (2)143D=8FH (3)01010011BCD=35H (4)00111001BCD=27H 4. 分别有6根地址线和11根地址线的存储器,各可寻址多少个存储单元? 答:n条地址线可以寻址2n个存储单元。 所以:6根地址线可寻址64个存储单元 11根地址线可寻址2048个存储单元
第一章 作业答案 5.半导体存储器可分为几类?各有何特点和用处? 答:半导体存储器可分为只读存储器(ROM)和随机存储器(RAM)。 第一章 作业答案 5.半导体存储器可分为几类?各有何特点和用处? 答:半导体存储器可分为只读存储器(ROM)和随机存储器(RAM)。 1)只读存储器ROM(Read Only Memory)在使用时只能读出而不能写入,且断电后ROM中的信息不会丢失。 ROM按存储信息的方法又可分为: 掩膜ROM、 可编程的一次只读存储器OTP 、可擦写的只读存储器EPROM 、可电改写只读存储器EEPROM 。新型的非易失性存储器如FLASH,从原理上看,属于ROM型存储器;但是从功能上看,由于可以随时改写信息,又相当于RAM。并且集成度高、成本低、体积小、电擦除,读写方便等。 2)随机存储器RAM(Read Access Memory): 又称读/写存储器。RAM按照存储信息的方式,可分为静态和动态两种。
第三章 练习题答案 1. 什么是指令,什么是程序,什么又是微处理器器的指令集? 指令是微机指挥各部件工作的指示和命令,包括操作码和操作数。 第三章 练习题答案 1. 什么是指令,什么是程序,什么又是微处理器器的指令集? 指令是微机指挥各部件工作的指示和命令,包括操作码和操作数。 程序是完成特定功能的指令的有序集合。 指令集是一种处理器能够执行的所有指令的集合。 2. 简述51单片机的特殊入口地址和上电后程序的执行过程。 MCS51单片机有6个特殊地址:一个复位入口地址和5个中断入口地址,分别为0000H、 0003H、 000BH、 0013H、 001BH、 0023H 计算机执行指令的过程分为三个阶段: (1)取指令:根据程序计数器PC中的值(程序指针),从ROM读出现行指令,送到指令寄存器; (2)分析指令:将指令寄存器中的指令操作码取出后进行译码,分析该指令要求实现什么操作,如执行数据传送,还是加、减等运算等,发出相应的控制信号。 (3)执行指令:取出操作数,然后完成操作码规定的操作要求。
第三章 练习题答案 3. 介绍MCS-51对各种存储空间的划分和管理。 51单片机的存储器采用哈佛结构,程序存储器和数据存储器是分开寻址的。 第三章 练习题答案 3. 介绍MCS-51对各种存储空间的划分和管理。 51单片机的存储器采用哈佛结构,程序存储器和数据存储器是分开寻址的。 (1)有片内片外统一编址的64KB程序存储器(16位地址);片内ROM(0000H~0FFFH)与片外ROM的低4KB地址空间相同,只能用其中之一; (2)片内数据存储器,寻址范围:00H~FFH;其中00H~7FH是通用RAM,80H~FFH中有定义的21个特殊功能寄存器。 (3)片外数据存储器64KB(16位地址)。 片内RAM(00H~FFH)与片外RAM的低地址相同,要用不同的指令访问。
第三章 练习题答案 5. 复位后,各个SFR中的值是什么?选择了哪个工作寄存器组? MCS51单片机复位后,各个SFR中的值为: 第三章 练习题答案 5. 复位后,各个SFR中的值是什么?选择了哪个工作寄存器组? MCS51单片机复位后,各个SFR中的值为: ⑴(PC)=0000H; ⑵(SP)=07H; ⑶(PSW)=00H; ⑷ P0~P3口锁存器全为1,可用作输入; ⑸ 除串行数据缓冲器SBUF为随机数外,其余SFR均清0。 选择的工作寄存器组为0组。
第三章 练习题答案 6. PSW中都有哪些标志位,它们各有什么作用? 第三章 练习题答案 6. PSW中都有哪些标志位,它们各有什么作用? PSW用于记录程序运行结果的状态。常用的状态标志有Cy(进位标志)、AC(半进位标志)、P(A中 “1”个数的奇偶性)、溢出标志OV。 Cy:加法发生器进位或减法发生借位时置1,否则为0; AC:加法发生器半进位或减法发生半借位时置1,否则为0; P :反映A中内容1的个数的奇偶性,偶数个1则P=0,奇数个1则P=1; OV:带符号数加减法时,运算结果超出8位带符号数所能表示的范围时,OV=1,否则为0。
第三章 练习题答案 22个SFR(PC没有地址),11个可位寻址,DPTR和PC16位 第三章 练习题答案 7. 8051有几个特殊功能寄存器(SFR)?其中16位的又有哪些? 22个SFR(PC没有地址),11个可位寻址,DPTR和PC16位 8. 如果使用一片8031组建一个单片机系统,EA应该如何连接? 接地
第三章 练习题答案 9. MCS51共有几个并行端口,它们有什么特殊功能? 第三章 练习题答案 9. MCS51共有几个并行端口,它们有什么特殊功能? PIN 1-8: P1.0~P1.7 是带有内部上拉电阻的8位准双向I/O口。可驱动4个TTL负载。 PIN 32-39: P0.0~P0.7第一功能是准双向I/O接口,做输出口使用时,需要外接上拉电阻。第二功能是分时复用为低8位地址总线和双向数据总线,在外扩片外存储器或扩展I/O接口时使用。可驱动8个TTL负载。 PIN 10-17: P3.0~P3.7 是带有内部上拉电阻的8位准双向I/O口。可驱动4个TTL负载,同时还具有第二功能。 PIN 21-28: P2.0~P2.7第一功能是准双向I/O接口,带有内部上拉电阻。第二功能是在扩展片外存储器时,作高8位地址总线。可驱动4个TTL负载。
第四章 练习题答案 累加器A Direct直接 @Ri间址 Rn寄存器 data立即数 第四章 练习题答案 用图示法画出MCS-51的15种片内数据传送指令操作数间的关系: 答: 试比较MCS-51与片外RAM和ROM进行数据传送的异同。 相同点:片外数据传送指令均以A作为与片外存储器间交换数据的寄存器。 不同点:片外RAM采用间址寻址,有读写两种方式,指令有: MOVX A,@DPTR(/@Ri)、 MOVX @DPTR(/@Ri),A ROM只能用变址寻址读出,指令有:MOVC A,@A+DPTR(/PC)。 累加器A Direct直接 @Ri间址 Rn寄存器 data立即数
第四章 练习题答案 写出程序将片内RAM20H~2FH中的数据传送到片内30H~3FH对应单元中。 SOLUTION sample1: 间址传送 MOV R0,#20H ;source data pointer MOV R1,#30H ;destination pointer MOV R2,#16 ;moving length Loop: MOV A,@R0 ; MOV @R1,A INC R0 ;point to the next datum INC R1 DJNZ R2,Loop SJMP $
第四章 练习题答案 SOLUTION sample2: 堆栈传送 MOV R2,SP ;it is a good habit to protect stack area MOV R0,#20H ;source MOV SP,#2FH ;destination Loop: MOV A,@R0 PUSH ACC ; ACC should be used to substitute A INC R0 CJNE R0,#30H,Loop MOV SP,R2 ;restore the preserved stack pointer(SP) SJMP $ 这里仅说明片内堆栈共享了片内RAM空间,试编制程序将SP作为源指针进行片内数据传送。
第四章 练习题答案 写出程序将片外RAM2000H~207FH中的数据传送到3000H~307FH的对应单元中。
第四章 练习题答案 将累加器A中的两位16进制数值转化成两个字节的ASCII码,存放到20H、21H单元中。 PUSH ACC ;transfer lower hex digit to ASCII LCALL H2ASC MOV 20H,A ;save results to 20H,21H POP ACC SWAP A ;transfer higher hex digit to ASCII MOV 21H,A SJMP $ ;HALT H2ASC: ANL A,#0FH MOV DPTR,#ASCTAB MOVC A,@A+DPTR ;search for the corresponding AscII code RET ;return to main procedure ASCTAB:DB “0123456789ABCDEF” 说明: 1.ASCII码表中以字符串形式列出的16进制数,在汇编后是以对应字符的ASCII方式存放到连续的存储单元中的,等价于:DB ‘0’,‘1’,‘2’,‘3’,……,E’,’F’。 2.子程序调用能精简代码长度,增加程序可读性;但会增加程序执行时间。 3.子程序调用过程中,参数可以通过寄存器、固定RAM单元或堆栈来传递。 4.无论是在主程序还是在子程序中,必须维持堆栈平衡才能使程序运行正确。
第四章 练习题答案 补充:由于16进制数和对应的ASCII码之间有如下关系: Hex:0~9 30H~39H +30H Hex:A~F 41H~46H +37H 可以用计算法重写以上程序H2ASC子程序,如下: H2ASC2: ANL A,#0FH CJNE A,#0AH,NEXT NEXT: JC ADD30 ADD A,#7H ADD30: ADD A,#30H RET
第四章 练习题答案 写出将20H~2FH中的非压缩BCD码转换为压缩BCD码存于30H开始连续单元中的程序。 MOV R0,#20H LOOP: ACALL COMP DJNZ LOOP ;8 times SJMP $ ; COMP: param R0 source ptr, R1 dest ptr, function: compress 2 BCD digits into 1 byte COMP: MOV A,@R0 ;read source high4 SWAP A INC R0 XCHD A,@R0 ;compressed with source low4 MOV @R1,A ;save to the destination unit INC R1 RET