PICFA简单计算器设计报告汇编语言四位无符号整数加减乘除

合集下载

PIC16F877A简单计算器设计报告 汇编语言 四位无符号整数加减乘除

PIC16F877A简单计算器设计报告 汇编语言 四位无符号整数加减乘除

课程设计报告课程名称:单片机原理与接口技术课程设计设计题目:简单计算器院系:机电工程学院班级:2010级电气工程及其自动化专业姓名:学号:指导教师:史丽萍,闫广明,张波,张扬,王冠然设计时间:2013年12月一、设计方案描述与论证我们所设计的是一个简单计算器,它具有四位数以内的整数加减乘除运算。

可以在输入错误的时候退格,也可以初始化。

在初始化的状态下可以进行关机以减少耗能。

显示使用的数码管扫描显示的方法来显示数字,所以我们每一次运算前我们都需要将个位、十位、百位和千位相结合。

我们使用的是4×4的键盘,检测的时候是进行键盘扫描来完成确定哪一个键被摁下,然后是否释放。

键盘被摁下后,先判断是什么键。

如果是数字键,则进行数的输入,首先先把百位的数值赋给千位,十位赋给百位,个位赋给十位,然后把摁下键的对应数赋给个位。

如果是算法键,则将对应的算法寄存地址赋上相应算法的值,并且在下一次输入数字时把十位、百位和千位清零以完成下一次的赋值,而这一次的值将转换为一个数储存在相应的地址中。

当按下的是退格键,则将十位赋值给个位,百位赋值给十位,千位赋值给百位然后千位清零。

当按下的是等号键的时候,将前一次储存的数取出与这一次的数进行相应的运算然后将得到的二进制数拆分为个位、十位、百位和千位然后扫描显示就可以。

复位键是使用的中断,当个位、十位、百位和千位都不为零的时候按下将会初始化计算器的所有数据,如果个位、十位、百位和千位均为零这进入休眠状态等待下一次中断的唤醒。

二、硬件设计部分我们使用的是PIC16F877A单片机,使用四位的八段数码管,4×4的键盘和一个独立的中断键。

八段数码管我们使用的是共基极的接法,所以当给出低电平的时候导通,给出高电平的时候关断。

我们以RD端口来控制段选,分别以RB0控制a、RB1控制b、RB2控制c、RB3控制d、RB4控制e、RB5控制f、RB6控制g和RB7控制dp。

以RD1、RD2、RD3和RD4端口分别控制位选的千位、百位、十位和个位。

数电实验二:简易计算器(设计报告)

数电实验二:简易计算器(设计报告)

数电实验2设计报告实验名称:简易计算器 实验目的:1.熟练掌握综合逻辑电路的设计方法及调试方法2.掌握Verilog HDL 数字系统设计方法3.熟悉PLD 实验箱的结构和使用及QuartusII 软件的基本操作4.掌握采用Quartus II 软件和实验箱设计实现逻辑电路的基本过程设计任务及要求:利用LPM 例化元件和适当的中小规模时序、组合逻辑电路设计一个4位简易计算器,实现2个4位二进制数的加、减、乘、除运算,完成主要模块的波形仿真,并将设计下载到实验箱进行功能测试。

要求:1、 用8个开关分别作为2个4位输入数据2、 运算结果用数码管显示电路设计过程:1、 设定加、减、乘、除四个LPM 例化元件加法器:2个四位二进制输入(加数、被加数),1个4位二进制输出(和)减法器:2个四位二进制输入(减数、被减数),1个4位二进制输出(差)乘法器:2个四位二进制输入(乘数、被乘数),1个8位二进制输出(积)除法器:24位二进制输出(分别代表商和余数)2、加入组合逻辑电路和4选一数据选择器,控制进行运算的种类(1)组合逻辑电路输入:功能:为了利用矩阵键盘对计算器对输入数字的加减乘除进行控制,我们画了这个组合逻辑电路,将矩阵键盘的行管脚和列管脚分别为输入后,当(1,1)位置的按键按下,则输出端输出2位2进制数11(控制减法操作),当(2,2)位置的按键按下,则输出端输出2位2进制数10(控制加法操作),当(3,3)位置的按键按下,则输出端输出2位2进制数01(控制乘法操作),当所有按键都没有按下时,输出默认为00,即控制除法操作。

(2)4选一数据选择器功能X1,y1为想要计算的两个4位2进制数,当S0,S1为11的时候,将X1,y1送入减法器输入端,当S0,S1为10的时候,将X1,y1送入加法器输入端,当S0,S1为01的时候,将X1,y1送入乘法器输入端,当S0,S1为00的时候,将X1,y1送入除法器输入端。

汇编语言只用ADD指令实现整数和浮点数的加减乘法

汇编语言只用ADD指令实现整数和浮点数的加减乘法
inputBAndSelect8 proc near
lea bx,user_string
mov ah,0ah
int 21h
mov ch,0
add bx,2;指向真正字符串开始的位置
mov ah,0
mov cl,8
add cl,255
beginin:
mov al,[bx]
add al,208;将字符串变为数值
rol bx,1;取第一个操作码到cf
jnc INTEGER;CF=0
jc others;CF=1
INTEGER:
rol bx,1;取第二个操作码到cf
jnc INTEGERadd;CF=0
jc INTEGERsub;CF=1
INTEGERadd:
call INTEGER_ADD
INTEGERsub:
mov bl,0
rol bx,cl;取第二个定点数放到bl
mov cl,bl;转存到cl
and cx,cx
jz FLOATadd
test cx,10h
jz FLOATsub
test cx,20h
jz FLOATmul
FLOATadd:
call FLOAT_ADD
FLOATsub:
call FLOAT_SUB
INTEGER_ADD proc near
mov bl,0
mov cl,3
rol bx,cl;取第一个操作数放到bl
mov ch,bl;转存到ch
mov bl,0
rol bx,cl;取第二个操作数放到bl
mov cl,bl;转存到ch
add ch,cl;第一个操作数和第二个操作数做加法
mov result,ch

汇编语言课程设计_四则运算计算器设计

汇编语言课程设计_四则运算计算器设计

目录1 设计目的 (1)2 概要设计 (1)2.1 系统总体分析 (1)2.2 主模块框图及说明 (2)3 详细设计 (3)3.1 主模块及子模块说明 (3)3.2 各模块详细设计 (3)3.2.1 判定运算符模块设计 (3)3.2.2取运算数模块 (3)3.2.3计算模块 (4)3.2.4结果处理模块 (5)3.2.5输出模块 (5)3.2.6错误处理模块 (6)4 程序调试 (7)4.1 运行界面分析 (7)4.2 调试过程及分析 (7)5 心得体会 (8)5.1 设计体会 (8)5.2 系统改进 (8)参考文献 (10)附录 (11)实现加减乘除四则运算的计算器1 设计目的汇编语言是继机器语言后出现的计算机程序设计语言,是计算机所能提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特征并能够直接控制硬件的惟一语言。

因而了解之一语言的特性,并熟练掌握这一语言并应用于开发中便是计算机专业学生所必需掌握的技能之一。

本课程设计通过加减乘除四则运算计算器的设计,增强对于汇编语言寄存器、指令、伪指令、中断等的理解。

可通过编写的汇编程序完成基本的加减乘除四则运算。

主要功能:能实现加减乘除的计算;该程序接受的是16进制数;执行时,需在文件名后直接跟上计算表达式,如在命令提示符下执行结果如下:C:\tasm>js 3+252 概要设计2.1 系统总体分析四则运算计算器应当实现对用户输入表达式的处理。

根据用户输入的表达式,完成加减乘除四则运算。

程序自动判定表达式输入,并完成对于输入的16进制数的转换,同时计算结果并以10进制数输出。

对于异常情况程序应当进行处理,保证程序的正确运行。

设计一个计算器,在DOS界面下输入<程序名> <表达式>可直接输出运算结果。

例如在DOS界面中输入JS 3+6,可直接输出9。

程序接受16进制数输入,以十进制数输出运算结果。

对于输出错误情况,程序自动给出错误提示,若输入的格式有误,程序给出“JS <Expression> [10]”(即输入样例)提示,若输入的表达式有误,程序给出“Error in expression !”(即表达式错误)提示。

汇编语言课程设计四则运算计算器..【范本模板】

汇编语言课程设计四则运算计算器..【范本模板】

微机原理实验报告汇编语言课程设计报告( 2012 —- 2013 年度第1 学期)实验名称:实现加减乘除四则运算的计算器专业生物医学工程学生姓名周炳威班级B100904学号B10090406指导教师乐洋实现加减乘除四则运算的计算器1 实验目的深化学习的汇编语言课程基本知识,进一步掌握汇编语言程序设计方法,提高分析问题、解决问题的综合应用能力。

通过使用汇编语言设计实现简单计算器,以此进一步了解和掌握对数据存储,寄存器的使用,加减乘除相关指令以及模块的调用等汇编语言知识的有效运用2 实验内容课题名称:实现加减乘除四则运算的计算器主要功能:实现一个简单的计算器,要求:编写一个程序,每运行一次可执行程序,可以实现加减乘除四则运算。

计算器是最简单的计算工具,简单计算器具有加、减、乘、除四项运算功能。

3 实现方法本次汇编语言课程设计的最终目的是要实现一个简单计算器,要求编写一个程序,每运行一次可执行程序,可以实现数的加减乘除四则运算。

由自己调用中断输入到屏幕上并要用程序存储起来的数,然后才能对这两个数进行运算,而且做的是加法运算、减法运算乘法运算还是除法运算也未可知,为此我们还要判断用户所输入的运算是四则运算中的哪一个运算。

此外,运算过程中的进位或是借位,选择用什么样的方式进行输出,如何实现清屏等也是要解决的问题。

第一步,用INT 21H的1号功能调用来进行输入.利用1号功能调用来输入,即把单个字符一个个的输入并存储到一个数据区里。

我们要做的是两个数的运算,先认定输入的格式为1234+5678=或者1111*2222=,当然如果输入不是这样的格式计算出来的结果就不一定是我们想要的结果了.在存储的时候也是有选择的存储,当输入的并非格式里所要求的字符时则报错.第二步,设计程序进行判断所输入的算式是做加法运算、减法运算、乘法运算还是除法运算,即判断输入的运算符是‘+'号、‘—'号、‘*’号、‘/’号中的哪一个,因为输入的格式固定了,所以只需要把存进数据区的第三个字符拿来与加减乘除四个运算符号进行比较,和哪一个运算符号一样就调用相对应的运算模块进行计算。

PLC简易计算器设计

PLC简易计算器设计

PLC简易计算器设计设计任务书可编程控制器》课程设计设计题目:电子计算器设计XXX:学号:专业(方向)年级:11级电气工程及其自动化学生姓名:word文档可自由复制编辑可编程控制器课程设计任务书一)设计题目电子计算器设计二)情况简介在人们日常生活中,买东西、记账、研究等等,凡是与数有关的,我们都可以用到计算器,可见计算器真的很重要。

本文中基于PLC设计的电子计算器比传统计算器更可靠,更方便,性能更好,更容易适应当今高速发展的社会,方便了人们的生活。

这次设计中,将选用西门子S7-200系列PLC,通过梯形图和编程指令两种手段来实现简易计算器的加减乘除功能。

基于PLC设计的电子计算器能够完成简单的加减乘除功能,并能够用七段数码管显示相应的数字及结果,同时也能指示相应的运算类型。

该计算器将采用梯形图编写来实现4位数范围内的加减乘除基本的四则运算。

PLC是一个可进行数模、模数转换,可进行定位控制等一个功能强大的工业控制器,具有高可靠性,以它为基础制作的计算器将具有很高的可靠性。

(三)设计要求1.由按键输入的数值显示在7段数码管上,但只限4位数。

2.按加、减、乘、除键时,第一次输入的值被存放在缓冲区中,当做被加、减、乘、除数,且加、减、乘、除相对的运算指示灯会亮。

3.接着输入一个数,之后若是按下“=”键,则此加、减、乘、除数被存放于另一个缓冲区中,与刚才输入的数做运算,且相对应的运算指示灯熄灭。

4.将运算结果显示在7段数码管上。

四)设计步骤1.查找资料,了解和分析题目所要求具体工程项目控制的过程。

2.确定I/O点数,选择PLC的型号,并根据需要进行硬件系统配置。

3.绘制外部I/O接线图及相干的电气原理图。

4.编程。

word文档可自由复制编辑5.调试。

6.编写设想说明书。

五)设想说明书请求①.完整的设想义务书。

②.确定I/O点数,选择PLC的型号,完成系统组态或硬件配置。

③.正确合理地进行编程元件的地址分配。

汇编语言课程设计报告实现加减乘除四则运算的计算器

汇编语言课程设计报告实现加减乘除四则运算的计算器

汇编语言课程设计报告实现加减乘除四则运算的计算器实现加减乘除四则运算的计算器目录1 概述 (1)1.1 课程设计目的 (1)1.2 课程设计内容 (1)2 系统需求分析 (1)2.1 系统目标 (1)2.2 主体功能 (2)3 系统概要设计 (2)3.1 系统的功能模块划分 (2)3.2 系统流程图 (3)4系统详细设计 (4)5 测试 (5)5.1 正确输出 (5)5.2 实际输出 (6)6 小结 (7)参考文献 (8)附录 (9)附录1 源程序清单 (9)汇编语言课程设计报告(2011)实现加减乘除四则运算计算器的设计1 概述1.1 课程设计目的运用汇编语言,实现简单计算器的一般功能.通过该程序设计,让我们熟悉并掌握DOS系统功能调方法用及BIOS系统功能调用方法,同时在程序设计过程中熟悉并掌握各种指令的应用,知道编程的具体流程,以及掌握DEBUG的一系列的功能执行命令,及用它进行调试,运行功能。

汇编语言是计算机能够提供给用户使用的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。

由于汇编语言如此的接近计算机硬件,因此,它可以最大限度地发挥计算机硬件的性能。

由此可见汇编语言的重要性,学好这门课程,同样可为相关的专业打下基础。

汇编语言程序设计课程设计是在教学实践基础上进行的一次试验,也是对该课程所学理论知识的深化和提高。

因此,要求学生能综合应用所学知识,设计和制造出具有具有一定功能的应用系统,并且在实验的基本技能方面进行了一次全面的训练。

此外,它还可以培养学生综合运用所学知识独立完成汇编程序课题的能力,使学生能够较全面的巩固和应用课堂上所学的基本理论和程序设计方法,能够较熟练地完成汇编语言程序的设计和调试。

它同样可以提高学生运用理论去处理实际问题的能力和独立思考的能力,使学生的编程思想和编程能力有所提高,最终达到熟练地掌握编写汇编源程序的基本方法的目的。

1.2 课程设计内容设计一个能实现加减乘除取余计算的程序。

汇编语言简单计算器程序课程设计报告

汇编语言简单计算器程序课程设计报告

汇编语言课程设计报告( 2010 -- 2011 年度第 2 学期)课题名称: 实现加减乘除四则运算的计算器专业 计算机科学与技术学生姓名 汤浩军班级 B 计算机091学号 0910704117指导教师 王 志 宏完成日期2011年6月24日目录1设计目的 (1)2概要设计 (2)2.1 系统总体分析 (2)2.2 主模块框图及说明 (2)3 详细设计 (4)3.1 主模块及子模块说明 (4)3.2 各模块详细设计 (4)4.程序调试 (6)4.1 运行界面分析 (6)4.2 算法的分析 (6)4.3 调试过程及分析 (6)5小结 (7)5.1 设计总结 (7)参考文献 (8)源程序清单 (9)1设计目的通过本次的课程设计,加深对汇编语言的了解,应用《汇编语言程序设计教程》等所学相关知识及查阅资料,完成加减乘除计算器的设计,以达到理论与实践更好的结合,进一步提高自身的水平和对汇编语言的认识。

2概要设计2.1 系统总体分析本次设计的加减乘除四则运算的计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。

由于在设计过程中考虑到了可能会多次计算数据,为此本次课程设计的这个计算器可以一次运行,多次使用。

2.2 主模块框图及说明本程序的功能结构图如图2-1:图 2-1功能结构图程序流程图如图2-2:图2-2流程图3 详细设计3.1 主模块及子模块说明主模块:主要完成程序的主体框架结构,提供人-程序的交互。

子模块:主要完成对数据的加工,处理。

3.2 各模块详细设计主模块:首先提供一个主界面,提示用户按要求输入具体的数据和所要进行的操作,输入完毕后给出结果。

如果输入过程中发现非法输入,则立即给与提示,程序自动刷新界面,提示继续输入。

整个过程按“ESC”结束。

流程图如下图3-1:图3-1 主模块流程图子模块:完成对数据的进一步加工处理,转换格式并得出结果。

首先根据输入调用对应的“+”、“-”、“*”、“/”四大函数模块,这是本程序的核心模块,其他部分的一些小模块都是为这几大模块服务的,大致的流程图如下图3-2:Y图3-2 子模块流程图4.程序调试4.1 运行界面分析运行界面如图4-1图4-1 运行界面在NUM1这一行会提示输入第一个数据,NUM2这一行提示输入第二个数据,输入完成两个数据后程序会提示允许输入运算符,输入无误后在RESULT行显示结果。

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

课程设计报告课程名称:单片机原理与接口技术课程设计设计题目:简单计算器院系:机电工程学院班级:2010级电气工程及其自动化专业姓名:学号:指导教师:史丽萍,闫广明,张波,张扬,王冠然设计时间:2013年12月一、设计方案描述与论证我们所设计的是一个简单计算器,它具有四位数以内的整数加减乘除运算。

可以在输入错误的时候退格,也可以初始化。

在初始化的状态下可以进行关机以减少耗能。

显示使用的数码管扫描显示的方法来显示数字,所以我们每一次运算前我们都需要将个位、十位、百位和千位相结合。

我们使用的是4×4的键盘,检测的时候是进行键盘扫描来完成确定哪一个键被摁下,然后是否释放。

键盘被摁下后,先判断是什么键。

如果是数字键,则进行数的输入,首先先把百位的数值赋给千位,十位赋给百位,个位赋给十位,然后把摁下键的对应数赋给个位。

如果是算法键,则将对应的算法寄存地址赋上相应算法的值,并且在下一次输入数字时把十位、百位和千位清零以完成下一次的赋值,而这一次的值将转换为一个数储存在相应的地址中。

当按下的是退格键,则将十位赋值给个位,百位赋值给十位,千位赋值给百位然后千位清零。

当按下的是等号键的时候,将前一次储存的数取出与这一次的数进行相应的运算然后将得到的二进制数拆分为个位、十位、百位和千位然后扫描显示就可以。

复位键是使用的中断,当个位、十位、百位和千位都不为零的时候按下将会初始化计算器的所有数据,如果个位、十位、百位和千位均为零这进入休眠状态等待下一次中断的唤醒。

二、硬件设计部分我们使用的是PIC16F877A单片机,使用四位的八段数码管,4×4的键盘和一个独立的中断键。

八段数码管我们使用的是共基极的接法,所以当给出低电平的时候导通,给出高电平的时候关断。

我们以RD端口来控制段选,分别以RB0控制a、RB1控制b、RB2控制c、RB3控制d、RB4控制e、RB5控制f、RB6控制g和RB7控制dp。

以RD1、RD2、RD3和RD4端口分别控制位选的千位、百位、十位和个位。

键盘我们使用RC端口扫描的方法来实现4×4的键盘。

其中RC0、RC1、RC2和RC3端口分别设置为输出,RC4、RC5、RC6和RC7端口设置为输入。

两组端口分别接入键盘的行和列。

RC4、RC5、RC6和RC7端口再通过10K的电阻接VCC以实现为高电平。

键盘扫描的时候,首先RC0、RC1、RC2和RC3端口均输入为低电平0,判断RC4、RC5、RC6和RC7端口是否全为高电平1,如果是则无按键被按下。

如果不全为高电平1则证明有按键被按下。

这时需要依次将RC0、RC1、RC2和RC3端口置低电平0,检测RC4、RC5、RC6和RC7端口何时有一个变为低电平0,这时可以对应出哪一个按键被按下。

中断键是单独接出的,外接电容增加其稳定性,减少被摁下是的抖动。

三、软件设计部分主程序流程图键盘扫描子程序流程图第0、1、2、3、4、5、6、第7号键8、9、A号键子程序第C、D、E、F键子程序按键释放子程序流程图加法子程序流程图减法子程序流程图乘法子程序流程图除法子程序流程图十进制转换二进制程序流程图二进制转换十进制程序流程图睡眠子程序流程图中断子程序流程图源程序:;********************************************************************** ; * ; Filename: xxx.asm * ; Date: * ; File Version: *; * ; Author: * ; Company: * ; * ; * ;********************************************************************** ; * ; Files required: *; * ; *; *;**********************************************************************; *; Notes: *; *; *; *; *;**********************************************************************list p=16f877A ; list directive to define processor#include <p16f877A.inc> ; processor specific variable definitions__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_OFF & _HS_OSC & _LVP_OFF & _DEBUG_ON & _CPD_OFF;***** V ARIABLE DEFINITIONSw_temp EQU 0x71 ; variable used for context savingstatus_temp EQU 0x72 ; variable used for context savingGE EQU 0x40SHI EQU 0x41BAI EQU 0x42QIAN EQU 0x43S1H EQU 0x44S1L EQU 0x45S2H EQU 0x46S2L EQU 0x47R1H EQU 0x48R1L EQU 0x49M1H EQU 0x4AM1L EQU 0x4BM2H EQU 0x4CM2L EQU 0x4DM3H EQU 0x4EM3L EQU 0x4FR2H EQU 0x50R2L EQU 0x51SHUH EQU 0x52SHUL EQU 0x53SHURUSHU EQU 0x54SHU1H EQU 0x55SHU1L EQU 0x56P1H EQU 0x57P1L EQU 0x58FUHAO EQU 0x59D1H EQU 0x5AD1L EQU 0x5BD2H EQU 0x5CD2L EQU 0x5DD3H EQU 0x5ED3L EQU 0x5FJIESHU EQU 0x60COUNT EQU0x61.ZHONG EQU 0x62DUI1 EQU 0x63DUI2 EQU 0x64JIANGE EQU 0x65;**********************************************************************ORG 0x000 ; processor reset vectorclrfPCLATH; ensure page bits are cleared goto MAIN ; go to beginning of programORG 0x004 ; interrupt vector locationmovwf w_temp ; save off current W register contentsmovf STA TUS,w ; move status register into W registermovwf status_temp ; save off contents of STA TUS register; isr code can go here or be located as a call subroutine elsewhereCALL DELAYCALL DELAYCALL DELAYCALL DELAYBTFSS PORTB,0GOTO N1MOVLW 00HSUBWF GEBTFSS STA TUS,ZGOTO CLEARAMOVLW 00HSUBWF SHIBTFSS STA TUS,ZGOTO CLEARAMOVLW 00HSUBWF BAIBTFSS STA TUS,ZGOTO CLEARAMOVLW 00HSUBWF QIANBTFSS STA TUS,ZGOTO CLEARAINCF ZHONGGOTO N1CLEARA CALL CLEARCLRF FUHAOCLRF ZHONGCLRF JIESHUN1 BCF INTCON,INTFmovf status_temp,w ; retrieve copy of STATUS registermovwf STA TUS ; restore pre-isr STATUS register contentsswapf w_temp,fswapf w_temp,w ; restore pre-isr W register contentsretfie ; return from interruptCHABIAO ADDWF PCL,FRETLW 0xC0RETLW 0xF9RETLW 0xA4RETLW 0xB0RETLW 0x99RETLW 0x92RETLW 0x82RETLW 0xF8RETLW 0x80RETLW 0x90MAIN; remaining code goes hereBSF STA TUS,RP0CLRF TRISDBSF TRISB,0BCF TRISE,0BCF TRISB,1BCF TRISB,2BCF TRISB,3BCF TRISB,4BCF TRISC,0BCF TRISC,1BCF TRISC,2BCF TRISC,3BSF TRISC,4BSF TRISC,5BSF TRISC,6BSF TRISC,7BCF STA TUS,RP0BSF PORTB,1BSF PORTB,2BSF PORTB,3BSF PORTB,4CLRF PORTCBSF INTCON,INTEBSF INTCON,GIEBCF INTCON,INTFCLRF ZHONGLOOPN MOVLW 00HMOVWF GEMOVLW 00HMOVWF SHIMOVLW 00HMOVWF BAIMOVLW 00HMOVWF QIANMOVLW 0xFFMOVWF JIESHUCLRF S1LCLRF S1HCLRF SHU1LCLRF SHU1HCLRF S2LCLRF S2HCLRF R1LCLRF R1HCLRF R2LCLRF R2HCLRF SHUHCLRF SHULCLRF JIESHULOOP BTFSC ZHONG,0GOTO GUANMOVF GE,WCALL CHABIAOMOVWF PORTDBCF PORTB,4CALL DELAYBSF PORTB,4MOVF SHI,WCALL CHABIAOMOVWF PORTDBCF PORTB,3CALL DELAYBSF PORTB,3MOVF BAI,WCALL CHABIAOMOVWF PORTDBCF PORTB,2CALL DELAYBSF PORTB,2MOVF QIAN,WCALL CHABIAOMOVWF PORTDBCF PORTB,1CALL DELAYBSF PORTB,1JIANPAN MOVLW 00HMOVWF PORTCMOVLW 0F0HANDWF PORTC,WSUBLW 0F0HBTFSC STATUS,ZGOTO LOOPCALL DELAY10CALL DELAY10MOVLW 00HMOVWF PORTCMOVLW 0F0HANDWF PORTC,WSUBLW 0F0HGOTO LOOP MOVLW 0FEH MOVWF PORTC BTFSS PORTC,4 GOTO JIAN0 BTFSS PORTC,5 GOTO JIAN1 BTFSS PORTC,6 GOTO JIAN2 BTFSS PORTC,7 GOTO JIAN3 MOVLW 0FDH MOVWF PORTC BTFSS PORTC,4 GOTO JIAN4 BTFSS PORTC,5 GOTO JIAN5 BTFSS PORTC,6 GOTO JIAN6 BTFSS PORTC,7 GOTO JIAN7 MOVLW 0FBH MOVWF PORTC BTFSS PORTC,4 GOTO JIAN8 BTFSS PORTC,5 GOTO JIAN9 BTFSS PORTC,6 GOTO JIANA BTFSS PORTC,7 GOTO JIANB MOVLW 0F7H MOVWF PORTCGOTO JIANCBTFSS PORTC,5GOTO JIANDBTFSS PORTC,6GOTO JIANEBTFSS PORTC,7GOTO JIANFGOTO LOOPJINWEI MOVF BAI,WMOVWF QIANMOVF SHI,WMOVWF BAIMOVF GE,WMOVWF SHIMOVF SHURUSHU,WMOVWF GEGOTO LOOPJIAN0 CALL SFANGBTFSC JIESHU,0GOTO CLEARMOVLW 01HMOVWF SHURUSHUGOTO JINWEIJIAN1 CALL SFANGBTFSC JIESHU,0GOTO CLEARMOVLW 02HMOVWF SHURUSHUGOTO JINWEIJIAN2 CALL SFANGBTFSC JIESHU,0GOTO CLEARMOVLW 03HMOVWF SHURUSHUGOTO JINWEIJIAN3 CALL SFANGBTFSC JIESHU,0GOTO CLEARMOVLW 00HMOVWF SHURUSHUGOTO JINWEIJIAN4 CALL SFANGBTFSC JIESHU,0GOTO CLEARMOVLW 04HMOVWF SHURUSHUGOTO JINWEIJIAN5 CALL SFANGBTFSC JIESHU,0GOTO CLEARMOVLW 05HMOVWF SHURUSHUGOTO JINWEIJIAN6 CALL SFANGBTFSC JIESHU,0GOTO CLEARMOVLW 06HMOVWF SHURUSHUGOTO JINWEIJIAN7 CALL SFANGCALL SHITOERMOVF R1L,WMOVWF S2LMOVF R1H,WMOVWF S2HMOVF SHU1L,WMOVWF S1LMOVF SHU1H,WMOVWF S1HBTFSC FUHAO,0CALL ADDXYBTFSC FUHAO,1CALL SUBXYBTFSC FUHAO,2CALL MPXYBTFSC FUHAO,3CALL DIVXYCALL ERTOSHI BSF JIESHU,0GOTO LOOPJIAN8 CALL SFANGBTFSC JIESHU,0GOTO CLEARMOVLW 07HMOVWF SHURUSHUGOTO JINWEIJIAN9 CALL SFANGBTFSC JIESHU,0GOTO CLEARMOVLW 08HMOVWF SHURUSHUGOTO JINWEIJIANA CALL SFANGBTFSC JIESHU,0GOTO CLEARMOVLW 09HMOVWF SHURUSHUGOTO JINWEIJIANB CALL SFANG MOVF SHI,WMOVWF GEMOVF BAI,WMOVWF SHIMOVF QIAN,WMOVWF BAICLRF QIANGOTO LOOPJIANC CALL SFANGCLRF FUHAOBSF FUHAO,0CALL SHITOERMOVF R1L,WMOVWF SHU1LMOVF R1H,WMOVWF SHU1H BSF JIESHU,0GOTO LOOP JIAND CALL SFANGCLRF FUHAOBSF FUHAO,1CALL SHITOERMOVF R1L,WMOVWF SHU1LMOVF R1H,WMOVWF SHU1H BSF JIESHU,0GOTO LOOPJIANE CALL SFANGCLRF FUHAOBSF FUHAO,2CALL SHITOERMOVF R1L,WMOVWF SHU1LMOVF R1H,WMOVWF SHU1H BSF JIESHU,0GOTO LOOPJIANF CALL SFANGCLRF FUHAOBSF FUHAO,3CALL SHITOERMOVF R1L,WMOVWF SHU1LMOVF R1H,WMOVWF SHU1H BSF JIESHU,0GOTO LOOPSFANG MOVLW 00HMOVWF PORTCMOVLW 0F0HANDWF PORTC,WSUBLW 0F0hBTFSS STA TUS,ZGOTO SFANGCALL DELAY10CALL DELAY10CALL DELAY10MOVLW 00HMOVWF PORTCMOVLW 0F0HANDWF PORTC,WSUBLW 0F0HBTFSS STA TUS,ZGOTO SFANGRETURNCLEAR BCF JIESHU,0CLRF GECLRF SHICLRF BAICLRF QIANRETURNDELAY DECFSZ 30H,FGOTO DELAYRETURNDELAY1 DECFSZ 30H,FGOTO DELAYDECFSZ 31H,FGOTO DELAYRETURNADDXY MOVF S1L,WADDWF S2LBTFSC STATUS,CINCF S2HMOVF S1H,WADDWF S2HMOVF S2H,WMOVWF R1HMOVF S2L,WMOVWF R1LRETURNSUBXY COMF S2LINCF S2LBTFSC STATUS,ZDECF S2HCOMF S2HCALL ADDXYRETURNMPXY MOVF S1L,WMOVWF M1LMOVF S1H,WMOVWF M1HMOVF S2L,WMOVWF M2LMOVF S2H,WMOVF S1L,WMOVWF M3LMOVF S1H,WMOVWF M3HCLRF R1HCLRF R2HL2 MOVLW 00HSUBWF M2LBTFSS STA TUS,ZGOTO L1MOVLW 00HSUBWF M2HBTFSC STA TUS,ZGOTO L3L1 MOVF M1L,WMOVWF S1LMOVF M3L,WMOVWF S2LMOVF M1H,WMOVWF S1HMOVF M3H,WMOVWF S2HCALL ADDXYMOVF R1L,WMOVWF M1LMOVF R1H,WMOVWF M1HMOVWF S1LMOVF M2H,WMOVWF S1HCLRF S2HMOVLW 01HMOVWF S2LCALL SUBXYMOVF R1L,WMOVWF M2LMOVF R1H,WMOVWF M2HMOVF M1L,WMOVWF R1LMOVF M1H,WMOVWF R1HGOTO L2L3 MOVF R1L,WMOVWF S1LMOVF R1H,WMOVWF S1HMOVF M3L,WMOVWF S2LMOVF M3H,WMOVWF S2HCAll S UBXYRETURNDIVXY MOVF S1L,WMOVWF D1LMOVF S1H,WMOVF S2L,WMOVWF D2LMOVF S2H,WMOVWF D2HCLRF D3LCLRF D3HD1 MOVF D2H,WSUBWF D1H,WBTFSS STA TUS,CGOTO D2BTFSS STA TUS,ZGOTO D3MOVF D2L,WSUBWF D1L,WBTFSS STA TUS,CGOTO D2D3 MOVF D1L,WMOVWF S1LMOVF D1H,WMOVWF S1HMOVF D2L,WMOVWF S2LMOVF D2H,WMOVWF S2HCALL SUBXYMOVF R1L,WMOVWF D1LMOVF R1H,WMOVWF D1HMOVF D3H,WMOVF D3L,WMOVWF S1LCLRF S2HMOVLW 01HMOVWF S2LCALL ADDXYMOVF R1H,WMOVWF D3HMOVF R1L,WMOVWF D3LGOTO D1D2 MOVF D3L,WMOVWF R1LMOVF D3H,WMOVWF R1HMOVF D1L,WMOVWF R2LMOVF D1H,WMOVWF R2HRETURNDELAY10 MOVLW 0DHMOVWF 20H LOOP1 MOVLW 0FFHMOVWF 21H LOOP2 DECFSZ 21HGOTO LOOP2DECFSZ 20HGOTO LOOP1RETURNSHITOER MOVLW 03HMOVWF S2HMOVLW 0xE8MOVWF S2LMOVF QIAN,WMOVWF S1LCLRF S1HCALL MPXYMOVF R1H,WMOVWF SHUHMOVF R1L,WMOVWF SHULMOVLW 64HMOVWF S2LCLRF S2HCLRF S1HMOVF BAI,WMOVWF S1LCALL MPXYMOVF SHUH,WMOVWF S1HMOVF SHUL,WMOVWF S1LMOVF R1H,WMOVWF S2HMOVF R1L,WMOVWF S2LCALL ADDXYMOVF R1H,WMOVWF SHUHMOVWF SHULMOVLW 0AHMOVWF S2LCLRF S2HMOVF SHI,WMOVWF S1LCLRF S1HCALL MPXYMOVF SHUH,WMOVWF S1HMOVF SHUL,WMOVWF S1LMOVF R1H,WMOVWF S2HMOVF R1L,WMOVWF S2LCALL ADDXYMOVF R1H,WMOVWF S1HMOVF R1L,WMOVWF S1LCLRF S2HMOVF GE,WMOVWF S2LCALL ADDXYRETURN ERTOSHI MOVF R1H,WMOVF R1L,W MOVWF S1L MOVLW 27H MOVWF S2H MOVLW 10H MOVWF S2L CALL DIVXYMOVLW 03H MOVWF S2H MOVLW 0xE8 MOVWF S2L MOVF R2L,W MOVWF S1L MOVF R2H,W MOVWF S1H CALL DIVXY MOVF R1L,W MOVWF QIANMOVLW 64H MOVWF S2L CLRF S2H MOVF R2L,W MOVWF S1L MOVF R2H,W MOVWF S1H CALL DIVXY MOVF R1L,W MOVWF BAIMOVWF S2LCLRF S2HMOVF R2L,WMOVWF S1LMOVF R2H,WMOVWF S1HCALL DIVXYMOVF R1L,WMOVWF SHIMOVF R2L,WMOVWF GERETURNDUI1D MOVLW 0AHMOVWF S2LCLRF S2HMOVF DUI1,WMOVWF S1LCLRF S1HCALL DIVXYMOVF R1L,WMOVWF QIANMOVF R2L,WMOVWF BAIRETURNDUI2D MOVLW 0AHMOVWF S2LCLRF S2HMOVF DUI2,WMOVWF S1LCLRF S1HCALL DIVXYMOVF R1L,WMOVWF SHIMOVF R2L,WMOVWF GERETURNGUAN SLEEPNOPGOTO LOOPNEND ; directive 'end of program'四、评价这个设计的所有运算都是基于加减法的,然后是得出乘除法,最后的个位、十位、百位和千位的整合转换为一个双精度的二进制数和将一个双精度的二进制数拆分为个位、十位、百位和千位都是基于乘除法的。

相关文档
最新文档