概述
- 实验目的和任务
目的:熟悉51单片机的指令系统。
任务:掌握多字节算术程序的设计方法。
- 实验内容
被除数存在R0和R1中(R0为高8位),除数存在R2和R3中(R2为高8位),商保存在R4和R5中(R4为高8位),余数存在R6和R7中(R6为高8位)。
- 实验过程和结果
①根据上述实验内容,编写汇编语言源程序,并加上相应注释,注意扩展名为“*.asm”,将其保存。
②运行Keil uVision 开发环境,按照“模块化单片机教学实验平台配套的实验指导书1.2.3 节”介绍的方法建立工程simlab2.uV2,CPU 为AT89S51,不用包含启动文件STARTUP.A51。
③编写好的源程序加入工程simlab2.uV2,并设置工程simlab2.uV2 属性,将其晶振频率设置为12MHz,选择输出可执行文件,仿真方式为“Use Simulator”。
④构造(Build)工程simlab2.uV2。如果输入有误进行修改,直至构造正确,生成可执行程序simlab2.hex 为止。
⑤运行程序,并用存储器观察窗口,观察工作寄存器R0~R7 的值。
- 实验心得
通过本次实验对单片机汇编语言的指令系统的助记符的使用更加熟悉,也加深了对指令功能的理解,也能够通过对流程图的理解自己编写程序,经过编译不断改正自己的错误,从而提升自己的能力。
- 附录(代码)
ORG 0000H 定义程序开始的起始地址
MOV R1,#0AH
MOV R0,#24H
MOV R3,#24H
MOV R2,#05H
MOV R7,#00H
MOV R6,#00H 将立即数传送到寄存器
MOV B,#15H 将立即数传送到B
MOV 41H,#00H 将立即数送到41H直接寻址
MOV 40H,#00H 将立即数送到40H直接寻址
DIVD11: CLR C 进位标志清零
MOV A,R1 将R1中内容传送到A
RLC A 经过进位标志位的累加器循环左移
MOV R1,A 将累加器内容传送到寄存器R1
RLC A 经过进位标志位的累加器循环左移
MOV A,R2 将R2中内容传送到A
RLC A 经过进位标志位的累加器循环左移
MOV R2,A 将累加器内容传送到寄存器R2
MOV A,R7 将R7中内容传送到A
RLC A 经过进位标志位的累加器循环左移
MOV R7,A 将累加器内容传送到寄存器R7
RLC A 经过进位标志位的累加器循环左移
MOV R6,A 将累加器内容传送到寄存器R6
MOV A,R7 将R7中内容传送到A
SUBB A,R3 累加器A内容减去寄存器R3内容
MOV 40H,A 将A中内容传送到40H
MOV A,R6 将R6中内容传送到A
SUBB A,R2 累加器A内容减去寄存器R2内容
MOV 41H,A 将A中内容传送到41H
JB f0,DIVD
JC DIVD22
DIVD: MOV R7,40H 将40H中内容传送到R7
MOV R6,41H 将41H中内容传送到R6
INC R5 寄存器增1
DIVD22:DJNZ B,DIVD11
CLR C 进位标志清零
END
最后
以上就是灵巧酒窝为你收集整理的单片机--双字节除法程序设计的全部内容,希望文章能够帮你解决单片机--双字节除法程序设计所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复