我是靠谱客的博主 灵巧酒窝,最近开发中收集的这篇文章主要介绍单片机--双字节除法程序设计,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

  1. 实验目的和任务

目的:熟悉51单片机的指令系统。

任务:掌握多字节算术程序的设计方法。

  1. 实验内容

被除数存在R0和R1中(R0为高8位),除数存在R2和R3中(R2为高8位),商保存在R4和R5中(R4为高8位),余数存在R6和R7中(R6为高8位)。

  1. 实验过程和结果

①根据上述实验内容,编写汇编语言源程序,并加上相应注释,注意扩展名为“*.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 的值。

                                     

  1. 实验心得

通过本次实验对单片机汇编语言的指令系统的助记符的使用更加熟悉,也加深了对指令功能的理解,也能够通过对流程图的理解自己编写程序,经过编译不断改正自己的错误,从而提升自己的能力。

  1. 附录(代码)

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     

最后

以上就是灵巧酒窝为你收集整理的单片机--双字节除法程序设计的全部内容,希望文章能够帮你解决单片机--双字节除法程序设计所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部