51单片机第4章作业答案-清华大学出版社-万福君 下载本文

内容发布更新时间 : 2024/5/18 21:56:58星期一 下面是文章的全部内容请认真阅读。

第四章

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

LP1: MOVX A, @DPTR MOV @R1, A INC R1

INC DPTR DJNZ R0, LP1 END

7. 在内部RAM的BLOCK开始的单元中有一无符号数据块,数据块长度存入LEN单元,试编程求其中的最小数,并存入MINI单元。

START: EX:

MOV

MOV MOV CLR SUBB JC XCH INC DJNZ MOV R0, BLOCK R1, LEN A, @R0 CY A, @R0 EX A, @R0 R0 R1, START MINI, A

; ; 取起始地址 取数据块长度

14.设变量X存入VAR单元,函数F存入FUNC单元,试编程按下式要求给F赋值:

F=1若X>20;

F=0,若20≥X≥10; F=-1,若X<10

U1:

U2: U3:

CLR MOV SUBB JC MOV SUBB JC MOV SJMP MOV SJMP MOV ……

CY A, VAR A, #10 U1 ; 小于10,跳转 A, VAR A, #21 U2 ; 小于21(小于等于20) FUNC, #1 U3

FUNC, #(-1) (或者-1的补码#0XFF) U3

FUNC, #0

21.试编一3字节数乘1字节数子程序MUL4。 功能:3字节乘以1字节,乘积为4字节 入口:(R0)=被乘数低字节地址指针,(R2)=乘数 出口:(R1)=乘积的高字节地址指针

MUL4: LOOP: MOV

A, R1 SUBB A, #3 MOV R1, A ;修改R1的值,使其指向低字节

MOV R3, 0 ;R3中包含乘积高位的累加和,初始值为0 MOV R4, #3 ;R4为循环乘加次数 MOV A, @R0 ;取被乘数 MOV B, R2 ;取乘数

MUL AB

ADD A, R3 ;乘积的低位和上次乘积的高位相加 MOV @R1,A ;将结果的低位送保存 MOV A, B ADDC A, #0 ;将进位加到新的高位上

MOV R3, A ;R3中保存的是最新的高位值 INC R0 ;修改被乘数指针 INC R1 ;修改结果指针

DJNZ R4, LOOP MOV A, R3 MOV @R1,A

;将最后一次的高位值送内存保存

RET