Answer to Question #349462 in Assembler for Unknown

Question #349462

Display sets of "*" based on the user's integer input (0-9).

Example:

Enter a number: 6

******


1
Expert's answer
2022-06-09T09:58:26-0400
; DosBox
DATA SEGMENT
msgEnter    db "Enter a number (0-9): $"
invalid    DB 10,13,"Invalid input.",0ah,0dh,'$'
NL        db     10,13,'$'
DATA ENDS

CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
    MOV AX,DATA
    MOV DS,AX

    mov dx, offset msgEnter
    mov ah, 9
    int 21h    
    
; wait for any key press:
    mov ah, 0
    int 16h    
    mov     ah, 0eh
    int     10h  
    
; Check input
   cmp al,'0'
   jl _wrong        ; char < '0'
   cmp al,'9'        ; char > '9'
   jg _wrong

; AL = ASCII code of key pressed
    SUB AL, 30H        ; AL NUMBER
    xor cx,cx
    mov cl,al        ; cl NUMBER
    
    cmp cl,0
    jz final
    
     mov dx, offset NL
    mov ah, 9
    int 21h

    
    
 L1:
    mov ah, 0eh
    mov al,'*'
    int 10h
  loop L1
    mov dx, offset NL
    mov ah, 9
    int 21h   
   jmp final
   
_wrong:
   mov dx, OFFSET invalid
       mov ah, 9
    int 21h      
 
final:    
    mov ah, 4ch
    int 21h
CODE ENDS
END START




Need a fast expert's response?

Submit order

and get a quick answer at the best price

for any assignment or question with DETAILED EXPLANATIONS!

Comments

No comments. Be the first!

Leave a comment

LATEST TUTORIALS
APPROVED BY CLIENTS