assembly - invoke error when trying to exit program -
i have code
restart: mov edx, offset prompt5 call writestring mov edx, 0 mov edx , offset buffer call readstring cmp edx, 'n' or 'n' je exit cmp edx, 'y' or 'y' je readinput jne restart this code ask user enter either y or y yes. if enter y or y program start beginning, if user enter else beside y or y , n or n. if user enter n or n program exits.
why invoke error on je exit line
thank in advance helping
you can't compare 2 values @ same time. when cmp al, 'y' or 'y' assembler calculate bitwise or of 'y' , 'y', 'y'. instruction becomes equivalent of cmp al, 'y'.
if want compare against both of values, need each comparison separately.
cmp al,'y' je l1 cmp al,'y' je l1 assuming l1 label want jump if user enters y or y. i'm basing on modified code in answer - not original code in question.
then, 'restart' case, don't need use jne - can use unconditional jmp. if you've reached point in code, you've failed match of other conditions, know character not equal y, y, n or n - no more testing required.
update
i should add i'm assuming functions writechar , crlf preserve al register. because if readchar returns read character in al, writechar or crlf end overwriting else, code never going work.
if al not being preserved, save temporarily on stack doing this:
call readchar push eax call writechar call crlf pop eax cmp al,'n' ...etc
Comments
Post a Comment