有人能告诉我如何比较汇编语言中的两个字符串,我写了下面的符号,但它似乎不起作用。
assume cs:code, ds:data
data segment
sirlung db "abcdjjj"
lungimelung equ $-sirlung
sirscurt db "aby"
lungimescurt equ $-sirscurt
exista db "Exista!$"
nuexista db "NU exista!$"
iesire db "Apasa enter pentru iesire!$"
data ends
code segment
start:
mov ax,data
mov ds,ax
mov bx,offset sirlung
mov di,offset sirscurt
dec bx
push bx
push di
mov dx,lungimelung
mov si,lungimescurt
bucla1:
pop di
pop bx
inc bx
mov al,sirlung[bx]
mov cl,sirscurt[di]
cmp al,cl
jne bucla1
push bx
push di
je bucla2
cmp bx,dx
ja sfarsit_nu_exista
bucla2:
inc bx
inc di
mov al,sirlung[bx]
mov cl,sirscurt[di]
cmp al,cl
jne bucla1
cmp di,si
jl sfarsit_exista
jae bucla2
sfarsit_exista:
mov dx,offset exista
mov ah,09h
int 21h
mov ah, 0ah
mov dx,offset iesire
int 21h
mov ax,4c00h
int 21h
sfarsit_nu_exista:
mov dx,offset nuexista
mov ah,09h
int 21h
mov ah, 0ah
mov dx,offset iesire
int 21h
mov ax,4c00h
int 21h
code ends
end start
答案 0 :(得分:2)
我解决问题的方法是逐个字符地比较字符串,直到字符不再匹配,反之亦然。
这也可能有用。以下是与汇编语言中的字符串比较相关的一些代码示例:http://www.daniweb.com/software-development/assembly/threads/58667/assembly-language-comparing-strings
您可能还希望在汇编语言中查看与正则表达式(正则表达式)相关的这篇文章:Regular Expressions and Assembly
答案 1 :(得分:-1)
j是跳跃 我少 e是平等的 如果bl = a&bh = k 这里的cmp就像a-k一样工作
如果此处等于或小于0,则jle工作。 那么n会工作。如果正值jle不起作用。
cmp bl,bh jle n
mov ah,2 mov dl,bh int 21h
n: mov ah,2 mov dl,bl int 21h