《2022年2022年汇编计算器 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年汇编计算器 .pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1 项目特点及目的本课程设计是一次程序设计方法及技能的基本训练,通过实际程序的开发及调试,巩固课堂上学到的关于程序设计的基本知识和基本方法,进一步熟悉汇编语言的结构特点和使用,达到能独立阅读、设计编写和调试具有一定规模的汇编程序的水平。2 题目简介用 8086 汇编语言编写一个能实现四则混合运算、带括号功能的整数计算器程序。程序能实现键盘十进制运算表达式的输入和显示(例如输入:“1+2*(3-4) ” ) ,按“ =”后输出十进制表示的运算结果。3 程序设计要求遵循模块化、结构化的编程思路程序必须正确运行程序简明易懂,多标明注释,具有良好的程序书写风格适当优化程序,提高程序的运行效率4 工作条
2、件使用的设备及软件为8086 兼容机及 MASM 汇编开发软件。5 题目分析根据题目要求,可以把程序的工作过程划分为运算表达式输入、计算、结果输出三部分。因此在编写程序时可以按此把程序大致划分为三个模块。5.1 运算表达式输入用户通过键盘输入的运算表达式为一个ASCII 码字符串,字符串的最后一个字符是“=”号。对于这个运算表达式,“+、 -、* 、/、 (、 ) 、09、=”是合法的表达式内容,其他的字符则是无法进行运算的非法内容,因此需要首先进行表达式合法性检查。另外,由于计算机能进行计算的是2 进制的补码,因此还需要把以ASCII 码表示的数值转换为补码的形式并加以保存。当然,控制运算方
3、式的符号也要进行保存。因此,“运算表达式输入”这个模块可以细化为:表达式合法性检查、数值的ASCII 码到补码转换及保存、符号的保存三个小部分,如图1 所示。数值的补码转换及保存运算表达式合法性检查运算符的保存图 1 “运算表达式输入”的流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 14 页 - - - - - - - - - 2 5.1.1 运算表达式合法性的检查方法观察“ ASCII 字符编码表” ,可以发现“ +、-、*、 /、 (、 ) ”的 ASCII
4、码由 28H 到 2FH,而“ 09”的 ASCII 码则由 30H 到 39H,因此只需对输入的字符一个一个地进行数值范围比较, 看看是否处于28H39H 这个范围里面,即可区分输入的表达式是否合法,流程图如图 2 所示。 此流程图是采用循环输入字符的方法,每输入一个字符即进行判断。读者也可以采用输入字符串的方法,把整个运算表达式接收完毕后再进行判断。输入字符是“ =”小于 28H大于 39H小于 30H输入结束是否是是是否否否是符号,执行相应处理是数值,执行相应处理图 2 运算表达式合法性检查流程图一另一方面, 对于含有括号的运算表达式,当左括号的数量与右括号数量不相等时,表达式也是非法的
5、。 因此, 可以设置一个起始值为0 的变量(下面称其为配对标志),当输入 “(”时此变量加一,当输入“)”时减一,则当表达式输入结束时,只需判定此配对标志是否为0,即可判定左右括号数量是否相等。输入是符号是“ (”是“ )”否配对标志加 1配对标志减 1是是保存符号否输入结束配对标志为 0出错,退出进行计算是否图 3 运算表达式合法性检查流程图二5.1.2 数值的补码转换方法要进行数值的ASCII码到补码的转换,首先就得判断输入的字符是数值还是符号。根据上文所提, “+、 -、*、/、 (、 ) ”的 ASCII 码由 28H 到 2FH,而“ 09”的 ASCII 码则由30H 到 39H,
6、只需比较字符是否小于等于2FH(或小于30H)即可判断是否为符号,否则则是数值,如图2 所示。众所周知,要把一个ASCII 码数值转换为二进制补码的形式,只需要对其减30H 即可实现。但如果输入的是多位数,例如123,那么计算机获得的是31H、32H、33H 三个字节,名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 14 页 - - - - - - - - - 3 即使分别对这三个字节进行减30H 操作,也只是获得1、2、3 三个数而已。实际上可以利用加权的方法合并这几个
7、数:1231100 210 31 但另一个问题是,由于输入是随机的,即输入的运算数有多少位是未知的,因此无法使用上面的方面静态确定每一位的权重。这里介绍的方法是,每输入运算数的一位,则把前面的合并结果(称为原值)乘以10 再与这一位相加,实现动态的加权合并。例如:令原值为 0,输入 1,结果为: 01011 输入 2,结果为: 110212 输入 3,结果为: 12 103123 即: 123( ( (0101) 102) 10) 3。数值的补码转换流程如图4 所示,当然,在获得第一个数值输入前要先把原值设置为0。输入是数值结果作为新的原值保存减 30H与原值的 10倍相加图 4 数值的补码转
8、换流程图由于符号全部是一个字节,无需进行任何转换即可保存,处理简单,这里不作探讨。5.2 计算由于运算表达式有多个数值和符号,而符号有不同的优先级别,因此上文提到的数值保存和符号保存应该分开两个地方进行保存,这样有利于表达式的计算算法设计。下面把“+、-、*、 /”称为运算符,把“ (、 ) ”称为优先符。1212*34+5634 56*+数值存储符号存储(a)1212*(34+56-8)34 56*(数值存储符号存储(b)8+-)1212*21-(34+56-8)+1)21 34*(数值存储符号存储(c)56+-)81-(+)图 5 运算表达式的存储举例观察图 5 的三条运算表达式,再联系四
9、则混合运算的优先原则,可以归纳出几点:(a)数值的数量是运算符的数量加1(优先符不算) ,第 1 个运算符代表第1、2 个数值的运算操作,第N 个运算符代表第N、N+1 个数值的运算操作 ,(b)每进行一次运算,相应的运算符即被消除,而参与运算的两个数值合并为一个数值,仍然满足( a) 。例如图 5(a) ,当完成乘法运算后,数值存储区有408、56 两个数,符号存储区有“+”一个运算符。(c)括号(优先符)的作用是把括号内的运算符的优先级别提高到比外部高。因此,要实现运算表达式的运算,最重要的就是确定所有运算符的优先级别。下面讨论运算符优先级别的编程设计方法。名师资料总结 - - -精品资料
10、欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 14 页 - - - - - - - - - 4 5.2.1 运算优先级别的静态确定法此方法是完成了把整条运算表达式全部存入数值存储区和符号存储区后才开始对运算符优先级进行判断的方法:设置“ * 、/”的优先级为2、 “+、 -”的优先级为1;括号内部的所有运算符的优先级全部加2。运用优先级别静态确定法处理图5 的三条表达式的运算符,结果如图6 所示。其中图 6(c)的“ 34+56-8”由于被括号括起两次,因此其两个运算符“+、-”的优先级别均加了两次
11、2。1212*34+5634 56*+数值存储符号存储(a)1212*(34+56-8)34 56*(数值存储符号存储(b)8+-)1212*21-(34+56-8)+1)21 34*(数值存储符号存储(c)56+-)81-(+)21优先级2优先级332优先级5513图 6 运算符的静态优先级别最后,由于四则混合运算遵循从左往右计算的原则,即相同优先级别的运算符靠左的优先。因此, 只需计算出符号存储区里面的所有运算符的优先级别,然后根据优先级的大小先后执行运算符对应的运算即可实现计算(当然每进行一次运算,相应的运算符即被消除,而参与运算的两个数值合并为一个数值)。当数值存储区里面剩下一个数值时
12、,运算结束,这个最后的数值就是运算的最终结果。请同学们自行设计此算法的流程图。5.2.2 运算优先级别的动态确定法运算优先级别静态确定法具有容易理解、实现简单的优点,而其缺点是:如果运算表达式太长、 太多数值和符号时,则会占用较多的存储空间,而且计算优先级的工作量也会增多。动态确定法是在运算表达式未结束输入即开始计算的一种方法。由于在表达式输入阶段已开始计算,因此计算结果的速度比静态确定法快。观察图5(a) ,当用户输入“+”时,已经可以开始计算“12*34” ;观察图5(b) ,当用户输入“ -”时,已经可以开始计算“34+56” ;观察图 5(c) ,当用户输入第一个“-”时,已经可以开始
13、计算“12*21” 。也就是说, 当用户输入的运算符的优先级不大于前一个运算符时,即可开始前一个运算符的计算。问题是,对于有括号的运算表达式,在用户没有完成运算表达式的全部输入前,很难提前确定括号内部运算符的优先级。为了解决这个问题,动态确定法把优先符(括号)也赋予了优先级:“ (” ,优先级为5;“* 、/” ,优先级为4;“+、-” ,优先级为3;“) ” ,优先级为1。计算图 5 三条运算表达式的所有符号的优先级别,结果如图7 所示。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -
14、第 4 页,共 14 页 - - - - - - - - - 5 1212*34+5634 56*+数值存储符号存储(a)1212*(34+56-8)34 56*(数值存储符号存储(b)8+-)1212*21-(34+56-8)+1)21 34*(数值存储符号存储(c)56+-)81-(+)43优先级4优先级334优先级3333551115图 7 运算符的动态优先级别设计计算的条件:(1) 只有优先级为3、4 的符号(即 +、 -、*、/)可以进行计算;(2) 如果某符号的优先级大于等于下一个的优先级时,对此符号进行相应运算(当然每进行一次运算,相应的运算符即被消除,而参与运算的两个数值合并为
15、一个数值);(3) 如果左右括号相邻,且左括号在右括号左边时(即在符号存储区里面出现“() ”的情况,或者在优先级队列里出现“51”的情况),把这对括号消除掉。最后,当数值存储区里面剩下一个数值(或者符号存储区里面没有符号)时,运算结束,这个最后的数值就是运算的最终结果。请同学们自行设计此算法的流程图。5.3 结果输出当数值存储区里面剩下一个数值(或者符号存储区里面没有符号)时,运算结束,需要把运算结果输出显示。分析运算结果的特点:运算结果为一个2 进制补码,整数,如果数据长度为16 位,则运算结果范围是:-3276832767。运算结果的输出要解决的主要问题是:正负数区分、补码到 ASCII
16、 码转换并输出显示。运算结果的输出流程如图8 所示。补码到 ASCII码转换正负数区分输出显示图 8 结果输出流程图5.3.1 正负数区分运算结果有三种情况:正整数、负整数、零。运算结果以补码形式对这三种情况进行统一的存储,但显示输出时则有所不同。负整数前面需要显示“-”号,因此需要对运算结果的符号进行判断。另一方面,正整数和零的补码与原码相同,而负整数的补码则不一样。把负整数进行取补码运算,把它转换为原码,可以实现运算结果统一的ASCII码转换输出方法,而不需要分别为正整数和零、负整数分别设计两个不同的ASCII 码转换程序,如图9所示。开始小于 0输出“ -”是否取补码ASCII 码转换图
17、 9 正负数区分流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 14 页 - - - - - - - - - 6 5.3.2 补码到 ASCII 码转换计算结果在屏幕上的输出显示实际上是ASCII 码的输出显示。假设程序采用的数据长度为 16 位,则运算结果范围是:-3276832767,即屏幕最多得显示5 位 ASCII 码。由于上文已经把结果统一为原码,下面介绍如何把原码转换为ASCII 码。这个转换过程实际上跟上文的“数值的补码转换方法”是相反操作。例如要把1
18、23 在屏幕上输出显示,即要把123 的百位、十位、个位分离,得到1、2、3,然后转换为31H、32H、33H 三个 ASCII 码。众所周知,把一位数转换为ASCII 码只需加30H 即可,下面介绍把一个多位数的各位分离的方法。(一)除十法分离方法是:对一个多位数进行除10 处理,得到的余数即为个位数,而商则是删除个位后的多位数。 对商反复进行除10 处理, 直到商为 0 为止,即可把各位数分离。例如对 123进行除十法处理:123/10,商是 12,余数是 3 12/10,商是 1,余数是 2 1/10,商是 0,余数是 1 可见经过三次除十计算,得到的三个余数刚好就是对123 的各位的分
19、离结果。接着只需分别对这些余数加30H 即可转换为ASCII 码,实现输出转换。除十法的优点是不需要理会要输出的数值有多少位,不断除以10 直到商为0 即可;缺点是得到的余数的顺序跟输出的方向相反,不方便输出。 例如上例得到的三个余数的顺序是3、2、1,加 30H 转换输出后屏幕显示为“321” ,跟期望显示的顺序相反,要作进一步处理。处理方法是把余数放进堆栈里面,然后再出栈显示。由于堆栈是先进后出的,即可解决该输出的顺序问题。输出数 /10余数加 30H入堆栈商为 0否输出数商出栈,显示是开始结束图 10 除十法流程图(二)除最高位法分离方法是先除以10位数-1,得到的商即为最高位,余数为删
20、除最高位后的多位数。接着令余数除以10位数-2,得到的商为次高位, , 。例如123,其位数是3(个位、十位、百位) ,则计算过程为:123/103-1,商是 1,余数是 23 23/103-2,商是 2,余数是 3 3/103-3,商是 3,余数是 0 可见经过三次计算,得到的三个商刚好是对123 的各位的分离结果,而且顺序跟输出名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 14 页 - - - - - - - - - 7 方向相同。可以直接加30H 转换输出,屏幕显
21、示为“123” 。该方法的缺点是:必须首先确定要输出的数值有多少位,编程者必须十分清楚需要输出的数值的数值范围。输出数 /X商加 30H,输出余数为 0否输出数 =余数结束是开始 X=10位数 -1X=X/10图 11 除最高位法流程图6 得出的程序;- ;-数据定义 - DSEG SEGMENT STR1 DB 0AH,0DH, *$ STR2 DB 0AH,0DH, * *$ STR3 DB 0AH,0DH, * welcome you ! *$ STR4 DB 0AH,0DH, * *$ STR5 DB 0AH,0DH, * this is programme of sizeyunshu
22、an *$ STR6 DB 0AH,0DH, * rang(-32768 to 32767) *$ STR7 DB 0AH,0DH, * press q to exit ! *$ STR8 DB 0AH,0DH, * copyright by linjieling *$ STR9 DB 0AH,0DH, * please input the formula: *$ STR10 DB 0AH,0DH, *$ SIGN1 DW 0 ;判断数字是否输入完毕SIGN2 DW 0 ;判断括号是否配对NUMB DW 20H DUP(0) ; 保存输入的数值MARK DB A ;保存输入的运算符DB 10H
23、 DUP(0) ; ERROR DB YOUR INPUT ARE WRONG$ DSEG ENDS ;-宏定义 - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 14 页 - - - - - - - - - 8 DISP MACRO M ;字符串输出LEA DX,M ;将 M 的偏移地址传送给DX 寄存器MOV AH,9 ;其中 09H 是字符串输出INT 21H ;通过给 AH 寄存器赋值,再调用INT 21H 指令,根据AH 寄存器中的值执行相应的操作ENDM C
24、HOICE MACRO ASC1,HAO1,HH ;宏定义,给运算符赋权值CMP AL,ASC1 ;比较键盘输入的运算符(运算符的ASC 码存放在AL 寄存器)与 ASC1 JNE OTHER&HAO1 ;若不等,则往下执行OTHER1 ,如此类推MOV CH,HH ;将运算符的权值(即优先级高低值)传送到CH 寄存器JMP OTHER7 ;执行后,返回ENDM ;- CSEG SEGMENT ; ASSUME CS:CSEG ,DS:DSEG START: CALL CLEAR MOV AX,DSEG ; MOV DS,AX ; LEA DI,NUMB ;将 NUMB 的偏移地址传送到DI
25、,NUMB 存储单元中存放输入的数值LEA SI,MARK ;将 MARK 的偏移地址传送到SI,MARK存储单元中存放输入的运算符DISP STR1;显示字符串DISP STR2 DISP STR3 DISP STR4 DISP STR5 DISP STR6 DISP STR7 DISP STR8 DISP STR9 DISP STR10 MOV AX,0; 数据寄存器清零MOV DX,0 MOV BX,0 MOV CX,0 STA1 : CALL CR ;回车换行;-初始化 - INPUT: MOV AH,1 ;其中 1H 是键盘输入并回显,AL 中有输入字符INT 21H ;通过给 AH
26、 寄存器赋值,再调用INT 21H 指令,根据AH 寄存器中的值执行相应的操作;-输入字符 - 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 14 页 - - - - - - - - - 9 CMP AL,q JE J_SHU ;-若输入 q,则返回 dos 状态 - CMP AL,= ; JE PD ;判断配对标志位;-是等号,进一步判断输入括号是否配对- CMP AL,28H ; JB BC ;JB 为小于就跳转CMP AL,39H ; JA BC ;JA 为大于就
27、跳转;- 输入字符的ASC 码小于 28H 或大于 39H,则继续输入 - CMP AL,2FH ; 判断是数字还是符号JBE JUD ;是符号转入响应操作;- INC WORD PTR SIGN1 ; 将数字标志位加1 SUB AL,30H ;将 ASC 码转 16 进制MOV AH,0 ; XCHG AX,DI ;互换两个操作数的存放位置,实现字交换MOV BX,10 ; MUL BX ;无符号数乘法指令XCHG AX,DI ; ADD DI,AX ; JMP INPUT ; ;-输入为数值时的操作- PD: CMP WORD PTR SIGN2,0 ; 判断配对标志位JE JUD ;跳到
28、判断数值是否输入完毕JMP BC ;不配对则显示ERROR ;- JUD: CMP WORD PTR SIGN1,0 ;判断数值是否输入完毕JE FUH1 ;跳到判断优先级ADD DI,2 ;DI向下移一个字MOV WORD PTR SIGN1,0;数值标志位清零;- FUH1: CALL ADV ANCE ; 判定优先级CMP CH,5 ; 判断输入的运算符中是否有左括号JNE PY ; 不是,则判断输入的运算符中是否有右括号;- INC WORD PTR SIGN2 ; 是左括号,括号标志位加1 ;- PY: CMP CH,1 ; 判断输入的是否是右括号JNE AGAIN ; 跳到判断运算
29、存储区是否为空DEC WORD PTR SIGN2 ; 是右括号,括号标志位减1 ;- AGAIN: CMP BYTE PTRSI,A;判断运算符存储区是否为空名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 14 页 - - - - - - - - - 10 JE SAVE ; 判断输入是否为= CMP CH,SI ; JA SAVE ; 计算高优先级的SI 指向运算符,每个运算符都有相应的权值CMP BYTE PTRSI,( JNE YIDO; 寻找左括号DEC SI;
30、是左括号,还是向上移,判断左括号前边是否还有运算符JMP INPUT; ;- YIDO: DEC SI ;SI向上移MOV CL,SI ; 将运算符传送给CL CALL MATCH ;判断是什么运算符并进行相应的计算JMP AGAIN ; 判断运算符存储区是否为空;- SAVE: CMP CH,0 ; JE OVER ;= 时,则输出结果CMP CH,1 ; JE INPUT ; “)”不保存,输入下一个数INC SI ; MOV SI,AL ; INC SI ; CMP CH,5 ; JNE GO_ON ; MOV CH,2 ; 改变 (的权值GO_ON: MOV SI,CH ; JMP I
31、NPUT ; ;- BC: LEA DX,ERROR ; 将 ERROR 的偏移地址给DX MOV AH,9 ; INT 21H ; CALL CR JMP J_SHU1 ; ;-四则运算子程序- MATCH PROC ;子程序,进行相应的运算PUSH AX ; XOR AX,AX; 异或XOR BX,BX ;-乘法运算 - CMP CL,2AH ; 乘法运算JNE NEXT1 SUB DI,2 XCHG BX,DI SUB DI,2 XCHG AX,DI 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - -
32、 - - - - 第 10 页,共 14 页 - - - - - - - - - 11 IMUL BX MOV DI,AX ADD DI,2 JMP FINISH ;- ;-除法运算 - NEXT1: CMP CL,2FH ;除法运算JNE NEXT2 SUB DI,2 XCHG BX,DI SUB DI,2 XCHG AX,DI CWD IDIV BX MOV DI,AX ADD DI,2 JMP FINISH ;- ;-加法运算 - NEXT2: CMP CL,2BH ;加法运算JNE NEXT3 SUB DI,2 XCHG BX,DI SUB DI,2 ADD DI,BX ADD DI,
33、2 JMP FINISH ;- ;-减法运算 - NEXT3: CMP CL,2DH ;减法运算JNE FINISH SUB DI,2 XCHG BX,DI SUB DI,2 SUB DI,BX ADD DI,2 FINISH: POP AX RET MATCH ENDP ;- ;-定义优先级 - ADV ANCE PROC CHOICE 28H,1,5 ;( 28H 为 ( 的 ASCII 码OTHER1: CHOICE 29H,2,1 ;) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - -
34、 - 第 11 页,共 14 页 - - - - - - - - - 12 OTHER2: CHOICE 2AH,3,4 ;* OTHER3: CHOICE 2FH,4,4 ;/ OTHER4: CHOICE 2BH,5,3 ;+ OTHER5: CHOICE 2DH,6,3 ;- OTHER6: CHOICE 3DH,7,0 ;= OTHER7: RET ADV ANCE ENDP ;- ;-*清屏 *- Clear PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX MOV AH,06H MOV AL,00H MOV CH,0 MOV CL,0 MOV BH
35、,0FH MOV DH,18H MOV DL,4FH INT 10H MOV BH,0 MOV DX,0 MOV AH,02H INT 10H POP DX POP CX POP BX POP AX RET Clear ENDP ;- ;-*回车换行 *- CR PROC PUSH AX PUSH DX MOV AH,2 MOV DL,13; 回车INT 21H MOV AH,2 MOV DL,10; 换行INT 21H POP DX 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第
36、12 页,共 14 页 - - - - - - - - - 13 POP AX RET CR ENDP ;- OVER: SUB DI,2 CMP WORD PTRDI,0 JGE W1 NEG WORD PTRDI MOV DL,- MOV AH,2 INT 21H ;- W1: MOV BX,10000 MOV CX,5 MOV SI,0 ;- W2: MOV AX,DI MOV DX,0 DIV BX MOV DI,DX CMP AL,0 JNE W3 CMP SI,0 JNE W3 CMP CX,1 JE W3 JMP W4 ;- W3: MOV DL,AL ADD DL,30H MO
37、V AH,2 INT 21H MOV SI,1 ;- W4: MOV AX,BX MOV DX,0 MOV BX,10 DIV BX MOV BX,AX LOOP W2 ;- J_SHU1: MOV WORD PTRDI,0 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 14 页 - - - - - - - - - 14 CALL CR MOV NUMB,0 MOV SIGN1,0 LEA DI,NUMB ; LEA SI,MARK JMP STA1 ;-*返回 DO
38、S 状态 *- J_SHU: MOV AH,4CH;返回 DOS 状态INT 21H ;- CSEG ENDS END START 7 心得体会在这一周的课程设计中,我遇到了很多难题,由于在上一期并没有将微机原理学习好,导致我一开始看到这次课程设计题目时不知道应该如何下手,在通过翻看书本和上网找资料后,我渐渐的接触到一点眉目,开始进行尝试的编程,在不断的尝试、失败和修改中,我慢慢的懂得汇编一个计算器的基本原理和所需要的一些细节问题。最终, 我经过翻找资料、询问同学并进行无数次的尝试后得出了我的程序。通过这次的课程设计,使我更加了解汇编语言的编写以及用途,让我反思上一学期的懒散,坚定自己努力学习的决心。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 14 页 - - - - - - - - -