2017-09-01 96 views
1

我正在嘗試使用masm做迴文檢查程序,並使用下面的代碼,但我總是沒有迴文作爲輸出,無法弄清楚爲什麼。請幫助修改代碼。該代碼在下面給出以供進一步澄清。 在此先感謝。masm迴文檢查輸出困境

read macro 
mov ah,01h 
int 21h 
endm 
write macro 
mov ah,02h 
int 21h 
endm 
assume cs:code,ds:data 
data segment 
a db 20 dup(?) 
b db 20 dup(?) 
msg1 db "enter text: $" 
msg2 db "reverse string is: $" 
msg3 db " palindrome$" 
msg4 db " not palindrome$" 
data ends 

code segment 
start:mov ax,data 
mov ds,ax 
mov es,ax 
mov cx,0000h 
lea si,a 
lea dx,msg1 
mov ah,09h 
int 21h 

r:read 
cmp al,0dh 
je l 
mov [si],al 
inc si 
inc cx 
jmp r 

l:dec si 
lea di,b 
mov ax,cx 

l1:mov dl,[si] 
mov [di],dl 
inc di 
dec si 
loop l1 

l2: 
mov cx,ax 
lea si,b 
lea dx,msg2 
mov ah,9h 
int 21h 

w:mov dl,[si] 
write 
inc si 
loop w 

mov cx,ax 
cld 
lea si,a 
lea di,b 
l4:cmpsb 
jne l5 
loop l4 
lea dx,msg3 
mov ah,09h 
int 21h 
mov ah,4ch 
int 21h 

l5:lea dx,msg4 
mov ah,09h 
int 21h 
mov ah,4ch 
int 21h 
code ends 
end start 

無論是輸入字符串它不給迴文。

回答

0

而不是做mov ax,cx使用mov bx,cx,因爲在中斷中使用了ah,它可能會導致一些問題。而且每一個地方mov cx,ax都在使用mov cx,bx ....現在它會是正確的。 這似乎有趣,我回答了我自己的問題,但我現在想到這個並沒有刪除,因爲它可能會幫助別人不這樣做......