Я дошел до последнего раздела кода программы, которая проверяет, является ли данная строка палиндром. Однако у меня есть одна вещь, в которой мне нужна помощь.Сравнение позиций указателя TASM
У меня есть указатели si и di, указывающие на первый и последний символы линии. Я использую их для сравнения символов, а затем двигаюсь дальше. Тем не менее, мне также нужно сравнить позиции самих указателей, поэтому я знаю, где мне нужно остановиться, поскольку я знаю, что линия является палиндром.
Вот сегмент кода, который выполняет сравнение.
is_pol PROC near
mov si, offset currentline
mov di, offset currentline
add di, currentline_offset
comparesi:
cmp si, 'a'
jl notsmallsi
cmp si, 'z'
jg notsymbolsi
jmp comparedi
notsmallsi:
cmp si, 'A'
jl notlargesi
cmp si, 'Z'
jg notsymbolsi
jmp comparedi
notlargesi:
cmp si, '0'
jl notsymbolsi
cmp si, '9'
jg notsymbolsi
jmp comparedi
notsymbolsi:
inc si
jmp comparesi
comparedi:
cmp di, 'a'
jl notsmalldi
cmp di, 'z'
jg notsymboldi
jmp compare
notsmalldi:
cmp di, 'A'
jl notlargedi
cmp di, 'Z'
jg notsymboldi
jmp compare
notlargedi:
cmp di, '0'
jl notsymboldi
cmp di, '9'
jg notsymboldi
jmp compare
notsymboldi:
dec di
jmp comparedi
compare:
cmp si, di
jne no_palindrome
inc si
dec di
jmp is_palindrome
jmp comparesi
no_palindrome:
lea dx, not_palindrome
mov cx, 30
ret
is_palindrome:
lea dx, palindrome
mov cx, 30
ret
is_pol ENDP
Раздел кода, который отсутствует является один между «разлом ди» и «JMP is_palindrome»
Я ценю помощь.