汇编语言四则运算源代码+流程图 第4页


汇编语言课程设计
    JZ XUJG1
        CALL DOUT
        MOV AL,')'
        CALL DISP
        RET
XUJG1:
        CALL DOUT
        RET
;计算结果放入DX:AX中
JSJG    LABEL NEAR
        CALL JSJJ
        MOV AX,NUM1
        MOV DX,NUM1+2
        RET
;从DS:SI处取一个数据
LOADATE LABEL NEAR
        LODSB
        CMP AL,'('
        JZ LOADATE1
        DEC SI
        PUSH CX
        XOR CX,CX
        CMP UV,10
        JZ LOADATE0
        INC CX          ;取16进制数
LOADATE0:
        CALL DATE       ;取数据放入DX:AX中
        POP CX
        RET
LOADATE1:
        PUSH NUM1       ;保存数据1数据2及运算符
        PUSH NUM1+2
        PUSH NUM2
        PUSH NUM2+2
        PUSH YSF
        INC JUV
        MOV JGV4,0      ;结果值清零
        MOV JGV4+2,0
;进行四则运算
SZYS    LABEL NEAR
        CALL ISYSF      ;首字符是运算符?
        JZ SZYS2
        CALL LOADATE    ;不是,取数并保存
        MOV NUM1,AX
        MOV NUM1+2,DX
SZYS1:
        XOR AX,AX       ;数据2清零
        MOV NUM2,AX
        MOV NUM2+2,AX
        CALL ISYSF      ;下个是运算符?
        JZ SZYS3
        JNZ SZYS6
SZYS2:
        PUSH AX
        MOV AX,JGV4     ;将结果作为数据1
        MOV NUM1,AX
        MOV AX,JGV4+2
        MOV NUM1+2,AX
        POP AX
SZYS3:
        MOV YSF1,AL
        MOV YSF2,AL
        CALL ISJJ       ;是加减运算转
        JZ SZYS4
        CALL LOADATE    ;取数据2
        MOV NUM2,AX
        MOV NUM2+2,DX
        CALL JSII1      ;数据1与数据2根据YSF1进行乘除运算
        JMP SZYS1       ;    结果保存在数据1中
SZYS4:
        CALL LOADATE    ;取数据2并保存
        MOV NUM2,AX
        MOV NUM2+2,DX
SZYS4_1:
        CALL ISYSF
        JNZ SZYS6
        CALL ISJJ       ;运算符2是加减运算?
        JNZ SZYS5       ;不是转
        PUSH AX
        CALL JSJJ       ;数据1与数据2根据YSF1进行加减运算
        POP AX          ;    结果保存在数据1中
        MOV YSF1,AL     ;保存新的运算符
        JMP SZYS4
SZYS5:
        MOV YSF2,AL     ;保存运算符2
        CALL LOADATE    ;取数据3
        MOV NUM3,AX
        MOV NUM3+2,DX
        CALL JSII2      ;数据2与数据3根据YSF2进行乘除运算
        JMP SZYS4_1     ;    结果保存在数据2中
SZYS6:
        MOV CL,AL
        CMP AL,13
        JNZ SZYS9
SZYS7:
        CALL JSJG
        CMP JUV,0
        JZ SZYS8
        DEC JUV
        POP YSF
        POP NUM2+2
        POP NUM2
        POP NUM1+2
        POP NUM1
        RET
SZYS8:
751com.cn
        JNZ SZYS11
        INC SI
        JMP SZYS7
SZYS10:
        MOV NUM1,AX
        MOV NUM1+2,DX
        JMP SZYS1
SZYS11:
        STC
        RET
SZYS12:

上一页  [1] [2] [3] [4] [5] 下一页

  • 上一篇文章:
  • 下一篇文章:
  • Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有