当前位置:文档之家› 第三章习题与思考题参考答案

第三章习题与思考题参考答案

第三章习题与思考题参考答案
第三章习题与思考题参考答案

习题与思考题

3-8 按要求写出相应的指令。

(1)把寄存器 R6 的内容送到累加器 A 中。 (2)把外部 RAM 1000H 单元的内容传送到内部 (3)清除内部 RAM 3FH 单元的高 4 位。 (4)使累加器 A 的最低位置 1。 (5)清除进位位。

(6)使 ACC.4 和 ACC.5 置 1。

(7)把外部 ROM 2000H 单元中的内容送到内部 (8)把外部 ROM 2000H 单元中的内容送到外部 答案:

1) MOV A,R6 2)

MOV DPTR,#1000H MOVX A,@DPTR

MOV

R0,#30H

MOV

@R0,A 3) ANL 3FH,#0FH 4) ORL A,#01H

5) CLR C

6) ORL

A,#30H 7)

CLR A

MOV DPTR,#2000H

MOVC

A,@A+DPTR

MOV

20H,A

8)

CLR A

MOV DPTR,#2000H

MOVC

A,@A+DPTR

MOV

DPTR,#3000H

MOVX

@DPTR,A

3-10 编写程序段完成如下要求。

(1)将寄存器 R0 中的内容乘以 10(积小于 256)。

(2)将片内 RAM 30H 单元开始的 15 个字节的数据传送到片外 RAM 3000H 开始的单元中。

(3)将片外 RAM 2000H 开始的 5 个字节的数据传送到片内 RAM 20H 开

RAM 30H 单元中。

RAM 的 20H 单元中。 RAM 的 3000H 单元中。

始的单元中。

(4)有 10 个字节的二进制数存放在片内 RAM 以 40H 开始的单元内, 编程找出其中的最大值并存于内部 50H 单元中。

(5)将片外 RAM 空间 2000H~200AH 中的数据的高 4位变零,低 4位不 变,原址存放。

6)将外部 RAM 2040H 单元的内容与 3040H 单元的内容互换。 答案:

MOVX @DPRT,A INC R0 INC DPTR

DJNZ R7,LOOP SJMP $ END

(3) MOV DPTR,#2000H

MOV R0,#20H MOV R7,#05H

LOOP: MOVX A,@DPTR MOV @R0,A INC R0

INC DPTR DJNZ R7,LOOP END

(4) ORG 0000H

MOV A,40H;A 寄存器放最大值,且初始化最大值(默认第一个数)

MOV R3,#09H ;比较次数 MOV R0,#41H

START: CJNE A,@R0,LOOP

LOOP: JNC LOOP1 ;如果比 A 小,则跳转到 LOOP1

MOV A,@R0 ;如果比 A 大,则更新 A 的值

(1) MOV MOV MUL MOV

(2) ORG MOV MOV MOV LOOP: MOV

B,#0AH

A,R0 AB

R0,A

0000H

R0,#30H

DPTR,#3000H R7,#0FH

A,@R0

LOOP1: INC R0

DJNZ R1,LOOP SJMP $

(6) MOV DPTR,#2040H MOVX A,@DPTR MOV R0,#20H MOV @R0,A MOV

DPTR,#3040H MOVX A,@DPTR XCH @R0,A MOVX @DPTR A MOV A,@R0 MOV DPTR,#2040H MOVX @DPTR,A 3-15 设有一带符号的十六位数以补码形式存放在 R2、R3 寄存器中,试

编制求其原码的程序。

ORG 0000H

START: MOV A,R3

JB ACC.7,NEXT ;判读符号位,如果是正数则原码与补码一样,如果为 负,求原码

的方法是符号位不变,其余位取反加 1

MOV R3,A

HERE: SJMP $

NEXT: XRL A,#7FH ;高八位,符号位不变,其余取反

MOV R3,A ;放回 R3 MOV A,R2 ;低八位 XRL A,#0FFH ;取反 ADD A,#01H ;加 1 MOV R2,A ;放回 R2

DJNZ MOV SJMP END

(5) MOV MOV LOOP: MOVX ANL MOVX INC R3 START 50H,A $ DPTR,#20000H

R1,#0BH

A,@DPTR

A,#0FH

@DPTR,A DPTR

MOV A,R3 ;看低八位是否有向高八位进位 ADDC A,#00H MOV R3,A SJMP $ END

3-16 设有一不带符号的十六进制数组,存放在 8031 单片机片内 RAM 以 BUFFER 为首址的连续单元中, 其长度为 30 个字节, 要求统计小于 10 ,等

于10及大于10的数的个数,并把它们分别存放到片内 RAM 的LESS 、EQUAL 、 BIG 单元中,试编制实现上述要求的程序并画出相应的流程图。

2000H~2004H 单元(以压缩 BCD 码存放)。

ORG 0000H MOV R2,#05H

MOV DPTR,#1000H

MOV R0,#20H

MOVX A,@DPTR

LOOP: BUFFER DATA 10H LESS DATA 30H

EQUAL DATA 31H

BIG

DATA 32H MOV R0,#BUFFER

MOV R7,#1EH

MOV LESS,#00H

MOV

EQUAL,#00H

MOV

BIG,#00H

NEXT: CJNE

@R0,#0AH, LOOP1; 循环次数

INC EQUAL

AJMP LOOP3

LOOP1: JC LOOP2

INC BIG

AJMP LOOP3

LOOP2: INC LESS LOOP3:

INC

R0

DJNZ

R7, NEXT

SJMP

$

END

3-17 在外部 RAM 1000H 单元开始

BCD 10个用 ASCII 码

码,然后存放在

ORG 0000H 表示的 0~9 之间的数字,请编程将它们转换成

ANL A,#0FH

MOV R4,A

INC DPTR

MOVX A,@DPTR

ANL A,#0FH

SWAP A

ADD A,R4

MOV @R0,A

INC R0

INC DPTR

DJNZ R2,LOOP

MOV R5,#05H

MOV R0,#20H

MOV DPTR,#2000H

LOOP1: MOV A,@R0

MOVX @DPTR,A

INC R0

INC DPTR

DJNZ R5,LOOP1

SJMP $

END

3-18 设有50 个无符号8 位二进制数,存放在8031 单片机内部RAM 以BOFER 为首址的连续单元中,试编制将其中最小数存放到内部RAM 的MIN 单元的程序并画出相应的流程图。

ORG 0000H

BOFER DATA 20H

MIN DATA 60H

MOV R2,#31H ;循环49 次

MOV R1,# BOFER+1

MOV MIN,BOFER ;把最小值放A,且初始化时把第一个数放入 A LOOP: CJNE @R1,MIN,LOOP1

LOOP1: JNC LOOP2 ; @R1>MIN

MOV MIN,@R1 ; MIN >@R1 ,MIN 要更新

LOOP2: INC R1

DJNZ R2,LOOP

SJMP $

END

3-19 设有一字符串存放在8031 单片机内部RAM 以20H 为首址的连续

相关主题
文本预览
相关文档 最新文档