Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DOSSEG
- .MODEL SMALL
- .STACK
- .DATA
- .CODE
- CR EQU 13
- LF EQU 10
- main PROC
- CALL read_decimal
- MOV DH,DL
- CALL read_decimal
- DEC DL
- MOV AL,DL
- MOV DL,DH
- return:
- INC DL
- CALL write_char
- CALL write_decimal
- CALL CR_LF
- CMP DL,AL
- JB return
- MOV AH, 4CH
- INT 21H
- main ENDP
- read_decimal PROC
- PUSH AX
- PUSH BX
- MOV BL,10
- XOR AX,AX
- read_decimal_new:
- CALL read_char
- CMP DL,CR
- JE read_decimal_end
- SUB DL,'0'
- MUL BL
- ADD AL,DL
- JMP read_decimal_new
- read_decimal_end:
- MOV DL,AL
- POP BX
- POP AX
- RET
- read_decimal ENDP
- write_decimal PROC
- PUSH AX
- PUSH CX
- PUSH DX
- PUSH SI
- XOR DH,DH
- MOV AX,DX
- MOV SI,10
- XOR CX,CX
- decimal_non_zero:
- XOR DX,DX
- DIV SI
- PUSH DX
- INC CX
- OR AX,AX
- JNE decimal_non_zero
- decimal_loop:
- POP DX
- CALL write_hexa_digit
- LOOP decimal_loop
- POP SI
- POP DX
- POP CX
- POP AX
- RET
- write_decimal ENDP
- write_hexa_digit PROC
- PUSH DX
- ADD DL,'0'
- CALL write_char
- POP DX
- RET
- write_hexa_digit ENDP
- CR_LF PROC
- PUSH DX
- MOV DL,CR
- CALL write_char
- MOV DL, LF
- CALL write_char
- POP DX
- RET
- CR_LF ENDP
- read_char PROC
- PUSH AX
- MOV AH,1
- INT 21H
- MOV DL,AL
- POP AX
- RET
- read_char ENDP
- write_char PROC
- PUSH AX
- MOV AH,2
- INT 21H
- POP AX
- RET
- write_char ENDP
- END main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement