mcs-51第四章答案 汇编语言程序设计

  • 格式:pdf
  • 大小:118.38 KB
  • 文档页数:4

下载文档原格式

  / 4
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第四章汇编语言程序设计

1 题若晶振为12MHz,试编制延时2ms和1s子程序。

答:延时2ms:

DELY: MOV R7, #10

DLY0: MOV R6, #98

NOP

DLY1: DJNZ R6, DLY1

DJNZ R7, DLY0

RET

延时1s:

DELY: MOV R0, #50

LP11: MOV R1, #100

LP22: MOV R2, #100

LP33: DJNZ R2, LP33

DJNZ R1, LP22

DJNZ R0, LP11

RET

4 题试求20H和21H单元中16位带符号二进制补码数的绝对值,并送回20H和21H单元,高位在先,低位在后。

答:方法一:

先判断符号位,若为0则不作任何处理(因为正数的补码数与原数相同,而0的补码数就是0)。若符号位为1,则用0减去该数即可。编程如下:

ORG 1000H

MOV A, 20H

JNB ACC.7, DONE

CLR C

CLR A

SUBB A, 21H

MOV 21H, A

CLR A

SUBB A, 20H

MOV 20H, A

DONE: SJMP $

END

方法二:可用变反加“1”来完成。

ORG 1000H

MOV A, 20H

JNB ACC.7, DONE

CPL A

MOV 20H, A

MOV A, 21H

CPL A

MOV 21H, A

CLR C

MOV A, 21H

ADD A, #1

MOV 21H, A

MOV A, 20H

ADDC A, #0

MOV 20H, A

DONE: SJMP $

END

5题试求内部RAM 30~37H单元8个无符号数的算术平均值,结果存入38H单元。

答:方法一:相加后和放在R3:38H中,然后将结果整体右移3位,得数放在38H单元中。

ORG 1000H

START: MOV R7, #07H

MOV R3, #00H

MOV A, 30H

MOV R0, #31H

LOOP: ADD A, @R0

JNC NEXT

INC R3

NEXT: INC R0

DJNZ R7, LOOP

MOV 38H, A

MOV R7, #3

LOOP1: CLR C

MOV A, R3

RRC A

MOV R3, A

MOV A, 38H

RRC A

MOV 38H, A

DJNZ R7, LOOP1

SJMP $

END

方法二:相加后和放在R3:38H中,然后将R3中的数乘以25,将38H 中的数除以23,然后将两个结果相加,放入38H单元中。

ORG 1000H

START: MOV R7, #07H

MOV R3, #00H

MOV A, 30H

MOV R0, #31H

LOOP: ADD A, @R0

JNC NEXT

INC R3

NEXT: INC R0

DJNZ R7, LOOP

MOV 38H, A

PR: MOV A, R3

MOV B, #32

MUL AB

MOV R3, A

MOV A, 38H

MOV B, #8

DIV AB

ADD A, R3

MOV 38H, A

6题试编一数据块搬迁程序。将外部RAM 2000H~204FH单元中的数,移入内部RAM 30H~7FH单元中。

编程如下:

ORG 1000H

MOV R0, #50H

MOV R1, #30H

MOV DPTR, #2000H

LP1: MOVX A, @DPTR

MOV @R1, A

INC R1

INC DPTR

DJNZ R0, LP1

END