Advertisement
splash365

2.asm

May 21st, 2021
1,117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .model small
  2. .stack 100h
  3.  
  4. .data
  5. inv db 'Invalid input$'
  6. new_line db 0ah,0dh,"$"
  7. space db 20h,"$"
  8.  
  9. .code      
  10. main proc        
  11.    ; connect code segment and data segment
  12.    mov ax, @data
  13.    mov ds, ax                                        
  14.    
  15.    ; input label                          
  16.    mov ah, 1
  17.    int 21h  
  18.    mov bl, al
  19.    
  20.    ; new line
  21.    mov ah, 9
  22.    lea dx, new_line
  23.    int 21h
  24.    
  25.    ; check if it is a number
  26.    cmp bl, '9'
  27.    jg Invalid
  28.    cmp bl, '0'
  29.    jl Invalid
  30.    
  31.    sub bl, 48
  32.    
  33.    mov ch, 1     ; ch for checking bound of Loop2
  34.    Loop1:
  35.    cmp bl, 0     ; bl for checking bound of loop1
  36.    je End_Label  
  37.    mov cl, 1
  38.    
  39.    Loop2:
  40.    mov ah,2
  41.    mov dl, cl
  42.    add dl, 48    
  43.    int 21h       ; print number
  44.    
  45.    mov ah, 9
  46.    lea dx, space ; print space
  47.    int 21h
  48.    
  49.    inc cl
  50.    cmp cl, ch    ; if cl > ch then break
  51.    jg End_loop2:
  52.    jmp Loop2
  53.    
  54.    End_loop2:
  55.    mov ah, 9
  56.    lea dx, new_line  ; print a new line
  57.    int 21h
  58.    inc ch
  59.    dec bl            ; decrement bl
  60.    jmp Loop1
  61.    
  62.    ; check if it is a valid input
  63.    Invalid:    
  64.    mov ah,9
  65.    lea dx, inv
  66.    int 21h  
  67.    
  68.    End_Label:
  69.    
  70.    main endp
  71. end main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement