rootUser

take 2 digit input , decresing order print to zero

Jun 8th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .MODEL SMALL
  2. .STACK 100H  
  3. .DATA
  4.  
  5. .CODE
  6. MAIN PROC
  7.  
  8. ;INITIALIZE DS
  9. MOV AX,@DATA     ; not sure this is really needed in model .small
  10. MOV DS,AX
  11.  
  12. MOV AH,1         ;SCAN MSB
  13. INT 21H          ;MSB IS NOW AT AH
  14. MOV BH,AL        ;SAVE IT TO BH
  15.  
  16.                  ;SCAN LSB
  17. MOV AH,1         ;LSB IS NOW AT AL
  18. INT 21H          ;SAVE IT TO BL
  19. MOV BL,AL  
  20.  
  21. MOV AH,2         ;SINGLE CHAR PRINT
  22. MOV DL,0DH       ;CARRIAGE RETURN
  23. INT 21H          ;AL = 0DH
  24. MOV DL,0AH       ;LINE FEED
  25. INT 21H          ;AL = 0AH
  26.  
  27. LOOP1:
  28.     MOV DL,' '     ;SPACE
  29.     INT 21H
  30.     MOV DL,BH      ;MSB
  31.     INT 21H
  32.     MOV DL,BL      ;LSB
  33.     INT 21H
  34.  
  35.     DEC BL         ;DECREMENT LSB
  36.     CMP BL,'0'-1   ;LET 70
  37.                    ;SO UPDATE O TO 9
  38.                    ;AND 7 TO 6
  39.     JNE LOOP1      ;IF FALSE
  40.  
  41. UPDATE_IT:         ; IF LST was zero
  42.  
  43.     MOV BL,'9'     ;TURN LSB O TO 9
  44.                    ;EXAMPLE 80 TO 79
  45.  
  46.     DEC BH
  47.     CMP BH,'0'-1   ;BOTH MSB
  48.                    ;AND LSB ARE ZERO
  49.     JNE LOOP1      
  50.  
  51. ;DOS EXIT                    
  52. EXIT_:            
  53. MOV AH,4CH         ;DOS EXIT FUNCTION
  54. INT 21H            ;EXECUTE
  55.  
  56. MAIN ENDP
  57. END MAIN
Add Comment
Please, Sign In to add comment