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