Go4Expert

Go4Expert (http://www.go4expert.com/)
-   Assembly Language Programming (ALP) Forum (http://www.go4expert.com/forums/assembly-language-programming-forum/)
-   -   how to restrict input to 6 character string (http://www.go4expert.com/forums/restrict-input-6-character-string-t25213/)

wale89 10Mar2011 18:43

how to restrict input to 6 character string
 
Hi..everybody..
I have this simple assembly language program to read in string of user input then do the checking whether the string is a palindrome or not, and display the result of the checking.
I wanted to slightly change the program to make it read the string of exactly certain number of character long, for example 6. Can anybody help?? Give me some guide...since i am a begginers in Assembly..thank you very much..

This are the code..
Code:


org  100h
 
print_output macro
    mov ah, 9
    int 21h                                                             
   
  ; input the string:
  ; the interupt module does fill the third array with input from keyborad

endm                                                                                           
   
scan_input macro
    mov ah, 0ah
    int 21h
   
    ;get string size                       
    xor bx, bx            ; zero the bx register
    mov bl, input[1]          ; then save the size of s1 to base lower register             
                                         
    ;print string                         
    mov input[bx+2],'$'        ;close the string with dollar sign 
       
  ; input the string:
  ; the interupt module does fill the third array with input from keyborad

endm           


is_input_empty macro
    ;lea bx, input   
    ;mov dl, [bx+1] ; get string size.
    mov dl, input[1]
    cmp dl, 0
    je stop
endm


part2:
    ;print the main message of program2
    mov dx, offset MSG_part2
    print_output
part2_loop:

    ;print the message to promt the user to enter the string
    mov dx, offset MSG_prompt_part2
    print_output
                 
    ;scan for input             
    mov dx, offset input
    scan_input 
   
    ;print newline
    mov dx, offset newline
    print_output
   
    is_input_empty
   
    ;output the inputed string
    mov dx, offset MSG_urstris
    print_output
                                         
    ;print string                         
    mov dx, offset input+2
    print_output
     
    ;print newline
    mov dx, offset newline
    print_output
   
    sub si, si          ;zero the si for increment 
    mov di, bx
    dec di
   
    ;check for 1 character
    mov cx, bx;   
    cmp cx, 1
    je print_yes
                         
                         
    mov bx, offset input+2        ;get the string into bx   
    shr cx, 1                    ;divide cx by 2 by shifting to right 1 bit.

    myloop:
        mov al, [bx+di]
        mov dl, [bx+si]   
        cmp al, dl
        jne print_no
        inc si
        dec di 
    loop myloop 
                                         
   
print_yes:
    mov dx, offset MSG_isPalindrom
    print_output
    jmp part2_loop

print_no:
    mov dx, offset MSG_notPalindrom
    print_output
    jmp part2_loop
   
stop:
    ; wait for any key...
   
    mov dx, offset MSG_any_key
    print_output
   
    mov ax, 0
    int 16h
   
    ret


MSG_prompt_part2        db  "-------------------------------------------------------------------------------",13,10,13,10
                    db  "Enter a String: "
                    db  "$" 

MSG_part2                db  "--Part 2--",13,10
                    db  "* This program to check palindrome string by :",13,10
                    db  "* Rusydi Hasan Makarim (0721051)*",13,10
                    db  "* Cutifa Safitri (072656)      *",13,10
                    db  "* Haroon Shoukat Ali (0629753)  *",13,10
                    db  "*                              *",13,10
                    db  "*Press <Enter> to exit          *",13,10
                    db "$"
MSG_urstris            db  "Your input string is $"
MSG_isPalindrom        db  "PALINDROME !",13,10,'$'
MSG_notPalindrom    db  "NOT A PALINDROME!",13,10,'$'
input                db  100,?, 100 dup(' ')  ;used for scan_input
newline                db  13,10,'$'
MSG_any_key            db "Press any key to terminate$"

end



All times are GMT +5.5. The time now is 23:35.