单片机第4章习题答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档