DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   Assembly (http://www.daniweb.com/forums/forum125.html)
-   -   A simple problem can anyone help (http://www.daniweb.com/forums/thread34986.html)

Knight3 Nov 7th, 2005 7:24 pm
A simple problem can anyone help
 
I'm writing a program in assebly using x86 intel processor series and a flat model



can anyome suggest anything about this?

;;;;;;;;;;;;;;;;;;;


input string,40 ;the user enter a characher 'q' for instance

atod string ; now the value in eax as decimal

;;i need to compare the number and if is 'q' to quit
;;i've tried this senario

cmp eax,'q'
jz quit ;;;;;;not working


cmp al,'q' ;;;;;;not again
jz quit

cmp eax,113 ;;;;where 113 is the decimal ascii value of 'q'
jz quit


cmp al,113 ;;;;;nothing
jz quit


cmp al,71 ;;;i didnt not make the convertion here atod
;;and nothing again 71 is hex of 'q'

cmp eax,113 ;;;;same;;nothing

can anyone help?


Thanks in advance









;;;;;;;;;;;;;;;;;;;

Tight_Coder_Ex Nov 11th, 2005 4:43 pm
Re: A simple problem can anyone help
 
What is the underlying operating system, or are you using BIOS calls.

In any event, EAX won't work because especially in the case of ASCII only an 8 bit value is returned and you are comparing a 32 bit value and may not know at any given time what the value of bits 31 - 8 are. Comparing cmp al,'q', should work except where caps lock may be on then you would have to compare against 'Q'. The method I usually use is to implement a case insensitive comparison where I'll convert all characters in AL to upper or lower case.

mov al, [Character]
and al, 0x5f
cmp al,'Q'
jz Done

Knight3 Nov 12th, 2005 10:51 pm
Re: A simple problem can anyone help
 
Quote:

Originally Posted by Tight_Coder_Ex
What is the underlying operating system, or are you using BIOS calls.

In any event, EAX won't work because especially in the case of ASCII only an 8 bit value is returned and you are comparing a 32 bit value and may not know at any given time what the value of bits 31 - 8 are. Comparing cmp al,'q', should work except where caps lock may be on then you would have to compare against 'Q'. The method I usually use is to implement a case insensitive comparison where I'll convert all characters in AL to upper or lower case.

mov al, [Character]
and al, 0x5f
cmp al,'Q'
jz Done


Thanks Tight_Coder_Ex

You made it clear to me thanks.Problem solved.

mytime19 Dec 22nd, 2006 4:02 am
Re: A simple problem can anyone help
 
give me complete program i'll solve it..


All times are GMT -4. The time now is 9:12 am.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC