繁体   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