汇编语言比较两个字符串是否相等
时间: 2023-07-03 19:13:30 浏览: 279
汇编语言比较两个字符串是否相等的一般思路是通过逐个比较字符串中的字符,如果所有字符都相等,则两个字符串相等。下面是一个简单的汇编程序,可以比较两个字符串是否相等:
```
assume cs:code
code segment
; 初始化两个字符串
mov ax, @data
mov ds, ax
lea si, str1
lea di, str2
; 比较两个字符串
cmp_loop:
mov al, [si]
mov bl, [di]
cmp al, bl
jne not_equal
inc si
inc di
cmp byte ptr [si], 0
jne cmp_loop
cmp byte ptr [di], 0
jne not_equal
mov ax, 1 ; 两个字符串相等
jmp done
not_equal:
mov ax, 0 ; 两个字符串不相等
done:
; 程序结束
mov ah, 4ch
int 21h
code ends
end
```
在这个程序中,我们首先通过 `lea` 指令加载两个字符串的地址到 `si` 和 `di` 寄存器中,然后逐个比较字符串中的字符,直到发现一个不相等的字符或者其中一个字符串结束。如果两个字符串都结束了,那么它们是相等的;否则,它们是不相等的。最后,我们将比较结果存储在 `ax` 寄存器中,然后退出程序。
需要注意的是,这个程序只适用于 ASCI 码字符集。如果字符串中包含其它字符集的字符,就需要使用不同的比较方法。
阅读全文