![]() |
| ||
| a86 Palindrome Hey guys.. need some help with this; I'm pulling my hair out.. i've trawled these boards but can't find anything that answers my question. I, like many others before me (so it seems!) am trying to create a program to check for a palindrome.. this is what I have so far. In the compare part.. it's just not working. I know I'm doing something wrong with SI and DI.. I just don't know what. Any explanations would be greatly appreciate! :) Thanks, awuja |
JMP START CR equ 13 ; RETURN is 13D ASCII LF equ 10 ; LINE FEED is 10D ASCII letterUnitCount DB 0 letterTensCount DB 0 vowelCount DB 0 getWord: DB "Please enter a word",CR, LF,"$" letterCountMessage: DB CR, LF, "Number of Characters: ", "$" msg1: DB CR, LF, " this is palindrome!", "$" msg2: DB CR, LF, " this is not a palindrome!", "$" inWord: DB 128 DUP (0) START: LEA DX,getWord ;Output string asking user for word MOV AH,09h ;DOS call to output string INT 21H ;Execute interrupt 21H KEYBUF: LEA DI,inWord ;Load inWord start address into DI NEXTCHAR: MOV AH,01h INT 21H ;Read key pressed and echo to screen CMP letterUnitCount, 10 JE ROLLOVER UNIT: INC letterUnitCount ;CMP AL, 65 ;JE INCRVOWEL ;CMP AL, 97 ;JE INCRVOWEL STORE: MOV [DI],AL ;store in inWord at position [DI] INC DI ;Make DI point to next byte in inWord CMP AL,0Dh ;Was it the carriage return key? JNZ NEXTCHAR ;NO, get some more characters MOV [byte ptr DI],"$" ;YES, add end of string marker MOV SI, DI COMPARE: ADD SI, DI DEC SI MOV AL, [DI] MOV DL, AL MOV AH, 2 INT 21h MOV BL, [SI] MOV DL, BL MOV AH, 2 INT 21h CMP AL,BL JNE NOTPAL INC DI DEC SI LOOP COMPARE ISPAL: MOV DX, msg1 MOV AH, 09h INT 21h NOTPAL: MOV DX, msg2 MOV AH, 09h INT 21h
| All times are GMT -4. The time now is 8:47 am. |
Forum system based on vBulletin Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
©2003 - 2010 DaniWeb® LLC