Advertisement
Guest User

Untitled

a guest
Oct 1st, 2016
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. DOSSEG
  2. .MODEL SMALL
  3. .STACK
  4. .DATA
  5. .CODE
  6.  
  7. CR EQU 13
  8. LF EQU 10
  9.  
  10. main PROC
  11.     CALL read_decimal
  12.     MOV DH,DL
  13.     CALL read_decimal
  14.     DEC DL
  15.     MOV AL,DL
  16.     MOV DL,DH
  17.     return:
  18.         INC DL
  19.         CALL write_char
  20.         CALL write_decimal
  21.         CALL CR_LF
  22.         CMP DL,AL
  23.         JB return
  24.  
  25.  
  26.     MOV AH, 4CH
  27.     INT 21H
  28. main ENDP
  29.  
  30. read_decimal PROC
  31.     PUSH AX
  32.     PUSH BX
  33.  
  34.     MOV BL,10
  35.     XOR AX,AX
  36.   read_decimal_new:
  37.     CALL read_char
  38.     CMP DL,CR
  39.     JE read_decimal_end
  40.     SUB DL,'0'
  41.     MUL BL
  42.     ADD AL,DL
  43.     JMP read_decimal_new
  44.   read_decimal_end:
  45.     MOV DL,AL
  46.     POP BX
  47.     POP AX
  48.     RET
  49. read_decimal ENDP
  50.  
  51. write_decimal PROC
  52.     PUSH AX
  53.     PUSH CX
  54.     PUSH DX
  55.     PUSH SI
  56.  
  57.     XOR DH,DH
  58.     MOV AX,DX
  59.     MOV SI,10
  60.     XOR CX,CX
  61.   decimal_non_zero:
  62.     XOR DX,DX
  63.     DIV SI
  64.     PUSH DX
  65.     INC CX
  66.     OR AX,AX
  67.     JNE decimal_non_zero
  68.  
  69.   decimal_loop:
  70.     POP DX
  71.     CALL write_hexa_digit
  72.     LOOP decimal_loop
  73.  
  74.     POP SI
  75.     POP DX
  76.     POP CX
  77.     POP AX
  78.     RET
  79. write_decimal ENDP
  80.  
  81.  
  82. write_hexa_digit PROC
  83.     PUSH DX
  84.     ADD DL,'0'
  85.     CALL write_char
  86.     POP DX
  87.     RET
  88. write_hexa_digit ENDP
  89.    
  90. CR_LF PROC
  91.     PUSH DX
  92.     MOV DL,CR
  93.     CALL write_char
  94.     MOV DL, LF
  95.     CALL write_char
  96.     POP DX
  97.     RET
  98. CR_LF ENDP
  99.  
  100. read_char PROC
  101.     PUSH AX
  102.     MOV AH,1
  103.     INT 21H
  104.     MOV DL,AL
  105.     POP AX
  106.     RET
  107. read_char ENDP
  108.  
  109. write_char PROC
  110.     PUSH AX
  111.     MOV AH,2
  112.     INT 21H
  113.     POP AX
  114.     RET
  115. write_char ENDP
  116.  
  117. END main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement