📄 p278_2.asm
字号:
WAGES MACRO RATE,HOUR
LOCAL EXITM
MOV AX,RATE
MUL HOUR ;RATE*HOUR->(DX,AX)
CMP HOUR,10D
JB EXITM
PUSH AX
MOV AX,HOUR
MOV CX,10D
DIV CX ;(DX,AX)/(CX)->(AX),(DX)
MOV CX,3
MUL CX ;(AX)*(CX)->(DX,AX)
POP CX
ADD AX,CX
EXITM:
MOV BX,AX
ENDM
;-------------------
DATA SEGMENT
MESS1 DB 'Input Rate:$'
MESS2 DB 'Input Hour:$'
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE
START:
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AH,9
LEA DX,MESS1
INT 21H
CALL DECIBIN
PUSH BX
CALL CRLF
MOV AH,9
LEA DX,MESS2
INT 21H
CALL DECIBIN
CALL CRLF
POP CX
;----------------
WAGES CX,BX
;----------------
CALL BINIDEC
CALL CRLF
RET
MAIN ENDP
;--------------------
DECIBIN PROC NEAR
MOV BX,0
NEWCHAR:
MOV AH,1
INT 21H
SUB AL,30H
CMP AL,0
JB EXIT1
CMP AL,9
JNBE EXIT1
CBW
XCHG AX,BX
MOV CX,10D
MUL CX
XCHG AX,BX
ADD BX,AX
JMP NEWCHAR
EXIT1:
RET
DECIBIN ENDP
;----------------
BINIDEC PROC NEAR
PUSH BX
PUSH CX
PUSH SI
PUSH DI
MOV DI,0
MOV CX,10000D
CALL DEC_DIV
MOV CX,1000D
CALL DEC_DIV
MOV CX,100D
CALL DEC_DIV
MOV CX,10D
CALL DEC_DIV
MOV CX,1
CALL DEC_DIV
POP DI
POP SI
POP CX
POP BX
RET
BINIDEC ENDP
;---------------------
DEC_DIV PROC NEAR
MOV AX,BX
MOV DX,0
DIV CX
MOV BX,DX
MOV DL,AL
ADD DL,30H
MOV AH,2
INT 21H
RET
DEC_DIV ENDP
;---------------------
CRLF PROC NEAR
MOV DL, 0DH
MOV AH, 2
INT 21H
MOV DL, 0AH
INT 21H
RET
CRLF ENDP
;---------------------
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -