汇编语言四则运算

更新时间:2023-07-15 19:50:50 阅读: 评论:0

《微机原理与接口技术》课程设计
                  电气与自动化工程系
                  通信工程
                 
                 
                 
                 
                  2010-12-28
一、课程设计目的
每个同学在1-2周时间内,用汇编语言独立完成一个程序题,以达到熟练运用汇编语言编程实现有比较完整功能的程序的目的。
二、课程设计要求
从键盘上输入数字参与运算,并在屏幕上显示结果,至少实现加法减法运算。
三、课题分析
该程序设计的关键是要根据四则运算中( )、*、/、+、-、= 的优先级设置符号的权值,
其中(、*、/、+、-、)、= 的权值分别设置为5、4、4、3、3、1、0 ,然后根据权值的大小进行运算。程序使用数字标志SIGN1、括号标志SIGN2分别来判断数字是否输入完毕和括号是否配对,另外程序定义两个数据存储区域 NUMB和MARK,其中NUMB用来保存输入的或运算的数值,MARK用来保存输入的符号及其对应的权值。程序不断判断输入的符号是否是左括号‘( ’,当遇到左括号是在存储区MARK保存其符号,紧跟着将‘( ’的权值改为2并保存之,这是为了使程序运算括号内的表达式,当遇到右括号‘)’时括号内运算将结束。需要注意的是程序执行完括号内表达式的运算及乘除运算后将在存储区MARK中覆盖符号(、)、*、/ 及紧跟着的权值,使得程序在运算整个四则运算表达式时当括号内表达式的运算及乘除运算结束后存储区MARK中只有‘ +、-’ 运算符及紧跟着的权值,然后按照+、- 运算符的左右顺序从左到右进行‘ +、- ’运算,当最后遇到等号‘ = ’时输出表达式的数值,然后再根据提示判断是否继续执行下一个四则运算表达式。
四、流程图
              =
  N
                      是符号            是数字
          Y           
            Y                  N
                                                N
              Y
                    N                          Y                                                   
    Y
                      N
                      Y                      N
   
            Y
                      N                      N          Y
        Y
                      N
        Y 
                          N
                                                      N
                                Y近义词成语
五、程序源代码

DATAS SEGMENT
    STR1 DB 0AH,0DH,'@******************************************@$'
    STR2 DB 0AH,0DH,'@*                                        *@$'
    STR3 DB 0AH,0DH,'@*            Welcome    you !          *@$'
    STR4 DB 0AH,0DH,'@*    This is programe of sizeyunsuan    *@$'
    STR5 DB 0AH,0DH,'@*          Rang(-32768 to 32767)        *@$'
    STR6 DB 0AH,0DH,'@*    JikeB082 Hanyou  200807014225      *@$'
    STR7 wcDB 0AH,0DH,'@*                                        *@$'
    STR8 不放弃不抛弃DB 0AH,0DH,'@******************************************@$'
    MESG DB 0AH,0DH,'Do you want to continue? (y/n) $'
    SIGN1 DW 0        ;判断数字是否输入完毕
    SIGN2 DW 0        ;判断括号是否配对
    NUMB DW 20 DUP(0)  ;保存输入的数值
    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 ;宏定义,给运算符赋权值
    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 
    DISP STR1
    DISP STR2
新年新气象    DISP STR3
    DISP STR4
九月的风    DISP STR5
    DISP STR6 
    DISP STR7
    DISP STR8
    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  ;判断数值指针是否已经下移一位
温泉疗养院    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 PTR[SI],'M'  ;判断运算符存储区是否为空      如23*56-(8*19)/6+67-8=1322
    JE SAVE
    CMP CH,[SI]          ;[SI]的内容为前一个符号或其权值
    JA SAVE 
    CMP BYTE PTR[SI],'('    酸萝卜老鸭汤
    JNE YIDO
    DEC SI
    JMP INPUT
YIDO:
    DEC SI 
    MOV CL,[SI] 
    CALL MATCH            ;判断是什么运算符并进行相应的计算
    JMP AGAIN 

本文发布于:2023-07-15 19:50:50,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1082751.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:运算   括号   输入   判断
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图