masm回文检查输出困境

masm回文检查输出困境,masm,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 "r

我试图用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

无论输入字符串是什么,它都不会给出回文。

cx使用mov bx代替mov ax,cx使用ah作为中断,这可能会导致一些问题。每个地方都有mov-cx,ax,使用mov-cx,bx…现在它将是正确的。
我回答了自己的问题,这似乎很有趣,但我现在明白了这一点,并没有删除,因为这可能会帮助其他人不这样做…

cx使用mov-ax,而不是mov-ax,cx使用mov-bx,cx因为ah用于中断,这可能会导致一些问题。每个地方都有mov-cx,ax,使用mov-cx,bx…现在它将是正确的。 我回答了自己的问题,这似乎很有趣,但我现在明白了,并没有删除,因为这可能会帮助其他人不这样做