2022年微机与汇编语言课程方案 .pdf
个人资料整理仅限学习使用微机原理与接口技术课程设计 10 计算机应用技术 100171031305 方针专业:学号:姓名:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 9 页个人资料整理仅限学习使用微机原理与汇编语言课程设计一、课程设计题目四则运算:从键盘输入一个十进制两位数的四则运算表达式,编程计算表达式的值,输出十进制结果 有可能是三位或四位十进制), */ 位置任意。二、课题分析该程序设计的关键是要根据四则运算中 )、 *、/ 、+、-、= 的优先级设置符号的权值,其中 、*、/ 、+、- 、)、 = 的权值分别设置为5、4、4、3、3、1、0 ,然后根据权值的大小进行运算。程序使用数字标志SIGN1 、括号标志 SIGN2 分别来判断数字是否输入完毕和括号是否配对,另外程序定义两个数据存储区域 NUMB和 MARK ,其中 NUMB 用来保存输入的或运算的数值,MARK 用来保存输入的符号及其对应的权值。程序不断判断输入的符号是否是左括号 ,当遇到左括号是在存储区MARK 保存其符号,紧跟着将 的权值改为 2 并保存之,这是为了使程序运算括号内的表达式,当遇到右括号)时括号内运算将结束。需要注意的是程序执行完括号内表达式的运算及乘除运算后将在存储区 MARK 中覆盖符号 。保存输入的数值 MARK DB M 。保存输入的运算符 DB 10 DUP(0 ERROR DB YOUR INPUT IS WRONG$ DATAS ENDS DISP MACRO STR LEA DX,STR MOV AH,9 INT 21H ENDM CHOICE MACRO ASC,HAO,H 。宏定义,给运算符赋权值精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 9 页个人资料整理仅限学习使用 CMP AL,ASC JNE OTH&HAO MOV CH,H JMP OTH7 ENDM CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: CALL CLEAR MOV AX,DATAS MOV DS,AX LEA DI,NUMB LEA SI,MARK CALL CR MOV AX,0 MOV BX,0 MOV CX,0 MOV DX,0 START1: CALL CR INPUT: MOV AH,1 INT 21H CMP AL,= JE PD 。是等号,进一步判断输入括号是否配对 CMP AL,28H JB INPUT CMP AL,39H JA INPUT CMP AL,2FH 。判断是数字还是符号 JBE JUD 。是符号转入响应操作 INC WORD PTR SIGN1 。将数字标志位加1 SUB AL,30H 。将 ASCII 码转 16 进制 MOV AH,0 XCHG AX,DI MUL BX MOV BX,10 XCHG AX,DI ADD DI,AX JMP INPUT PD: CMP WORD PTR SIGN2,0 。判断配对标志位 JE JUD JMP BC JUD:CMP WORD PTR SIGN1,0 。判断数值指针是否已经下移一位精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 9 页个人资料整理仅限学习使用 JE FUH ADD DI,2 MOV WORD PTR SIGN1,0 。将数字标志位复0 FUH:CALL ADVANCE 。设定优先级 CMP CH,5 。判断输入的符号是否是左括号 JNE PY 。不是则判断输入的是否是右括号 INC WORD PTR SIGN2 。是左括号,括号标志位加1 PY: CMP CH,1 。判断输入的是否是右括号 JNE AGAIN DEC WORD PTR SIGN2 。是右括号,括号标志位减1 AGAIN: CMP BYTE PTRSI,M 。判断运算符存储区是否为空如 23*56”不保存,输入下一个数 INC SI MOV SI,AL 。保存符号 INC SI CMP CH,5 。判断是否是左括号 JNE GO_ON MOV CH,2 。改变 ( 的权值GO_ON: MOV SI,CH 。紧跟着保存符号的权值 JMP INPUT BC: LEA DX,ERROR 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 9 页个人资料整理仅限学习使用 MOV AH,9 INT 21H JMP J_SHU MATCH PROC NEAR 。子程序,进行相应的运算 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 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,2 JMP FINISH NEXT3:CMP CL,2DH 。减法运算 JNE FINISH SUB DI,2 XCHG BX,DI SUB DI,2 SUB DI,BX ADD DI,2 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 9 页个人资料整理仅限学习使用FINISH: POP AX RET MATCH ENDP ADVANCE PROC CHOICE 28H,1,5 。( OTH1:CHOICE 29H,2,1 。 OTH2:CHOICE 2AH,3,4 。* OTH3:CHOICE 2FH,4,4 。/ OTH4:CHOICE 2BH,5,3 。+ OTH5:CHOICE 2DH,6,3 。- OTH6:CHOICE 3DH,7,0 。= OTH7:RET ADVANCE ENDP CLEAR PROC NEAR 。清屏 PUSH AX PUSH BX PUSH CX PUSH DX MOV AX,0600H MOV BH,0FH MOV CX,0 MOV DX,184FH INT 10H POP AX POP BX POP CX POP DX RET CLEAR ENDP CR PROC NEAR 。回车换行 PUSH AX PUSH DX MOV AH,2 MOV DL,0DH INT 21H MOV AH,2 MOV DL,0AH INT 21H POP DX POP AX 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 9 页个人资料整理仅限学习使用 RET CR ENDP OUTPUT: 。输出运算结果 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 CWD 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 MOV AH,2 INT 21H MOV SI,1 W4: MOV AX,BX MOV DX,0 MOV BX,10 DIV BX MOV BX,AX LOOP W2 CALL CR MOV AH,1 INT 21H CMP AL,n JE J_SHU CMP AL,N JE J_SHU 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 9 页个人资料整理仅限学习使用 MOV WORD PTRDI+2,0 CALL CR LEA DI,NUMB LEA SI,MARK JMP START1 J_SHU: MOV AH,4CH INT 21H CODES ENDS END START精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 9 页个人资料整理仅限学习使用精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 9 页