Logo 
Search:

Assembly Language Articles

Submit Article
Home » Articles » Assembly Language » GeneralRSS Feeds

Program that prompts the user to type a hex number of four hex digits or less, and outputs it in binary on the next line. If the user......

Posted By: Easy Tutor     Category: Assembly Language     Views: 29418

An AL program that prompts the user to type a hex number of four hex digits or less, and outputs it in binary on the next line. If the user enters an illegal character, he or she should be prompted to begin again. Accept only upper case letters. The program may ignore input beyond four characters.

Code for Program that prompts the user to type a hex number of four hex digits or less, and outputs it in binary on the next line. If the user...... in Assembly Language

 .MODEL SMALL
 .STACK 100H

 .DATA
   PROMPT_1  DB  'Enter the hexadecimal number ( max 4-digit ) : $'
   PROMPT_2  DB  0DH,0AH,'The equivalent 16-bit binary number is : $'
   ILLEGAL   DB  0DH,0AH,'Illegal hex number. Try again : $'

   COUNT     DB  ?
 
 .CODE
   MAIN PROC
     MOV AX, @DATA                ; initialize DS
     MOV DS, AX

     LEA DX, PROMPT_1             ; load and display the string PROMPT_1
     MOV AH,9
     INT 21H

     JMP @START                   ; jump to label @START_2 

     @START_1:                    ; jump label
       LEA DX, ILLEGAL            ; load and display the string ILLEGAL
       MOV AH, 9
       INT 21H

     @START:                      ;
       XOR BX, BX                 ; clear BX
       MOV COUNT, 30H             ; initialize loop counter

     @START_2:                    ; jump label
       MOV AH, 1                  ; set input function
       INT 21H                    ; read a character

       CMP AL, 0DH                ; compare Al with CR
       JNE @SKIP                  ; jump to label @SKIP if AL!=CR

       CMP COUNT, 30H             ; compare COUNT with 0
       JBE @START_1               ; jump to label @START_1 if COUNT<=0
       JMP @END                   ; jump to label @END

       @SKIP:                     ; jump label

       CMP AL, "A"                ; compare AL with "A"
       JB @DECIMAL                ; jump to label @DECIMAL if AL<A

       CMP AL, "F"                ; compare AL with "F"
       JA @START_1                ; jump to label @START_1 if AL>F
       ADD AL, 09H                ; add 9 to AL
       JMP @OK                    ; jump to label @OK

       @DECIMAL:                  ; jump label
         CMP AL, 30H              ; compare AL with 0
         JB @START_1              ; jump to label @START_1 if AL<0

         CMP AL, 39H              ; compare AL with 9
         JA @START_1              ; jump to label @START_1 if AL>9

       @OK:                       ; jump label

       INC COUNT                  ; increment the COUNT variable

       AND AL, 0FH                ; convert the ascii into binary code

       MOV CL, 4                  ; set CL=4
       SHL AL, CL                 ; shift AL towards left by 4 positions

       MOV CX, 4                  ; set CX=4

       @LOOP_1:                   ; loop label
         SHL AL, 1                ; shift AL towards left by 1 position
         RCL BX, 1                ; rotate BX towards left by 1 position
                                  ; through carry
       LOOP @LOOP_1               ; jump to label @LOOP_1 if CX!=0

      CMP COUNT, 34H              ; compare COUNT with 4
      JE @END                     ; jump to label @END if COUNT=4
      JMP @START_2                ; jump to label @START_2

     @END:                        ; jump label

     LEA DX, PROMPT_2             ; load and display the string PROMPT_2
     MOV AH, 9                    
     INT 21H

     MOV CX, 16                   ; set CX=16
     MOV AH, 2                    ; set output function

     @LOOP_2:                     ; loop label
       SHL BX, 1                  ; shift BX towards left by 1 position
       JC @ONE                    ; jump to label @ONE if CF=1
       MOV DL, 30H                ; set DL=0
       JMP @DISPLAY               ; jump to label @DISPLAY

       @ONE:                      ; jump label
         MOV DL, 31H              ; set DL=1

       @DISPLAY:                  ; jump label
         INT 21H                  ; display a character
     LOOP @LOOP_2                 ; jump to label @LOOP_2 if CX!=0

     MOV AH, 4CH                  ; return control to DOS
     INT 21H
   MAIN ENDP
 END MAIN
  
Share: 



Easy Tutor
Easy Tutor author of Program that prompts the user to type a hex number of four hex digits or less, and outputs it in binary on the next line. If the user...... is from United States. Easy Tutor says

Hello Friends,

I am Free Lance Tutor, who helped student in completing their homework.

I have 4 Years of hands on experience on helping student in completing their homework. I also guide them in doing their final year projects.

I have share many programs on this website for everyone to use freely, if you need further assistance, than please contact me on easytutor.2ya [at the rate] gmail [dot] com

I have special discount scheme for providing tutor services. I am providing tutor service to students from various contries, currently most of my students are from United States, India, Australia, Pakistan, Germany, UK and Canada.

I am also here to expand my technical network to receive more opportunity in my career, make friends to help them in resolving their technical problem, learn and share my knowledge, If you like to be my friend, Please send me friend request.

Thanks,
Happy Programming :)

 
View All Articles

Related Articles and Code:


 

Other Interesting Articles in Assembly Language:


 
Please enter your Comment

  • Comment should be atleast 30 Characters.
  • Please put code inside [Code] your code [/Code].

 
No Comment Found, Be the First to post comment!