回 帖 发 新 帖 刷新版面

主题:我写的四则运算

.386
len= 6
          CR  =         0DH
        DSEG  SEGMENT   USE16
       COUNT  DW        ?
       MESS0  DB        '输入要你要运算的5位数:$'
       MESS1  DB        '输入你要进行的运算符:$'
       MESS2  DB        '输入你要运算的5位数:$'
       MESS3  DB        '运算结果为:$'
       MESS4  DB        '运算商为:$'
       MESS5  DB        '运算余数为:$'
       BUFF0  DB        LEN ,LEN+1  DUP(0)
       BUFF1  DB        LEN ,LEN+1  DUP(0)
        DSEG  ENDS

        CSEG  SEGMENT   USE16
              ASSUME    CS:CSEG,DS:DSEG
      START:
              MOV       AX,DSEG
              MOV       DS,AX
             ; MOV       BL,10
              MOV       COUNT,10
              ;CALL      NUM
              MOV       DX,OFFSET MESS0
              CALL      DISPMESS
              MOV       SI,OFFSET  BUFF0
              MOV       DX,SI
              CALL      GETSTR
              CALL      NEWLINE
              MOV       DX,OFFSET MESS1
              CALL      DISPMESS
              CALL      GET
              MOV       BH,AL
              CALL      NEWLINE
              MOV       DX,OFFSET MESS2
              CALL      DISPMESS
              MOV       DI,OFFSET BUFF1
              MOV       DX,DI
              CALL      GETSTR
              CALL      NEWLINE
              MOV       DX,OFFSET MESS3
              CALL      DISPMESS
              CMP       BH,'+'
              JZ        ADD1
              CMP       BH,'-'
              JZ        SUB1
            ;  JMP       OK
              CMP       BH,'*'
              JZ        MUL1
              CMP       BH,'/'
              JZ        DIV1
              JMP       OK
       ADD1:
              CALL      ADDT
              JMP       OK
       SUB1:
              CALL      SUBT
              JMP       OK
       MUL1:
              CALL      MULT
              JMP       OK
       DIV1:
              CALL      DIVT
         OK:  MOV       AH,4CH
              INT       21H

回复列表 (共3个回复)

沙发

ADDT  PROC
              INC       SI
              INC       SI
              INC       DI
              INC       DI
              CALL      CHANG
              MOV       EBP,EAX
              MOV       SI,DI
              CALL      CHANG
              ADD       EAX,EBP
              CALL      DISPAL
              RET
              ENDP      ADDT

        SUBT  PROC
              INC       SI
              INC       SI
              INC       DI
              INC       DI
              CALL      CHANG
              MOV       BP,AX
              MOV       SI,DI
              CALL      CHANG
              SUB       BP,AX
              MOV       AX,BP
              CALL      DISPAL
              RET
              ENDP      SUBT
        MULT  PROC
              INC       SI
              INC       SI
              INC       DI
              INC       DI
              CALL      CHANG
              MOV       EBP,EAX
              MOV       SI,DI
              CALL      CHANG
              MUL       EBP
              CALL      DISPAL
              RET
              ENDP      MULT

板凳

DIVT  PROC
              INC       SI
              INC       SI
              INC       DI
              INC       DI
              CALL      CHANG
              MOV       BP,AX
              MOV       SI,DI
              CALL      CHANG
              XOR       DX,DX
              MOV       CX,AX
              MOV       AX,BP
              DIV       CX
              PUSH      DX
              PUSH      AX
              CALL      NEWLINE
              MOV       DX,OFFSET MESS4
              CALL      DISPMESS
              POP       AX
              CALL      DISPAL
              CALL      NEWLINE
              MOV       DX,OFFSET MESS5
              CALL      DISPMESS
              POP       DX
              MOV       AX,DX
              CALL      DISPAL
              RET
              ENDP      DIVT
       CHANG  PROC
              ;MOV       CX,COUNT
              MOV       CX,4
              XOR       EAX,EAX
              XOR       EDX,EDX
     CHANG1:  MOV       AL,[SI]
              SUB       AX,30H
             ; INC       SI
              INC       SI
     CHANG2:  MUL       COUNT
              MOV       DL,[SI]
              INC       SI
              SUB       DX,30H
              ADD       EAX,EDX
              LOOP      CHANG2
              RET
              ENDP      CHANG
         NUM  PROC
     COUNT0:  MOV       AX,[SI]
              INC       SI
              INC       COUNT
              CMP       AX,CR

              JNZ       COUNT0
       OVER:
              RET
              ENDP      NUM
         GET  PROC
              MOV       AH,1
              INT       21H
              RET
         GET  ENDP
      GETSTR  PROC
              MOV       AH,10
              INT       21H
              RET
      GETSTR  ENDP

      DISPAL  PROC
              PUSH      CX
              PUSH      BX
              MOV       CX,10
              MOV       EBX,10
              XOR       EDX,EDX


3 楼


      DISP1:
              DIV       EBX
              ADD       DL,"0"
              MOV       BP,DX
              MOV       DX,0
              PUSH      BP
              LOOP      DISP1
              MOV       CX,10
      DISP2:
              POP       DX
              CALL      ECHOCH
              LOOP      DISP2
              POP       BX
              POP       CX
              RET
      DISPAL  ENDP
      ECHOCH  PROC
              MOV       AH,2
              INT       21H
              RET
              ENDP      ECHOCH
     NEWLINE  PROC                  ;回车换行子程序
              PUSH      AX
              PUSH      DX
              MOV       DL,0DH
              MOV       AH,2
              INT       21H
              MOV       DL,0AH
              MOV       AH,2
              INT       21H
              POP       DX
              POP       AX
              RET
     NEWLINE  ENDP
    DISPMESS  PROC                  ;显示字符串子程序
              MOV       AH,9
              INT       21H
              RET
    DISPMESS  ENDP

        CSEG  ENDS
              END       START

我来回复

您尚未登录,请登录后再回复。点此登录或注册