版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、微机原理与接口技术课程设计院系:电气与自动化工程系专业:通信工程年级班级:学号:姓名:指导教师:设计日期:2010-12-28一、 课程设计目的每个同学在 1-2 周时间内,用汇编语言独立完成一个程序题,以达到熟练运用汇编语言编程实现有比较完整功能的程序的目的。二、课程设计要求从键盘上输入数字参与运算, 并在屏幕上显示结果, 至少实现加法减法运算。三、课题分析该程序设计的关键是要根据四则运算中()、* 、/ 、+、- 、= 的优先级设置符号的权值,其中(、 * 、/ 、+、- 、)、= 的权值分别设置为5、4、4、3、3、1、0 ,然后根据权值的大小进行运算。程序使用数字标志SIGN1、括号标
2、志 SIGN2分别来判断数字是否输入完毕和括号是否配对,另外程序定义两个数据存储区域NUMB和 MARK,其中 NUMB用来保存输入的或运算的数值, MARK用来保存输入的符号及其对应的权值。程序不断判断输入的符号是否是左括号( ,当遇到左括号是在存储区 MARK保存其符号,紧跟着将 ( 的权值改为 2 并保存之,这是为了使程序运算括号内的表达式,当遇到右括号)时括号内运算将结束。需要注意的是程序执行完括号内表达式的运算及乘除运算后将在存储区MARK中覆盖符号(、)、 * 、/ 及紧跟着的权值,使得程序在运算整个四则运算表达式时当括号内表达式的运算及乘除运算结束后存储区MARK中只有 + 、-
3、 运算符及紧跟着的权值,然后按照 +、- 运算符的左右顺序从左到右进行+、- 运算,当最后遇到等号 = 时输出表达式的数值,然后再根据提示判断是否继续执行下一个四则运算表达式。- 1 -四、流程图ERROR=N(SIGN2)= 0Y(SIGN1)=0YN开始清屏初始化首地址输出欢迎界面输入字符是数字、符号还是 =是符号是数字保存数值设置符号权值DI+2 (SIGN1)=0是否是(NY(SIGN2)+1是否是)NY(SI)= M (SIGN2)-1YN(CH)(SI)- 2 -YYNN是否是等号(SI) =(NYYNY(CH)=2 N是否是)SI+1( SI)=AL SI+1是否是(( SI)
4、=(CH)输出表达式的值显示是否继续输入字符NSI-1SI-1CL= (SI)是何种运算进行相应的运算初始化首地址DI+2(AL) =N或nY结束- 3 -五、程序源代码DATAS SEGMENTENDMSTR1DBCODESSEGMENT0AH,0DH,*ASSUMECS:CODES,DS:DATAS*$START:STR2DB 0AH,0DH, *CALL CLEAR*$MOVAX,DATASSTR3DB 0AH,0DH, *MOVDS,AXWelcomeyou !*$LEA DI,NUMBSTR4DB 0AH,0DH, *This isLEA SI,MARKprograme of siz
5、eyunsuan*$DISP STR1STR5DB 0AH,0DH, *DISP STR2Rang(-32768 to 32767)*$DISP STR3STR6DB 0AH,0DH, *JikeB082DISP STR4Hanyou 200807014225*$DISP STR5STR7DB 0AH,0DH, *DISP STR6*$DISP STR7STR8DBDISP STR80AH,0DH,*CALL CR*$MOVAX,0MESGDB 0AH,0DH, Do you want toMOVBX,0continue? (y/n) $MOVCX,0SIGN1DW0; 判断数字是否MOVDX
6、,0输入完毕START1:SIGN2DW0; 判断括号是否CALL CR配对INPUT:NUMBDW20DUP(0); 保存输入的数MOVAH,1值INT 21HMARKDB M; 保存输入的运CMPAL, =算符JE PD; 是等号,进DB 10DUP(0)一步判断输入括号是否配对ERRORDB YOUR INPUT IS WRONG$CMPAL,28HDATAS ENDSJB INPUTDISP MACRO STRCMPAL,39HLEA DX,STRJA INPUTMOVAH,9CMPAL,2FH; 判断是数INT 21H字还是符号ENDMJBE JUD; 是符号转CHOICE MACR
7、O ASC,HAO,H;宏定义,给运入响应操作算符赋权值INC WORDPTR SIGN1; 将数字标志CMPAL,ASC位加 1JNE OTH &HAOSUBAL,30H; 将 ASCII 码MOVCH,H转 16进制JMP OTH7MOVAH,0- 4 -XCHGAX,DIDECSIMULBXMOVCL,SIMOVBX,10CALL MATCH; 判断是什XCHGAX,DI么运算符并进行相应的计算ADDDI,AXJMP AGAINJMP INPUTPD: CMPWORD PTR SIGN2,0 ; 判断配对标SAVE:志位CMPCH,0; 判断是否JE JUD是等号JMP BCJE OUT
8、PUTJUD:CMPWORDPTR SIGN1,0; 判断数值指CMPCH,1针是否已经下移一位JE INPUT; “) ”不保JE FUH存,输入下一个数ADDDI,2INC SIMOVWORDPTR SIGN1,0; 将数字标志MOVSI,AL; 保存符号位复 0INC SIFUH:CALL ADVANCE; 设定优先CMPCH,5; 判断是否级是左括号CMPCH,5; 判断输入JNE GO_ON的符号是否是左括号MOVCH,2;改变(的权JNE PY; 不是则判值断输入的是否是右括号GO_ON:INC WORD PTR SIGN2; 是左括号,MOVSI,CH; 紧跟着保括号标志位加 1
9、存符号的权值PY:JMP INPUTCMPCH,1; 判断输入的是否是右括号BC: LEA DX,ERRORJNE AGAINMOVAH,9DECWORD PTR SIGN2; 是右括号,INT 21H括号标志位减 1JMP J_SHUAGAIN:MATCHPROCNEAR; 子程序,进CMPBYTEPTRSI,M; 判断运算符行相应的运算存储区是否为空如 23*56 ( 8*19 )PUSHAX/6 67 8 1322XORAX,AXJE SAVEXORBX,BXCMPCH,SI;SI 的内CMPCL,2AH; 乘法运算容为前一个符号或其权值JNE NEXT1JA SAVESUBDI,2CM
10、PBYTE PTRSI,(XCHGBX,DIJNE YIDOSUBDI,2DECSIXCHGAX,DIJMP INPUTIMUL BXYIDO:MOVDI,AX- 5 -ADDDI,2CLEAR PROC NEAR; 清屏JMP FINISHPUSHAXNEXT1:CMPCL,2FH; 除法运算PUSHBXJNE NEXT2PUSHCXSUBDI,2PUSHDXXCHGBX,DIMOVAX,0600HSUBDI,2MOVBH,0FHXCHGAX,DIMOVCX,0CWDMOVDX,184FHIDIV BXINT 10HMOVDI,AXPOPAXADDDI,2POPBXJMP FINISHPOP
11、CXNEXT2:CMPCL,2BH; 加法运算POPDXJNE NEXT3RETSUBDI,2CLEAR ENDPXCHGBX,DISUBDI,2CR PROC NEAR; 回车换行ADDDI,BXPUSHAXADDDI,2PUSHDXJMP FINISHMOVAH,2NEXT3:CMPCL,2DH; 减法运算MOVDL,0DHJNE FINISHINT 21HSUBDI,2MOVAH,2XCHGBX,DIMOVDL,0AHSUBDI,2INT 21HSUBDI,BXPOPDXADDDI,2POPAXFINISH:RETPOPAXCR ENDPRETMATCH ENDPOUTPUT:; 输出运
12、算结果ADVANCE PROCSUBDI,2CHOICE 28H,1,5;(CMPWORD PTRDI,0OTH1:CHOICE 29H,2,1;)JGE W1OTH2:CHOICE 2AH,3,4;*NEGWORD PTRDIOTH3:CHOICE 2FH,4,4;/MOVDL, -OTH4:CHOICE 2BH,5,3;+MOVAH,2OTH5:CHOICE 2DH,6,3;-INT 21HOTH6:CHOICE 3DH,7,0;=W1: MOVBX,10000OTH7:RETMOVCX,5ADVANCE ENDPMOVSI,0W2: MOVAX,DI- 6 -CWDLOOP W2DIV
13、BXMOVDI,DXCALL CRCMPAL,0DISP MESGJNE W3MOVAH,1CMPSI,0INT 21HJNE W3CMPAL, nCMPCX,1JE J_SHUJE W3CMPAL, NJMP W4JE J_SHUW3: MOVDL,ALMOVWORD PTRDI+2,0ADDDL,30HCALL CRMOVAH,2LEA DI,NUMBINT 21HLEA SI,MARKMOVSI,1JMP START1W4: MOVAX,BXJ_SHU:MOVDX,0MOVAH,4CHMOVBX,10INT 21HDIV BXCODESENDSMOVBX,AXEND START六、结果显
14、示- 7 -七、感想、收获及体会学习汇编语言:大一学习的是 C 语言,因此,在学汇编语言之初,面对格式之类的感觉很不适应。 C 语言用的是一个又一个变量,而汇编语言则是利用一个又一个寄存器来实现。 而写代码的时候, 经常会因为一些符号, 或者字长的失误,完全是无心之失而导致程序无法执行。 而回过来找错误的时候, 又往往忽略了这些细节而找不到错误的根源。 学习汇编是个艰辛的过程, 从 C语言到汇编的不适,到牢记大量的指令,并熟练应用,都要花费很多时间适应。对有些指令的源操作数和目的操作数, 以及操作结果的存放位置都要熟记于心。 否则,你将很难应用这些指令, 学习汇编的一个重要能力就是能够熟练调试所写程序, 当某个程序不能执行时, 而又发现不了错误, 这就要对程序进行逐步调试了。 这样更容易发现错
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 评析我国采购法制度
- 临时采购使用管理制度
- 采购考察制度
- 基本药物采购及相关制度
- 企业申请物品采购制度
- 材料采购政策法规制度
- 苏州个人计算机采购制度
- 业委会采购制度及流程
- 自行采购如何管理制度
- 钢结构工程材料采购制度
- 低碳-零碳产业园运行管理规范DB15-T 3993-2025
- DB35∕T 84-2020 造林技术规程
- 《基于FCFF模型的三一重工企业价值评估的案例分析报告》16000字【论文】
- 第5课 隋唐时期的民族交往与交融 教案2024-2025学年七年级历史下册新课标
- 2025年春新湘教版数学七年级下册课件 1.1.4 单项式的乘法 1.1.5 多项式的乘法
- 2025年驾照C1证考试科目一必考题库750题及答案
- 云南省相对集中行政处罚权事项指导目录(2024年版)
- 考点24 人与环境-五年(2020-2024年)高考生物学真题专项分类汇编
- 概率论与数理统计章节练习题及答案
- 外伤性白内障护理查房
- 医疗设备的保养与维护
评论
0/150
提交评论