[英]How to compare two strings assembly
誰能告訴我如何用匯編語言比較兩個字符串,我寫了以下內容,但似乎不起作用。
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
幾年前,我在學校編寫 asm 時遇到了同樣的問題。 我遇到的問題是我想將“退出”一詞與用戶條目進行比較。 如果他們輸入“exit”,應用程序就會退出。 如果他們輸入任何其他內容,則會出現一條消息,告訴他們輸入錯誤。
我解決這個問題的方法是逐個字符地比較字符串,直到字符不再匹配,反之亦然。
這也可能有一些用處。 以下是一些與匯編語言中的字符串比較相關的代碼示例: http : //www.daniweb.com/software-development/assembly/threads/58667/assembly-language-comparing-strings
您可能還想查看有關匯編語言中的正則表達式 (regex) 的這篇文章: Regular Expressions and Assembly
j is jump l is less e is equel if bl=a & bh=k 這里 cmp 和 ak 一樣工作
如果此處為 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.