⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch.asm

📁 这是一个出租车计价器的汇编语言源代码,喜欢的朋友就下载吧.
💻 ASM
字号:
      GOTOXY  MACRO     X,Y
              PUSH      AX
              PUSH      BX
              PUSH      DX
              MOV       DH,X
              MOV       DL,Y
              MOV       BH,0
              MOV       AH,02H
              INT       10H
              POP       DX
              POP       BX
              POP       AX
              ENDM
        DATA  SEGMENT
        STR1  DB        '************* CHU ZU CHE JI JIA QI *************$'
        STR2  DB        '********* PRICE: 4.00 YUN/K  0.2 YUN/M *********$'
        STR3  DB        '********* TIME : 0.0       (M)         *********$'
        STR4  DB        '********* DIST : 0.0       (KM)        *********$'
        STR5  DB        '********* COST : 0.0       (YUAN)      *********$'
        STR6  DB        '************************************************$'
        STR7  DB        '********************* HELP *********************$'
        STR8  DB        '     1. PRESS S TO START $'
        STR9  DB        '     2. PRESS C TO CHANGE THE PTICE $'
       STR10  DB        '     3. PRESS G FOR ONE HUNDRED METERS$'
       STR11  DB        '     4. PRESS R TO RESTART $'
       STR12  DB        '     5. PRESS Q TO EXIT $'
       STR22  DB        '********* PRICE:      YUN/K       YUN/m *********$'
       STR33  DB        'PRESS THE KEY!                                   $'
         BEG  DW        ?
         ENN  DW        ?
      PRICES  DW        4H          ;元/100米
     PRICES1  DW        2H          ;时间单价
       TIMES  DW        0           ;分
       COSTS  DW        0           ;100的钱
       DISTS  DW        0           ;路程
        DATA  ENDS

        CODE  SEGMENT
              ASSUME    CS:CODE,DS:DATA
        MAIN  PROC
              MOV       AX,DATA
              MOV       DS,AX
              MOV       ES,AX

       _INI:  CALL      INI
     _SCAN1:  GOTOXY    13,0
              MOV       SI,OFFSET STR33
              MOV       DX,SI
              MOV       AH,09H
              INT       21H
              GOTOXY    13,15
     _SCAN2:  MOV       BL,AL
              CALL      SCAN1
              CMP       AL,0DH
              JNZ       _SCAN2
              MOV       AL,BL
              CMP       AL,'S'
              JZ        _TIME
              CMP       AL,'G'
              JZ        _COST
              CMP       AL,'R'
              JZ        _INI
              CMP       AL,'Q'
              JZ        _RET
              JMP       _SCAN1
      _TIME:  CALL      _TIMES
              JMP       _SCAN1
      _COST:  CALL      GETT
              MOV       CH,CL
              MOV       CL,DH
              MOV       ENN,CX
              CALL      NOWCOST
              JMP       _SCAN1
       _RET:  MOV       AH,4CH
              INT       21H
        MAIN  ENDP

      _TIMES  PROC
              CALL      GETT
              MOV       CH,CL
              MOV       CL,DH
              MOV       BEG,CX
              RET
      _TIMES  ENDP

       MYADD  PROC
              PUSH      AX
              MOV       AX,0
              ADD       DL,BL
              ADD       DH,BH
              CMP       DL,10
              JB        MYRET
              ADD       DH,1
              SUB       DL,10
      MYRET:  POP       AX
              RET
       MYADD  ENDP

     NOWCOST  PROC
              MOV       DX,ENN
              MOV       BX,BEG
              GOTOXY    2,17
	;CALL	_TEST
              CALL      TIME_D
              MOV       DX,COSTS    ;取距离钱
              MOV       BX,PRICES   ;取距离单价
              CALL      MYADD       ;结果保存在DX中	入口DX,BX
              MOV       COSTS,DX
              MOV       BX,TIMES    ;取时间
              MOV       AX,0
              MOV       AL,BH       ;小时
              MOV       CL,60
              MUL       CL          ;小时转化为分保存在AX中
              MOV       BH,0
              ADD       AX,BX       ;现在保存的是时间单位为分
              MOV       BX,PRICES1
              MUL       BX          ;时间费用保存在AX中单位角
              MOV       BL,10
              DIV       BL          ;AL=元		AH=角
              MOV       DX,COSTS
              MOV       BH,AL
              MOV       BL,AH
              CALL      MYADD
              GOTOXY    4,17
              CALL      PRINTDX
              MOV       DX,DISTS
              MOV       BX,1
              CALL      MYADD
              MOV       DISTS,DX
              GOTOXY    3,17
              CALL      PRINTDX
              RET
     NOWCOST  ENDP

        GETT  PROC
              MOV       AH,2CH
              INT       21H
              RET
        GETT  ENDP
;计算时间并显示
      TIME_D  PROC
              SUB       DL,BL
              JNS       AA1
              ADD       DL,60       ;现在的秒减以前的秒,若不够减,则秒减1且1/100秒加上100
              DEC       DH
        AA1:  SUB       DH,BH
              JNS       AA2
              ADD       DH,60       ;现在的秒减以前的秒,若不够减,则秒加上60
        AA2:  PUSH      DX          ;时间差保存起来
              MOV       TIMES,DX
              CALL      PRINTDX
              POP       DX
              RET
      TIME_D  ENDP
;调用显示功能
;DX
     PRINTDX  PROC
              PUSH      AX
              PUSH      DX
              MOV       AL,DH       ;并送显示
              CALL      SHOW_T
              CALL      COMMA
              MOV       AL,DL
              CALL      SHOW_T
              POP       DX
              POP       AX
              RET
     PRINTDX  ENDP

;AL为入口参数
      SHOW_T  PROC
              PUSH      AX
              PUSH      BX
              PUSH      DX
              CMP       AL,10
              JAE       BIG10
	;CALL	_TEST
              ADD       AL,30H
              MOV       DL,AL
              MOV       AH,02H
              INT       21H
              JMP       _OUT
      BIG10:  MOV       AH,0
              MOV       BL,10
              DIV       BL
              MOV       BH,AL
              MOV       BL,AH
              ADD       BH,30H
              MOV       DL,BH
              MOV       AH,02H
              INT       21H
              ADD       BL,30H
              MOV       DL,BL
              MOV       AH,02H
              INT       21H
       _OUT:  POP       DX
              POP       BX
              POP       AX
              RET
      SHOW_T  ENDP
;显示冒号
       COMMA  PROC
              PUSH      AX
              PUSH      DX
              MOV       AH,2
              MOV       DL,'.'
              INT       21H
              POP       DX
              POP       AX
              RET
       COMMA  ENDP
	
        PUTS  PROC
              PUSH      AX
              PUSH      DX
              MOV       DL,0AH
              MOV       AH,02H
              INT       21H
              MOV       DL,0DH
              MOV       AH,02H
              INT       21H
              POP       DX
              POP       AX
              RET
        PUTS  ENDP

       _TEST  PROC
              PUSH      AX
              PUSH      DX
              MOV       DL,'&'
              MOV       AH,02H
              INT       21H
              POP       DX
              POP       AX
              RET
       _TEST  ENDP

         INI  PROC
              PUSH      AX
              PUSH      DX
              MOV       AX,0
              MOV       AL,2
              INT       10H
              MOV       SI,OFFSET STR1
              MOV       DX,SI
              MOV       AH,09H
              INT       21H
              CALL      PUTS
              MOV       SI,OFFSET STR2
              MOV       DX,SI
              MOV       AH,09H
              INT       21H
              CALL      PUTS
              MOV       SI,OFFSET STR3
              MOV       DX,SI
              MOV       AH,09H
              INT       21H
              CALL      PUTS
              MOV       SI,OFFSET STR4
              MOV       DX,SI
              MOV       AH,09H
              INT       21H
              CALL      PUTS
              MOV       SI,OFFSET STR5
              MOV       DX,SI
              MOV       AH,09H
              INT       21H
              CALL      PUTS
              MOV       SI,OFFSET STR6
              MOV       DX,SI
              MOV       AH,09H
              INT       21H
              CALL      PUTS
              CALL      PUTS
              MOV       SI,OFFSET STR7
              MOV       DX,SI
              MOV       AH,09H
              INT       21H
              CALL      PUTS
              MOV       SI,OFFSET STR8
              MOV       DX,SI
              MOV       AH,09H
              INT       21H
              CALL      PUTS
              MOV       SI,OFFSET STR9
              MOV       DX,SI
              MOV       AH,09H
              INT       21H
              CALL      PUTS
              MOV       SI,OFFSET STR10
              MOV       DX,SI
              MOV       AH,09H
              INT       21H
              CALL      PUTS
              MOV       SI,OFFSET STR11
              MOV       DX,SI
              MOV       AH,09H
              INT       21H
              CALL      PUTS
              MOV       SI,OFFSET STR12
              MOV       DX,SI
              MOV       AH,09H
              INT       21H
              CALL      PUTS
              MOV       AX,0
              MOV       COSTS,AX
              MOV       DISTS,AX
              POP       DX
              POP       AX
              RET
         INI  ENDP

       SCAN1  PROC
              MOV       AH,1H
              INT       21H
              RET
       SCAN1  ENDP

        CODE  ENDS
              END       MAIN

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -