簡體   English   中英

如何比較兩個字符串組件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM