单片机第4章习题答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第4章习题答案
一、填空题
1.机器语言
2.机器汇编、手工汇编
3.AREA1=1000H、BUF=1004H、TIME=01H、ACK=1006H
4.(A)=4FH、(R0)=4BH、(R1)=E5H、(21H)=D8H、(22H)=4BH、(2FH)=E5H
二、简答题
1.什么叫伪指令?伪指令与指令有什么区别?
答:所谓伪指令又称为伪操作,它不象机器指令那样是在程序运行期间由计算机来执行的,它是在汇编程序对源程序汇编时,由汇编程序处理的操作,它们可以完成如数据定义、分配存储器、指示程序结束等功能。
2.汇编语言的格式是怎样的?
汇编语言语句格式为:
标号:操作码操作数;注释
3.MCS-51系列单片机有哪些伪指令?它们的用途是什么?
(1)编起始地址命令ORG
功能:规定此命令之后的程序或数据的存放起始地址。
(2)定义字节伪指令格式:[标号:] DB X1,X2,…,Xn
功能:从指定地址开始,存放若干字节数据。
(3)字定义伪指令格式:[标号:] DW Y1,Y2,…,Yn
功能:从指定地址开始,存放若干字数据。
(4)汇编结束伪指令END
功能:该伪指令指出结束汇编,即使后面还有指令,汇编程序也不处理。
(5)赋值伪指令格式:标号 EQU 表达式
功能:将表达式的值(数据或地址)赋给标号。
(6)位定义伪指令格式:[标号] BIT 位地址
功能:将位地址赋给标号。
4.汇编语言程序设计分为哪几个步骤?
答:汇编语言程序设计一般要经过以下几个步骤:
(1)分析问题,明确任务
(2)确定算法
(3)画出程序流程图
(4)编写源程序
(5)汇编和调试
5.结构化程序设计有哪几种常用的程序结构?
答:顺序结构、分支结构、循环结构和子程序结构
6.子程序调用时,参数的传递方法有哪几种?
答:常用的参数传递方法有:工作寄存器或累加器、指针寄存器、堆栈和程序段等。7.分析下列程序的功能。
X DATA 30H
Y DATA 32H
MOV A,X
JNB ACC.7,TRUE
CPL A
ADD A,#01H
TRUE:MOV Y,A
答:该段程序的功能是:当30H单元的最高位不为0时,则把30H单元的内容送32H 单元,当30H单元的最高位为0时,则把30H单元的内容求反加1后送32单元。
8.下列程序段汇编后,从3000H单元开始的各有关存储单元的内容是什么?
ORG 3000H
TAB1 EQU 3234H
TAB2 EQU 4000H
DB ‘START’
DW TAB1,TAB2,9000H
答:从3000H单元开始各单元的内容为:53H、54H、41H、52H、54H、32H、34H、40H、00H、90H、00H
三、应用题
1.
ORG 0100H
0100H:E530 MOV A,30H
0102H:30E703 JNB ACC.7,JING
0105H:F4 CPL A
0106H:2401 ADD A,#01H
0108H:F532 JING:MOV 32H,A
010AH:80FE SJMP $
2.编成将片内RAM50H、51H单元中的两个无符号中较小的数存于60H单元中。
ORG 1000H
START:CLR C
MOV A,50H
SUBB A,51H
JC NEXT
MOV A,51H
NEXT:MOV A,50H
MOV 60H,A
SJMP $
END
3.从片内RAM的22H单元开始有一无符号数据块,其长度在20H单元,找出数据块中的最小值,并存于片内RAM的21H单元。
ORG 2000H
CLR A
MOV R7,20H
MOV R0,#22H
LOOP:CLR C
SUBB A,@R0
JC NEXT
MOV A,@R0
NEXT: INC R0
DJNZ R7,LOOP
MOV 21H,A
SJMP $
END
4.试编一程序将内部RAM30H~3FH单元数据传送到外部RAM首址为0F00H的单元中去。
ORG 2000H
MOV R0,#30H
MOV R7,#10H
MOV DPTR,#0F00H
LOOP: MOVX A,@R0
MOVX @DPTR,A
INC R0
INC DPTR
SJMP $
END
5.有两块数据分别在内部RAM 20H~29H、30H~39H,现将两块数据对换,试编程。
ORG 2000H
MOV R0,#20H
MOV R1,#30H
MOV R7,0AH
LOOP: MOV A,@R0
XCH A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R7,LOOP
SJMP $
END
6.编程实现:
X X<10
Y= X210≤X<15
2X X≥15
设x变量存于30H单元,y值存于31H单元。
ORG 1000H
CLR C
MOV A,30H
CJNE A,#10,NEXT1
NEXT1: JC NEXT2 ;x<10
CJNE A,#15,NEXT3
NEXT3: JC NEXT4 ;10≤x<15
RLC A
SJMP NEXT2
NEXT4: MOV B,A
MUL AB
NEXT2: MOV 31H,A
SJMP $
END
7.编程将内部RAM 30H中的压缩BCD码转换成ASCII码,并存入31H和32H单元。
ORG 1000H
MOV R0,#31H
MOV A,30H
ANL A,#0FH
ORL A,#30H
MOV @R0,A
INC R0
MOV A,30H
ANL A,#F0H
SWAP A
ORL A,#30H
MOV @R0,A