汇编语言课程设计-十进制加减法

合集下载

设计一个一位十进制加减法++数字电路课程设计报告

设计一个一位十进制加减法++数字电路课程设计报告

课程设计报告课程:微机系统与接口课程设计学号:姓名:班级:教师:******大学计算机科学与技术学院设计名称:设计一个一位十进制加减法器日期:2010年1月 23日设计内容:1、0-9十个字符和“+”“-”分别对应一个按键,用于数据输入。

2、用一个开关控制加减法器的开关状态。

3、要求在数码显示管上显示结果。

设计目的与要求:1、学习数字逻辑等电路设计方法,熟知加减法器、编码器、译码显示的工作原理及特点;2、培养勤奋认真、分析故障和解决问题的能力。

设计环境或器材、原理与说明:环境:利用多功能虚拟软件Multism8进行电路的制作、调试,并生成文件。

器材:74LS283或者4008, 4个异或门(一片74LS86)(减法);74LS08,3输入或门(加法)设计原理:图1二进制加减运算原理框图分析:如图1所示,第一步置入两个四位二进制数(要求置入的数小于1010),如(1001)2和(0111)2,同时在两个七段译码显示器上显示出对应的十进制数9和7;第二步通过开关选择运算方式加或者减;第三步,若选择加运算方式,所置数送入加法运算电路进行运算,同理若选择减运算方式,则所置数送入减法运算电路运算;第四步,前面所得结果通过另外两个七段译码器显示。

设计过程(步骤)或程序代码:实验电路:1:减法电路的实现:(1):原理:如图1所示(如下),该电路功能为计算A-B。

若n位二进制原码为N原,则与它相对应的补码为N补=2n-N原,补码与反码的关系式为N补=N反+1,A-B=A+B补-2n=A+B反+1-2n(2):因为B○+1= B非,B○+0=B,所以通过异或门74LS86对输入的数B求其反码,并将进位输入端接逻辑1以实现加1,由此求得B的补码。

加法器相加的结果为:A+B反+1,(3):由于2n=24=(10000)2,相加结果与相2n减只能由加法器进位输出信号完成。

当进位输出信号为1时,它与2n的差为0;当进位输出信号为0时,它与2n差值为1,同时还要发出借位信号。

十进制加减法电路设计

十进制加减法电路设计

燕山大学课程设计说明书题目:十进制加法器学院(系):电气工程学院年级专业:学号:学生姓名:指导教师:教师职称:燕山大学课程设计(论文)任务书院(系):电气工程学院基层教学单位:电子实验中心说明:此表一式四份,学生、指导教师、基层教学单位、系部各一份。

年月日目录第一章设计说明 (3)1.1设计思路 (3)1.2模块介绍 (3)第二章电路原理图 (8)第三章波形图 (10)第四章管脚锁定 (11)第五章电路扩展 (12)1.1设计思路 (12)1.2模块介绍 (12)1.3扩展电路原理图 (15)1.4管脚锁定 (17)第六章总结 (18)参考文献 (19)燕山大学课程设计评审意见表 (20)第一章设计说明1.1设计思路:先分别用两个7485数值比较器,将加数及被加数分别与9比较,输出的结果再与输入值分别相与,便可设置加数和被加数,当加数和被加数超过9时均按0处理,此时用两个数码管显示加数与被加数。

用得到的加数和被加数通过一个全加器74283相加,74283得出的结果小于9时可以直接输出,大于9时则需要进行加6修正,按照该要求设计一个逻辑电路,将结果与第一个74283的结果通过第二个74283的求和,得出最终,然后将最终结果通过两个数码管分别显示十位和个位,这样便可得到所要求的十进制加法器。

1.2模块介绍:1.数值比较器:功能介绍:A1-A4,B1-B4为加数,被加数的二进制表示。

B0-B3(1001)为十进制数9。

7485为四位数值比较器。

7485比较器功能表及数值比较真值表为1,7485输出端通过一个或门输出为1,再同输入值相与,最右端所接的数码管则可显示该值;若输入值大于9,则ALBO和AEBO都为0.,通过或门输出为0,再同输入值相与,最右端所接的数码管显示为0。

2. 加数+被加数显示部分:功能介绍:比较器输出的数值分别赋予“1L1”“1L2”“1L3”“1L4”,“2L1”“2L2”“2L3”“2L4”,通过译码后输出到“DS4C”、“DS3C”数码管而显示。

两个十进制数相加的汇编程序

两个十进制数相加的汇编程序

两个十进制数相加的汇编程序汇编语言是一种底层的编程语言,用于编写计算机的指令集。

在汇编语言中,可以使用指令来执行加法操作。

下面是一个用汇编语言编写的程序,用于将两个十进制数相加。

1. 首先,我们需要将两个十进制数保存在内存中。

假设第一个数为A,第二个数为B。

我们可以使用数据段来定义这两个数,并将它们存储在内存中的某个位置。

例如,我们可以将A存储在内存的地址1000处,将B存储在内存的地址1004处。

2. 接下来,我们需要使用寄存器来执行加法操作。

我们可以使用通用寄存器来保存结果。

假设我们将结果保存在寄存器AX中。

3. 首先,将A加载到AX寄存器中。

我们使用MOV指令将A从内存加载到AX 寄存器。

指令为:MOV AX, [1000]。

这将从内存地址1000处读取数据,并将其存储在AX寄存器中。

4. 接下来,将B加载到BX寄存器中。

我们使用MOV指令将B从内存加载到BX寄存器。

指令为:MOV BX, [1004]。

这将从内存地址1004处读取数据,并将其存储在BX寄存器中。

5. 现在,我们需要将AX和BX寄存器中的值相加,并将结果保存在AX寄存器中。

我们使用ADD指令执行加法操作。

指令为:ADD AX, BX。

这将将AX寄存器和BX寄存器中的值相加,并将结果存储在AX寄存器中。

6. 最后,我们可以将结果从AX寄存器中写回内存。

我们使用MOV指令将结果从AX寄存器写回内存。

指令为:MOV [1008], AX。

这将将AX寄存器中的值写回内存地址1008处。

7. 程序结束后,我们可以从内存地址1008处读取结果,并将其输出。

这是一个简单的汇编程序,用于将两个十进制数相加。

程序首先将两个数加载到寄存器中,然后执行加法操作,并将结果存储在寄存器中,最后将结果写回内存。

请注意,这只是一个示例程序,实际的汇编程序可能会更加复杂,并考虑到输入的错误处理和边界情况。

汇编语言课件十进制调整指令讲解

汇编语言课件十进制调整指令讲解

非压缩的8421码调整指令: AAA(ASCII Adjust for Addition)加法的ASCII AAS(ASCII Adjust for Subtraction)减法的ASCII AAM(ASCII Adjust for Multiplication)乘法的ASCII调整指令 AAD(ASCII Adjust for Division)除法的ASCII
1001 1011 CF=1,AF=1
1001 0101
1001 0101
- 0110 0000 CF=1调 整
35)
0011 0101 (十进制
CF=1,AF=1
0001 0010
1110 0001
-0011 0000
调整
-0110 0000
-
1
1000 0001(十进制81)
1110 0001
MOV AL,AH
ADC AL,BH ;高字节相加
DAA
;高字节调整
MOV AH,AL
MOV AL,CL
(2) DAS DAS是减法的十进制调整指令,它必须跟在SUB或
SBB指令之后,将AL寄存器中的减法运算结果调整为2 位压缩型十进制数,仍保留在AL中。
调整方法如下:
若AF=1或者(AL)的低4位是十六进制的A~F,则使AL寄 存器的内容减去06H,并将AF位置1。
非压缩的8421码用8位表示一个十进制数位, 8位中的低4位 表示8421码,而高4位则没有意义。
显然,数字的ASCII码是一种非压缩8421码。 因为数字的 ASCII码的高4位值为0011B,而低4位是以8421码表示的十进制 数位, 这符合非压缩8421码高4位无意义的规定。
相应地PC机的十进制调整指令分为两组,下面分别加以说 明:

课程设计-十进制加法计算器设计

课程设计-十进制加法计算器设计

课程设计(论文)任务书电气学院电力系统专业12(1 )班一、课程设计(论文)题目:十进制加法计算器设计二、课程设计(论文)工作自2015年1 月12 日起至2015 年1月16 日止。

三、课程设计(论文) 地点: 电气学院机房10-303四、课程设计(论文)容要求:1.课程设计的目的(1)综合运用单片机原理及应用相关课程的理论知识和实际应用知识,进行单片机应用系统电路及程序设计,从而使这些知识得到进一步的巩固,加深和发展;(2)熟悉和掌握单片机控制系统的设计方法,汇编语言程序设计及proteus 软件的使用;(3)通过查阅图书资料、以及书写课程设计报告可提高综合应用设计能力,培养独立分析问题和解决问题的能力。

2.课程设计的容及任务课程设计容:利用单片机及一些外围电路设计一个简易的十进制加法计算器,硬件电路设计大概主要包括:键盘电路,显示电路以及复位电路和晶振电路。

软件方面的设计主要包括:LED显示程序设计、数值送显示缓存程序设计、读键子程序设计、运算程序的设计。

课程设计任务:设计一个键盘显示装置,键盘上除了定义0~9共10个数字键外,还要相应的功能健,其它键不定义无响应。

利用此系统可分别输入十进制被加数和加数,实现两个数相加并将结果以十进制形式显示出来。

3.课程设计说明书编写要求(1)设计说明书用A4纸统一规格,论述清晰,字迹端正,应用资料应说明出处。

(2)说明书容应包括(装订次序):题目、目录、正文、设计总结、参考文献等。

应阐述整个设计容,要重点突出,图文并茂,文字通畅。

(3)报告容应包括方案分析;方案对比;整体设计论述;硬件设计(电路接线,元器件说明,硬件资源分配);软件设计(软件流程,编程思想,程序注释,)调试结果;收获与体会;附录(设计代码放在附录部分,必须加上合理的注释)(4)学生签名:2015年1月16 日课程设计(论文)评审意见(1)总体方案的选择是否正确;正确()、较正确()、基本正确()(2)程序仿真能满足基本要求;满足()、较满足()、基本满足()(3)设计功能是否完善;完善()、较完善()、基本完善()(4)元器件选择是否合理;合理()、较合理()、基本合理()(5)动手实践能力;强()、较强()、一般()(6)学习态度;好()、良好()、一般()(7)基础知识掌握程度;好()、良好()、一般()(8)回答问题是否正确;正确()、较正确()、基本正确()、不正确()(9)程序代码是否具有创新性;全部()、部分()、无()(10)书写整洁、条理清楚、格式规;规()、较规()、一般()总评成绩优()、良()、中()、及格()、不及格()评阅人:年月日摘要随着社会科技的发展和进步,计算器因其功能强大而早已成为人们日常生活中必不可少的工具,最简单的计算器就能实现简单的加减乘除运算,这让人们免去了复杂的计算过程,大大提高了工作效率。

汇编课程设计(有符号多位十进制数的四则运算计算器)

汇编课程设计(有符号多位十进制数的四则运算计算器)

汇编语言课程设计实验报告一、课程设计目的《汇编语言程序设计》是计算机专业一门重要的核心课程,也是一门实践性很强的课程,而课程设计则是其中一个重要的应用实践环节。

本次课程设计的目的是提高分析问题、解决问题的能力以及实际动手能力,进一步加深对汇编语言程序设计基本理论的理解,熟练掌握汇编语言程序上机调试的方法技巧、结构化程序设计技术及高级汇编语言技术,能编写较复杂的应用程序,为学习后继课程打下扎实的基础二、实验环境编译机器:IBM兼容PC操作系统:Windows XP -SP2 中文版编译工具:MASM 5.0三、课程设计内容1、编写一个有符号多位十进制数的四则运算计算器程序,所输入的算式如下例所示:-278+32=-132――12=11*-32=-1234/-18=要求程序能接收键入的算式,在接收到‘=’号时,计算并以有符号十进制数的形式显示结果,然后允许用户继续键入算式。

如果键入算式后再键入‘.’,则显示结果并结束整个程序。

(‘/’为整除)程序设计框图:程序源代码:2、已知一个由英语单词组成的字符串已按字典序排好,每个单词以空格符为结束,该串的首二字节为16位无符号二进制数,用以说明串的长度。

试编程能从键盘上输入单词(以空格字符为结束),若字符串中没有该单词,则将该单词插入该串适当的位置,使其仍保持字典序,并修改串长度,显示单词在串中位置及串长度;若字符串中有该单词,则显示字符串中所有包含该单词的单词,及其在字符串中的位置。

程序设计框图:程序代码:DATA SEGMENT; DICTIONARY 字典字符串,首两个字节为 16 位无符号二进制数,说明字符串长度。

DICTIONARY DB 00,16H,"add an book dad egg "DB 100H DUP(20H) ; 空的缓冲区。

MSG_INTRO DB "Input the Word to Search : ","$"MSG_NOTFOUND DB "Not Found, Now Insert it . ",0AH,0DH,"$"MSG_NEWDICT DB 0AH,0DH,"New Dictionary : ","$"MSG_FOUND DB 0AH,0DH,"Found Word in Dictionary : ","$"MSG_POSITION DB 0AH,0DH,"Position : ","$"MSG_DICTLENGTH D B 0AH,0DH,"New Dictionary Length : ","$"MSG_NEWLINE DB 0AH,0DH,"$"BUFFER DB 10H DUP(20H) ; BUFFER 用于保存需要查询的单词。

十进制加减法数字电路课程设计报告

设计名称:设计一个一位十进制加减法器 设计内容:1、0-9十个字符和“+”“-”分别对应一个按键,用于数据输入。

2、用一个开关控制加减法器的开关状态。

3、要求在数码显示管上显示结果。

设计目的与要求:1、学习数字逻辑等电路设计方法,熟知加减法器、编码器、译码显示的工作原理及特点;2、培养勤奋认真、分析故障和解决问题的能力。

设计环境或器材、原理与说明:环境:利用多功能虚拟软件Multism8进行电路的制作、调试,并生成文件。

器材:74LS283或者4008, 4个异或门(一片74LS86)(减法);74LS08,3输入或门(加法)设计原理:图1分析:如图1所示,第一步置入两个四位二进制数(要求置入的数小于1010),如(1001)2和(0111)2,同时在两个七段译码显示器上显示出对应的十进制数9和7;第二步通过开关选择运算方式加或者减;第三步,若选择加运算方式,所置数送入加法运算电路进行运算,同理若选择减运算方式,则所置数送入减法运算电路运算;第四步,前面所得结果通过另外两个七段译码器显示。

设计过程(步骤)或程序代码: 实验电路:1:减法电路的实现:(1):原理:如图1所示(如下),该电路功能为计算A-B 。

若n 位二进制原码为N 原,则与它相对应的补码为N 补=2n -N 原,补码与反码的关系式为N 补=N 反+1,A-B=A+B补-2n=A+B反+1-2n(2):因为B○+1= B非,B○+0=B,所以通过异或门74LS86对输入的数B求其反码,并将进位输入端接逻辑1以实现加1,由此求得B的补码。

加法器相加的结果为:A+B反+1,(3):由于2n=24=(10000)2,相加结果与相2n减只能由加法器进位输出信号完成。

当进位输出信号为1时,它与2n的差为0;当进位输出信号为0时,它与2n差值为1,同时还要发出借位信号。

因为设计要求被减数大于或等于减数,所以所得的差值就是A-B差的原码,借位信号为0。

十进制数加减计算器的设计

十进制数加减计算器的设计1 问题描述用汇编语言设计一个十进制数加减计算器,能够实现两个二位十进制数的加减运算,并具有友好的界面。

2 设计说明该程序数据流程图:3 详细的算法描述定义两个数据段,通过键盘输入,存储于AX ,BX 中,选择运算符号“+或-”,自动运算AX ,BX 中的数据,然后将结果转化为十进制输出。

(详细解释见源程序)4 源程序与执行结果4.1 源程序:CURS MACRO A,BMOV AH,2 ;置光标位置MOV BH,0 ;页号为0MOV DH,A ;设置光标的坐标为(A.B)MOV DL,BINT 10H ;BIOS调用ENDM;-------------------------------DISPMSG MACRO MESSAGELEA DX,MESSAGE ;传递MESSAGE的偏移地址MOV AH,9 ;显示字符串INT 21H ;DOS调用ENDM;----------------------------------CLEAR MACRO COLOR ;清屏MOV AH,6 ;屏幕初始化MOV AL,0 ;页号MOV CH,0 ;设置左上角的坐标为(0,0)MOV CL,0MOV DL,100 ;设置右上角的坐标为(100,100)MOV DH,100MOV BH,COLOR ;卷入行属性INT 10H ;BIOS调用ENDM.MODEL SMALL.STACK.DATA ;数据段定义MSG0 DB '* * * * * * * * * * * * * * * * * * * *',0DH,0AH ;,0dh,0ah,0dh,0ahDB ' * *',0DH,0AH;db '* *',0dh,0ah;db '* *',0dh,0ahDB ' * --------COUNTER-------- *',0DH,0AH ;,0dh,0ah,0dh,0ahDB ' * *',0DH,0AHDB ' * *',0DH,0AHDB ' * *',0DH,0AHDB ' * DATA1:'DB '_______________ *',0DH,0AH ;,0dh,0ah,0dh,0ah,0dhDB ' * *',0DH,0AHDB ' * *',0DH,0AHDB ' * *',0DHDB ' * DATA2:'DB '_______________ *',0DH,0AH ;,0dh,0ah,0dh,0ah,0dhDB ' * *',0DH,0AHDB ' * *',0DH,0AHDB ' * *',0DHDB ' * RESULT:'DB '_______________ *',0DH,0AH,0DH ;,0ah,0dh,0ah,0dh,0ah,0dh,0ah,0dh,0ah,0dh DB ' * *',0DH,0AHDB ' * *',0DH,0AHDB ' * *',0DH,0AHDB ' * *',0DH,0AHDB ' * *',0DH,0AHDB ' * * * * * * * * * * * * * * * * * * * *','$'MSG1 DB 'choose +,-','$'MSG2 DB 'you choose wrong','$',0AH,0DHMSG3 DB 'Press ESC to Exit!',0DH,0AH,'$'MSG4 DB 'Press any key to continue!',0DH,0AH,'$'MSG5 DB '-','$'MSG6 DB '.','$'MSG7 DB 'error input!','$'MSG8 DB 'data2 is wrong!','$'DATA1 DW ?DATA2 DW ?.CODE ;代码段从这里开始;--------------------------------------------DEC_DIV PROC NEARCWD ;将字转换为双字,AX内容符号扩展到DXDIV CXPUSH DXMOV DL,ALADD DL,30H ;将不是数字的字符转换为数字MOV AH,2 ;显示输出INT 21H ;DOS调用POP DXMOV AX,DXRETDEC_DIV ENDP;------------------------------------------CHANGE PROC NEAR ;该子程序的功能:将AX中存储的十六进制数转换为十进制数CMP AX,1000JAE C1 ;AX≥1000则转移CMP AX,100。

十进制加减法

目录课程设计任务书 (2)1 问题描述 (3)2 前期分析 (3)3 课程设计 (3)3.1 总体设计 (3)3.2 模块设计 (4)3.2.1 求和模块 (4)3.2.2 输入十进制数模块 (5)3.2.3 存储器清零模块 (6)3.2.4 减法模块 (7)4 程序源代码 (7)5 调试与分析 (13)6 测试结果 (13)7 经验与体会 (15)评分表 (16)课程设计任务书学生姓名:毛习均专业班级:计算机1004班指导教师:许毅工作单位:计算机科学与技术学院题目: 十进制加减计算器初始条件:理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧.实践:完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法.要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界面的设计.具体的设计任务及要求:1)编写程序实现十进制数的加减法;2)将计算结果在屏幕上显示;3)程序采用子程序结构,结构清晰;4)友好清晰的用户界面,能识别输入错误并控制错误的修改.在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书.阅读资料:1)《IBM—PC汇编语言程序设计实验教程》实验2.42)《IBM—PC汇编语言程序设计(第2版)》例6.11时间安排:设计安排一周:周1、周2:完成系统分析及设计.周3、周4:完成程序调试,和验收.周5:撰写课程设计报告.指导教师签名:年月日系主任(或责任教师)签名:年月十进制加减法计算器1问题描述用汇编语言编写一个十进制加减法计算器,此程序要求将结果显示在屏幕上,并且友好清晰的用户界面,能识别输入错误并且控制修改.在此程序中采用子结构程序使结构清晰.2前期分析此课题是做一个带显示界面的十进制加减法计算器.首先,程序中多次用到BIOS的10号类型的显示中断功能,所以,在完成此课题之前重点深入学习例行中断程序的理论知识以及用法.其次,识别输入错误的修改功能,这就需要判断错误并及时置光标到合适的位置,以便提示并修改错误.最后,对于采用子程序结构必须清晰了解课题的大体结构,然后分析与设计子程序结构.比如输入十进制数就可以采用子程序结构.3课题设计3.1总体设计图1有好用户界面3.2模块设计3.2.1求和模块如右图2,求和模块,将加数与被加数相加然后扩展为双字,最后通过求余把每一位数存储在HE存储单元里,后面把结果按位输出.图2 求和3.2.2输入十进制数模块图3输入十进制数上图3,就是输入两个十进制数,对输入的字符判断,如果是0-9之间的数,则转化为十进制数,否则提示重新输入字符.3.2.3存储单元清零模块为保证不发生内存访问冲突,每次重新计算的时候都要存储单元清零.如图4图4存储单元清零3.2.4减法模块减法模块主要是比较减数与被减数的大小,如果data1>data2就直接计算,打印结果.否者将data1压入堆栈,显示’-’,然后data1出栈、计算,打印结果.减法模块如下图5图5 减法4.程序源代码DATAS SEGMENTSTR1 DB 0AH,0DH, ' ********************************************' STR2 DB 0AH,0DH, ' * *'STR3 DB 0AH,0DH, ' * *'STR4 DB 0AH,0DH, ' * 1:Enter run *'STR5 DB 0AH,0DH, ' * *'STR6 DB 0AH,0DH, ' * other keys exit *'STR7 DB 0AH,0DH, ' * *'STR8 DB 0AH,0DH, ' * *' STR9 DB 0AH,0DH, ' * *' STR10 DB 0AH,0DH, ' ********************************************' LENGTH1 EQU $-STR1 ;至str1的字节数STR11 DB 'Enter Exit,Other keys continue!$'STR12 DB 'Please input again!$'ERR DB 'Error!Please input again!$'STR13 DB 'input data1:','$'STR14 DB 'input data2:','$'STR15 DB 'add result:','$'STR16 DB '-','$'STR17 DB 'sub result:','$'COUNT DW ?VALUE DW ?JIASHU DW ?BEIJIASHU DW ?HE DW ?SHOW MACRO M ;定义宏,显示字符串LEA DX,MMOV AH,9INT 21HENDMGUANGBIAO MACRO M1,M2MOV DH,M1 ;行(Y坐标)MOV DL,M2 ;列(X坐标)MOV BH,0 ; 显示页码MOV AH,02INT 10H ;用文本坐标下,设置光标位置ENDMQINGPING MACRO M1,M2,M3,M4,M5MOV AH,6 ;向上滚屏MOV AL,M1 ;滚动行数(0-清窗口)MOV BH,0DH ;空白区域的缺省属性MOV CH,M2 ;窗口的左上角位置,Y坐标MOV CL,M3 ;----------------,X坐标MOV DH,M4 ;窗口的右上角位置,Y坐标MOV DL,M5 ;----------------,X坐标INT 10HENDMDATAS ENDSSTACKS SEGMENTSTACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASMOV DS,AXMOV AL,3 ;80*25 16色文本MOV AH,0 ;设置显示模式为80*25彩色文本模式INT 10HMOV BP,SEG STR1 ;取段地址MOV ES,BPMOV BP,OFFSET STR1 ;取偏移地址MOV CX,LENGTH1MOV DX,0MOV BL,09H ;属性(颜色) MOV AL,0 ; 光标位置不变(1改变)属性存在BL中,2和3的属性不在BL 中GUANGBIAO 4,15MOV AH,13H ;在TELETYPE模式下显示字符串INT 10HMOV AH,1 ;键盘输入并回显INT 21HCMP AL,31H ;输入1进入加法器,输入2结束;JNZ NEXT;NEXT:;JMP LOOP8GUANGBIAO 8,20 ;确定光标位置(字符串起始位置)SHOW STR13GUANGBIAO 9,20SHOW STR14GUANGBIAO 10,20SHOW STR15GUANGBIAO 11,20SHOW STR17MOV SI,-2MOV CX,5LOOP1: ;存储器清零 ADD SI,2MOV HE[SI],0LOOP LOOP1MOV BX,0LOOP2: ;输入被加数 QINGPING 1,8,30,8,50QINGPING 1,9,30,9,50QINGPING 1,10,30,10,50QINGPING 1,11,30,11,50GUANGBIAO 8,30CALL INPUTMOV BEIJIASHU,BXLOOP3: ;输入加数 QINGPING 1,13,18,13,51QINGPING 1,12,20,12,50MOV BX,0GUANGBIAO 9,30MOV BX,0CALL INPUTMOV JIASHU,BXLOOP4:GUANGBIAO 10,30 ;相加MOV AX,BEIJIASHUADD AX,JIASHUCWDMOV DX,0 ;扩展并求结果各位数值 MOV BX,10000DIV BXMOV [HE],AXMOV AX,DX ;余数给AX CWDMOV BX,1000DIV BXMOV [HE+2],AXMOV AX,DXCWDMOV BX,100DIV BXMOV [HE+4],AXMOV AX,DXCWDMOV BX,10DIV BXMOV [HE+6],AXMOV [HE+8],DXMOV SI,-2MOV CX,5LOOP5:ADD SI,2 ;结果输出MOV DX,HE[SI]ADD DX,30HMOV AH,02INT 21HLOOP LOOP5 ;每位循环输出LOOP_I : ;JIAN FAGUANGBIAO 11,30MOV AX,BEIJIASHUCMP AX,JIASHUJAE FLAGXCHG AX,JIASHUPUSH AXMOV DX,OFFSET STR16MOV AH,09HINT 21HPOP AXFLAG:SUB AX,JIASHUCALL PRINTJMP LOOP6LOOP6:GUANGBIAO 13,19 ;退出或继续 SHOW STR11MOV AH,01INT 21HCMP AL,0DH ;回车退出 JNE LOOP7MOV AH,4CHINT 21HLOOP7:QINGPING 1,13,18,13,51GUANGBIAO 12,21SHOW STR12JMP LOOP1LOOP8:MOV AH,4CHINT 21HERROR:GUANGBIAO 12,21SHOW ERRJMP LOOP1INPUT PROC NEAR ;输入子程序LP1:MOV AH,01INT 21HCMP AL,0dH ;输入回车输入结束 JE EXITCMP AL,31HJB ERRORCMP AL,39HJA ERROR ;不是0~9之间则显示错误 SUB AL,30HCBWXCHG AX,BXMOV CX,10MUL CXADD BX,AXJMP LP1 ;跳转直到输入回车EXIT:RETINPUT ENDPPRINT PROC NEAR ;JIA FA DE SHU CHU JIE GUOPUSH AXMOV VALUE,AXMOV COUNT,0PRINT_D_LOP1:XOR DX,DXMOV AX,VALUEMOV BX,10DIV BXMOV VALUE,AXPUSH DXINC COUNTCMP VALUE,0JA PRINT_D_LOP1PRINT_D_LOP2:CMP COUNT,0JE P_EXITDEC COUNTPOP AXADD AL,30HMOV DL,ALMOV AH,02HINT 21HJMP PRINT_D_LOP2P_EXIT:POP AXRETPRINT ENDPCODES ENDSEND START5调试与分析(1)最初汇编的时候出现asm<74>:error A2053:jump out of range by 121 byte<s>,看看源程序和查资料发现是有条件跳转有界限的,无条件跳转可以“远跳”.最后通过有条件和无条件结合,解决这一问题.(2)对于减法的结果,重新输入时候没有把结果清零,我就用mov ax,0;mov,dx,0还是不行,经过调试,发现是对减法的那个结果没有清屏.而不是存储器清零的原因.(3)对于跳转指令,遇到跳转才跳转,没有的话,就是一步一步的指令顺序执行.这个好像是汇编中很简单的概念,但是有时候很容易忘记,但是经过调试发现,出现了这个简单的逻辑错误.6测试结果(1)友好界面,开始运行时的界面,当输入1就运行程序,输入其他键就退出程序,如下图6图6 开始菜单(2)程序输入34,89后得到加法结果为00123,减法结果-55结果正确,如下图7图7正确输入,输出结果(3)当输入非(0-9)的数字时,比如输入字母或者符号时,就提示“Error!please input again!”,提示重新输入,直到输入正确,如下图8图8输入错误,提示重新输入(4)最后输入正确数字后,将会看到“Enter Exit,other key continue!”如果输入enter键退出程序,否者继续运算,如下图9图9输入正确,并执行运算,enter键退出7经验与体会该开始看这个题目很简单的,但是后来发现很多的问题.比如在BIOS的10号类型的显示中断功能的应用就花费不少的时间,那里面确实有很多技巧值得深入学习.本程序的跳转出现越界的情况,最后通过查资料最终把问题解决了,说明我们不懂的问题多去深入那个问题研究.其余比较关键的就是本程序的细节问题,比如在输入时如何防止程序出错,就是在输入非数字的数据时可以提示使用者错并使其重新输入.本程序用到了课堂上几乎没有讲过的宏定义,此程序应用了宏定义,使程序更加简洁.也不失一种大胆的尝试,并且取得了很好的效果.通过本次课程设计发现自己在课堂上所学是知识只是基础部分,如果想自己做出更好的程序就需要花更多的精力在上面,通过网上找资料,我发现只要可以熟练运用汇编,我们就可以做出各种有趣或者实用的程序,那是一件非常有意义的事情.可能这也是我们学习这门课程的最终所要达到的目的.本科生课程设计成绩评定表班级:计算机1004班姓名:毛习均学号:0121010340421及格(60-69分)、60分以下为不及格指导教师签名:201 年月日........忽略此处.......。

汇编语言课程设计-十进制加减法

目录课程设计任务书 (2)1 问题描述 (3)2 前期分析 (3)3 课程设计 (3)3.1 总体设计 (3)3.2 模块设计 (4)3.2.1 求和模块 (4)3.2.2 输入十进制数模块 (5)3.2.3 存储器清零模块 (6)3.2.4 减法模块 (7)4 程序源代码 (7)5 调试与分析 (13)6 测试结果 (13)7 经验与体会 (15)评分表 (16)课程设计任务书学生姓名:毛习均专业班级:计算机1004班指导教师:许毅工作单位:计算机科学与技术学院题目: 十进制加减计算器初始条件:理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。

实践:完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)进一步理解和掌握较复杂程序的设计方法,掌握子程序结构的设计和友好用户界面的设计。

具体的设计任务及要求:1)编写程序实现十进制数的加减法;2)将计算结果在屏幕上显示;3)程序采用子程序结构,结构清晰;4)友好清晰的用户界面,能识别输入错误并控制错误的修改。

在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。

阅读资料:1)《IBM—PC汇编语言程序设计实验教程》实验2.42)《IBM—PC汇编语言程序设计(第2版)》例6.11时间安排:设计安排一周:周1、周2:完成系统分析及设计。

周3、周4:完成程序调试,和验收。

周5:撰写课程设计报告。

指导教师签名:年月日系主任(或责任教师)签名:年月十进制加减法计算器1问题描述用汇编语言编写一个十进制加减法计算器,此程序要求将结果显示在屏幕上,并且友好清晰的用户界面,能识别输入错误并且控制修改。

在此程序中采用子结构程序使结构清晰。

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