单片机习题答案(第四章)

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

相关文档
最新文档