单片机第五章作业答案

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

单片机第五章作业答案

5.试编制一个子程序将字符串‘MCS-51 Microcomputer’装入外部RAM8000H开始的显示缓冲区。

ORG 0000H

AJMP 0030H

MIAN: MOV DPTR, #8000H

MOV R1, #0

MOV R0, #20

LOOP: MOV A, R1

ADD A, #5

MOVC A, @A+PC

MOVX @DPTR, A ;1B

INC DPTR ;1B

INC R1 ;1B

DJNZ R0, LOOP ;3B

TAB: DB ‘M’,’C’,’S’,’-‘,’5’,’1’,’

‘,’M’,’i’,’c’,’r’,’o’

DB ‘c’,’o’,’m’,’p’,’u’,’t’,’e’,’r’

END

6.试设计一个n字节的无符号十进制数加法子程序,其功能为将(R0)和(R1)指出的内部RAM中两个n字节压缩BCD码无符号十

进制数相加,结果存放于被加数单元中。子程序入口时,R0,R1分别指向被加数和加数的低位字节,字节数n存于R2,出口时R0指向和的最高位字节,CY为进位位。

LEN EQU 30

ORG 0000H

AJMP MAIN

ORG 0030H

MAIN: MOV SP. #60H

MOV R2, #LEN

ACALL ADD_NBYTE

SJMP $

ADD_NBYTE: CLR C

LOOP: MOV A, @R0

ADDC A, @R1

DA A

MOV @R0, A

INC R0

INC R1

DJNZ R2, LOOP

RET

END

8.试设计一个程序,其功能为判断(R2R3R4R5)中压缩BCD码十进制最高位是否为零,若最高位为0,且该十进制数不为0,则通过左移使最高位不为0。

ORG 0000H

AJMP MAIN

ORG 0030H

MAIN: MOV A, R2

ANL A, #80H

JNZ NEXT

CLR C

LOOP: MOV A, R5

RLC A

MOV R5, A

MOV A, R4

RLC A

MOV R4, A

MOV A, R3

RLC A

MOV R3, A

MOV A, R2

RLC A

MOV R2, A

ANL A, #80H

JZ LOOP

NEXT: SJMP $

END

9. 试设计一个双字节无符号整数乘法子程序,其功能为将(R3R2)和(R5R4)相乘,积存放于30H~33H 。 R3R2R5R4R2R4R2R4R2R5R2R5R3R4R3R4R3R5R3R5L L L

×积:

L +结束开始R2×R4累加到结果单元R2×R5累加到结果单元R3×R4累加到结果单元R3×R5累加到结果单元

MULTB: MOV R7, #04 ;结果单元清0

MOV R0, #33H

LOOP : MOV @R0,#00H DJNZ R7,LOOP

MOV A,R2 ;取被乘数低位字节

MOV B,R4 ;取乘数低位字节R4

MUL AB ;R4×R2

ACALL RADD ;调用乘积相加子程序

MOV A,R2 ;取被乘数低位字节R2

MOV B,R5 ;取乘数高位字节R5

MUL AB ;R5×R2

DEC R0 ;积字节指针减1

ACALL RADD ;调用乘积相加子程序

MOV A,R4

MOV B,R3

MUL AB ;R4×R3

DEC R0

DEC R0

ACALL RADD

MOV A,R5

MOV B,R3

MUL A B ;R5×R3

DEC R0

ACALL RADD

DEC R0

RET

RADD:ADD A,@R0 ;累加子程序

MOV @R0,A

MOV A,B

INC R0

ADDC A,@R0

MOV @R0,A

INC R0

MOV A,@R0

ADDC A,#00H ;加进位

MOV @R0,A

RET

11.试设计一个子程序,其功能为将(R0)指出的内部RAM中6个单字节正整数按从小到大的次序重新排列。

S_2_L: MOV R4, #5

CLR F0

PUSH 00H ;R0入栈

POP 01H ;出栈赋给R1

INC R1

LOOP0: MOV A, R4

MOV R5, A

LOOP1: MOV A, @R0

MOV B, A

MOV A, @R1

CJNE A, B, NEXT

SJMP NOCH

NEXT: JNC NOCH

SETB F0

MOV @R0, A

XCH A, B

MOV @R1, A

NOCH: INC R0

INC R1

DJNZ R5, LOOP1

JNB F0, HALT

DJNZ R4, LOOP0

HALT: RET

12.试设计一个子程序,其功能为查表指令:MOVC A,@A+PC,求累加器(A)的平方值,结果送A,入口时(A)<15。

SQRT: ADD A,#1

MOVC A, @A+PC

RET

TAB: DB 0,1,4,9,…,225

相关文档
最新文档