单片机习题答案(第四章)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章
4.1 程序设计主要分为哪几种?各有什么特点?
答: 1.机器语言程序设计.指令难记,程序可读性和移植性差,不易查错和修改.
2.汇编语言程序设计. 需用汇编程序编译成机器码后方可执行,可以直接访问和操作单片机中的寄存器及存储器单元,对数据的处理表述的非常具体.
3.高级语言程序设计. 编程效率高,可移植性强,通用性强,但必须经过编译
4.2 AT89C51常用的汇编语言伪指令有哪些?它们的作用是什么?
答:伪指令有: ORG、END、EQU、DATA、DW、DS、BIT等,作用略
4.3 汇编语言程序设计分哪几个步骤?每个步骤的主要任务是什么?
答:P60页略
4.4 设内部RAM中存有两个有符号数A和B,求A和B之差,若溢出,则将两数均清零;否则,两数保持不变。
程序如下:
MOV R0,#A
MOV A,@R0
MOV R0,#B
SUBB A,@R0
JNB OV,OVER
MOV @R0,#00H
MOV R0,#A
MOV @R0,#00H
OVER: RET
4.5 已知片内30H单元中存有一个8位无符号数。编程将它们乘2,再存回原处。设乘完结果不超出一个字节。
程序如下:
ORG 0000H
MOV A,30H
RL A
MOV 30H,A
RET
4.6编写程序,把片外RAM从2000H开始连续存放的8个数据送到片内30H开始的单元中。
程序如下:
ORG 0000H
MOV R7,#08H
MOV DPTR,#2000H
MOV R0,#30H
LOOP1: MOVX A,@DPTR
MOV @R0,A
INC DPTR
INC R0
DJNZ R7,LOOP1
RET
4.7已知片内30H,31H中存有一个16位的二进制数,高位在前,低位在后,请编程将它们乘2,再存回原处。设乘完结果不超出双字节。
程序如下:
ORG 0000H
MOV A,31H
CLR CY
RLC A
MOV 31H,A
MOV A,30H
RLC A
MOV 30H,A
AJMP $
4.8 若有两个无符号数X,Y分别存放在外部数据存储器50,51单元中,试编写一个程序,实现X*5+Y,结果高8位存入片内42单元,低8位存入片内43单元。
程序如下:
ORG 0000H
MOV DPTR,#0050H; X先乘2
MOVX A,@DPTR
MOV 43H,A
CLR CY
RLC A
MOV R0,A
CLR A
ADDC A,42H ; 高位存
RL A
MOV 42H,A
MOV A,R0 ;x再乘2
CLR CY
RLC A
MOV R0,A
CLR A
ADDC A,42H ;存高位
MOV 42H,A
MOV A,R0 ;4x再加x
CLR CY
ADD A,43H
MOV 43H,A
CLR A
ADDC A,42H
MOV 42H,A
INC DPTR ;5x+y
MOVX A,@DPTR
CLR CY
ADD A,43H
MOV 43H,A
CLR A
ADDC A,42H
MOV 42H,A
AJMP $
4.9 统计片内RAM20H-50H单元中所有大于0AH的数据的数目,并将结果放入片外RAM1000H单元中。
程序如下:
VOR EQU 0AH
ORG 0000H
MOV R1,#20H
MOV A,#00H
L4: MOV @R1,A
INC R1
INC A
CJNE R1,#51H,L4
L5: MOV DPTR,#1000H
MOV A,#00H
MOVX @DPTR,A
MOV R6,#00H;计数器清零
MOV R0,#20H;地址寄存器初值
L3: MOV A,@R0
CLR C
CJNE A,#VOR,L1
SJMP L2
L1: JC L2
INC R6
L2: INC R0
CJNE R0,#51H,L3
MOV DPTR,#1000H
MOV A,R6
MOVX @DPTR,A
SJMP $
4.10 有10个单字节数据,连续存放在片外2000H开始的区域中,试求出这10个数
的总和,并将结果存入片内20H开始的单元,低位先存。
程序如下:
ORG 0000H
MOV R7,#10
MOV DPTR,#20H
MOV 20H,#00H
MOV 21H,#00H
LOOP: MOVX A,@DPTR
ADD A,21H
MOV 21H,A
CLR A
ADDC A,20H
MOV 20H,A
INC DPTR
CLR CY
DJNZ R7,LOOP
AJMP $
4.11编写程序,令其完成立即数6F5DH减去立即数13B4H,并把操作结果存入内部RAM的30H和31H单元,30H单元存放差的低8位,31H单元存放高8位。
程序如下:
ORG 0000H
CLR C
MOV A,#5DH
SUBB A,#0B4H
MOV 30H,A
MOV A,#6FH
SUBB A,#13H
MOV 31H,A
SJMP $