当前位置:文档之家› 单片机第4章习题答案.docx

单片机第4章习题答案.docx

第4章习题答案
一、填空题
1.机器语言
2.机器汇编、手工汇编
3・ AREA1 二1000H、BUF二1004H、TIME二0111、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,…,X n
功能:从指定地址开始,存放若干字节数据。

(3)字定义伪指令格式:[标号:]DW Yl, Y2,…,Yn
功能:从指定地址开始,存放若干字数据。

(4)汇编结束伪指令END
功能:该伪指令指出结束汇编,即使后面还有指令,汇编程序也不处理。

(5)赋值伪指令格式:标号EQU表达式
功能:将表达式的值(数据或地址)赋给标号。

(6)位定义伪指令格式:[标号]BIT位地址
功能:将位地址赋给标号。

4.汇编语言程序设计分为哪几个步骤?
答:汇编语言程序设计一般要经过以下几个步骤:
(1)分析问题,明确任务
(2)确定算法
(3)画出程序流程图
(4)编写源程序
(5)汇编和调试
5.结构化程序设计有哪几种常用的程序结构?
答:顺序结构、分支结构、循环结构和子程序结构
6.子程序调用时,参数的传递方法有哪几种?
答:常用的参数传递方法有:工作寄存器或累加器、指针寄存器、堆栈和程序段等。

7.分析下列程序的功能。

X DATA 30H
Y DATA 3211
MOV A, X
JNB ACC. 7, TRUE
CPL A
ADD A,
TRUE:MOV Y, A
答:该段程序的功能是:当30H单元的最高位不为0时,则把30H单元的内容送32H 单元,当30H单元的最高位为0时,则把30H单元的内容求反加1后送32单元。

8.下列程用段汇编后,从3000H单元开始的各有关存储单元的内容是什么?
ORG 3000H
TABl EQU 3234H
TAB2 EQU 4000H
DB 'START'
DW TABl,TAB2,9000H
答:从3000H 单元开始各单元的内容为:53H、54H、41H、52H、54H、32H、34H、40H、00H、90H、00H
三、应用题
1.
ORG 010011
0100H: E530 MOV A, 3011
0102II: 30E703 JNB ACC. 7, JING
0105II: F4 CPL A
0106II: 2401 ADD A, #01H
0108H: F532 JING: MOV 3211, A
010AII: 80FE SJMP $
2.编成将片内RAM50IK 51H单元中的两个无符号中较小的数存于6011单元中。

0RG 100011
START: CLR C
MOV A, 50H
SUBB A, 5111
JC NEXT
MOV A,51H
NEXT: MOV A, 5011
MOV 6011, A
SJMP $
END
3. 从片内RAM 的2211单元开始有一无符号数据块,其长度在20H 单元,找出数据块中的最 小值,并存于片内RAM 的2111单元。

ORG 200011
CLR A
MOV R7, 2011
MOV RO, #2211
LOOP : CLR C
SUBB
A, @R0 JC NEXT
MOV A, @R0
NEXT: INC RO
叮NZ R7, LOOP
MOV 2111, A
SJMP
$ END
4. 试编一程序将内部RAM301I 〜3FH 单元数据传送到外部RAM 首址为OFOOH 的单元中去。

5. 有两块数据分别在内部RAM 2011〜2911、3011〜3911,现将两块数据对换,试编程。

ORG 200011
MOV R0, #2011
MOV R1,#3OI1
MOV R7, 0AI1
MOV A, @R0
XCH A, @R1
MOV @R0, A
INC R0
LOOP: ORG 200011
MOV R0, #3011
MOV R7,#10H
MOV DPTR, tfOFOOH
MOVX
A, @R0 MOVX
©DPTR, A INC
R0 INC
DPTR SJMP
$
END
LOOP:
INC R1
DJNZ R7, LOOP
SJMP $
END
6.编程实现:
「X X<10
Y= V X210WXV15
L 2X X215
设X变量存于3011单元,y值存于3HI单元。

ORG 1000H
CLR c
MOV A, 30H
CJNE A, #10, NEXT 1
NEXT1: JC NEXT2 ;x<10
CJNE A,#15,NEXT3
NEXT3: JC NEXT4 ;10Wx〈15
RLC A
SJMP NEXT2
NEXT!: MOV B, A
MUL AB
NEXT2: MOV 3111, A
SJMP $
END
7.编程将内部RAM 30H中的压缩BCD码转换成ASCII码,并存入31H和32H单元。

ORG 1000H
MOV R0, #3111
MOV A, 30H
ANL A, #0FH
ORL A, #30H
MOV @R0, A
INC RO
MOV A, 30H
ANL A, #FOH
SWAP A
ORL A,#30H
MOV @R0, A
SJMP $
END
8.在片外2000H 开始的单元屮有100个有符号数,编程统计其屮正数、负数、零的个数。

设在寄存器RO. R1和R2中分别存放正数、负数和零的个数。

9. 从内部RAM 2411单元开始存放有30个用ASCII 码表示的字符和数据,现耍找B 字符, 如果找
到字符就转移到其处理程序,若找不到B 直至找完则停机。

试编程。

解:字符B 的ASCII 码值为66。

ORG 2000H
MOV R0, #2411
MOV R7,#30
MOV A, @R0
LOOP: CJNE A, #66,NEXT1
ACALL CHULI
NEXT1: INC R0 LOOP: NEXT1: NEXT3: ORG 300011
MOV R7,#100
MOV DPTR, #2000H
CLR A
MOV R0, A
MOV Rl, A
MOV R2, A
MOVC A, @A+DPTR
CJNE A, #00, NEXT
1
TNC R2
SJMP NEXT3
JC NEXT2
INC R0
SJMP NEXT3
INC A
DJNZ R7, LOOP
SJMP $
END
DJNE R7, LOOP
SJMP $
END
10. 设有30个无符号数,依次存放在以BLOCK 为首地址的片外RAM 中,要求按照由小到大 排序,并存入原存储区屮。

11. 试编程将内部RAM 26H 单元位2、4、6取反后送P] 口。

ORG 1000H
MOV A, 26H
XRL A, 00010100
MOV Pl, A
SJMP $
END
12. 若单片机的晶振频率为6MIIz,试编写一段延时子程序,其延时时间为500mso ORG 2000H
MOV R3,#10
DELI:
MOV R4,#200 DEL2:
MOV R5, #60 DEL3: DJNZ R5, DEL3
SORT: L00P1: ORG 1000H
MOV R1,#BLOCK
MOV R7, #30
CLR
F0 MOV A, @R1
MOV R2, A INC
R1 CLR
C SUBB
A, @R1 JC
L00P2 SETB F0
MOV A, R2
XCH A, @R1
DEC R1
L00P2: XCH A, @R1
INC R1
DJNZ R7, L00P1
JB F0, SORT
SJMP
$
END
NOP
DJNZ R4,DEL2 DJNZ R3, DELI RET。

相关主题