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
