哈工大单片机实验报告(2)

2019-08-03 14:35

问题回答: R4、R5定义的目的地址单元中转移之前为随机数,转移后内容与以R2、R3开始的的源地址单元中20个字节内容相同,即实现了数据的传送。

六、实验源程序

ORG 0000H

AJMP MAIN ORG 07B0H

MAIN: MOV R7, #20H

MOV R6, #00H MOV R2, #00H MOV R3, #00H MOV R4, #00H MOV R5, #30H LOOP: INC R3

INC R5 MOV DPL,R3

MOV DPH, R2 MOVX A, @DPTR MOV DPL, R5 MOV DPH, R4 MOVX @DPTR, A

CJNE R3, #021H, LOOP

END

实验六 查找相同数个数

一、实验目的

熟悉汇编语言编程。

二、实验内容

在2000~200Fh中查出有几个字节是零,把个数放在2100h中。

-6-

三、程序框图

四、实验过程

(1)实验中利用R0放置需查找段长度,即设置其值为10H,设置R1初值为00H,用于存放等于零数据的个数。

(2)从2000H单元开始,程序中利用等于零跳转指令JZ,实现找到0则R1加一计数的功能,每次检查完一个单元R0减1,指针下移,直到R0等于0结束循环。循环终止后,将R1内容存入2100H中即可。

五、实验结果及分析

问题回答:若需查找0FFH,只需将语句JZ LOOP1改为CJNZ R0, #0FFH, LOOP1即可,即数据等于0FFH时跳转到计数+1的程序段进行计数。

六、实验源程序

;查找相同数个数 ORG 0000H

LJMP MAIN ORG 0AA0H

MAIN: MOV DPL, #00H

MOV DPH, #20H

-7-

MOV R0, #10H MOV R1, #00H

LOOP: MOVX A, @DPTR JZ LOOP1

DEC R0 INC DPTR SJMP LOOP2

LOOP1: INC R1

DEC R0 INC DPTR

LOOP2: CJNE R0, #00H, LOOP

MOV DPL, #00H MOV DPH, #21H MOV A, R1 MOVX @DPTR, A

END

实验七 无符号双字节快速乘法子程序

一、实验目的

掌握MCS-51汇编语言程序设计方法。

二、实验内容

将(R2 R3)和(R6 R7)中双字节无符号整数相乘,乘积送R4 R5 R6 R7中。

三、程序框图

四、实验过程

本程序是利用单字节的乘法指令MUL,根据下面的公式实现双字节数的乘法。

(R2 R3)×(R6 R7)

-8-

= ((R2)×28+(R3))×((R6)×28+(R7))

= (R2)×(R6)×216+(R2)×(R7)+(R3)×(R6)×28+(R3)*(R7)

将乘数与被乘数高低字节拆开分别相乘,然后再将每个高字节因子向前移动8位进行调整,进行加权求和。利用ADDC语句可实现带进位的加法运算。得到的最终结果存入R4、R5、R6、R7寄存器中。

五、实验结果及分析

寄存器R2、R3、R6、R7分别输入01、10、11、10,运行程序,即进行0110H×1110H的运算,得到结果为00122100H存放在R4、R5、R6、R7寄存器中,故R4、R6中的内容是00H和21H。

六、实验源程序

;无符号双字节快速乘法子程序

ORG 0970H

MAIN: MOV R2, #00H

MOV R3, #02H MOV R6, #00H MOV R7, #05H MOV A, R3 MOV B, R7 MUL AB XCH A, R7 MOV R5, B MOV B, R2 MUL AB ADD A, R5 MOV R4, A CLR A

ADDC A, B MOV R5, A MOV A, R6 MOV B, R3 MUL AB ADD A, R4 XCH A, R6

-9-

XCH A, B ADDC A, R5 MOV R5, A MOV F0, C MOV A, R2 MUL AB ADD A, R5 MOV R5, A CLR A

MOV ACC.0, C

MOV C, F0 ADDC A, B MOV R4, A SJMP $ END

实验八 多分支程序

一、实验目的

掌握汇编语言的编程。

二、实验内容

编写程序,根据送入的数据转移运行。

三、程序框图

四、实验过程

实验中利用散转指令JMP @A+DPTR实现程序的多分支跳转,这里A为变址寄存器,DPTR为基址寄存器。跳转到不同分支的运行结果由LED进行显示,每个分支对应的数码管上显示不同的数字。显示数字由数字七段码送至I/O口显示。在显示程序中利用循环左移加延时子程序调用,实现数字循环显示的效果。

编程中需要注意的是,A需乘以2即左移一位再作为变址寄存器,这是程序中由于分支跳转语句为2个字节所致。

五、实验结果及分析

实验中可以看到选择不同的数字进入不同分支,LED管上会出现不同数字的循环左移显示。

问题回答:如需将循环速度减慢,只要将延时子程序初值变大,或增加循环层数,或者再增加一段循环语句即可,如可进行以下修改:

改为DELAY:

-10-


哈工大单片机实验报告(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:IPRAN几种保护技术

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: