匯編語(yǔ)言實(shí)現(xiàn)字符串比較

基于x86處理器,32/64位機(jī)皆可運(yùn)行,編譯環(huán)境VS2017,使用到的鏈接庫(kù)Irvine.32

代碼段1:僅使用main過(guò)程,且未調(diào)用Irvine.32庫(kù),直接將比較結(jié)果存入EAX寄存器

.386
.model flat, stdcall
.stack 4096
ExitProcess proto,dwExitCode:dword

.data
str1 byte "hello", 0
str2 byte "hello", 0
num1 word ?
num2 word ?

.code
main proc
mov EBX, lengthof str1
mov EDX, lengthof str2
    cmp EBX, EDX
    JNE L1
    mov ecx, lengthof str1 
    sub ecx, 1
    L2: 
        mov BL, str1[ecx]
        mov DL, str2[ecx]
        cmp  EBX, EDX
        JNE L1
        loop L2
        mov eax, 1   ;1相等
        jmp L3
    L1: mov eax, 0   ;0不相等
    L3: 
    invoke ExitProcess,0
main endp
end main

附運(yùn)行截圖:

字符串不等
字符串相等

代碼段2:使用多個(gè)過(guò)程分析邏輯代碼,調(diào)用Irvine.32庫(kù)輸出匹配結(jié)果

.386
.model flat,stdcall
.stack 4096
ExitProcess proto,dwExitCode:dword
include Irvine32.inc

.data
MATCH BYTE "MATCH",0
NOMATCH BYTE "NOMATCH",0
STRING1 BYTE "hello world", 0
STRING2 BYTE "hello world", 0

.code
main proc
    mov eax, LENGTHOF STRING1
    CMP eax, LENGTHOF STRING2
    JNE L1
    CALL COMPARE
    JMP L3
    L1: CALL NO
    L3:
    invoke ExitProcess,0
main endp

COMPARE PROC
    mov ecx, LENGTHOF STRING1
    sub ecx, 1
L2:
    mov al, STRING1[ecx]
    cmp al, STRING2[ecx]
        JNE L4
    LOOP L2
    call YES
    JMP L5
    L4: call NO
    L5:
    RET
COMPARE ENDP

YES PROC
    mov edx, offset MATCH
    CALL WriteString
    CALL Crlf
    CALL WaitMsg
    RET
YES ENDP

NO PROC
    mov edx, offset NOMATCH
    CALL WriteString
    CALL Crlf
    CALL WaitMsg
    RET
NO ENDP

end main

附運(yùn)行截圖:

字符串相等
字符串不等

附:Irvine庫(kù)下載地址
點(diǎn)擊此處下載后可直接安裝

附:Irvine庫(kù)導(dǎo)入VS教程
1.工程目錄右鍵->點(diǎn)擊屬性

打開(kāi)工程屬性

2.在Microsoft Macro Assemble的Include Paths里面填寫(xiě)Irvine庫(kù)文件所在路徑

Microsoft Macro Assemble的Include Paths

3.鏈接器->附加庫(kù)目錄里面也要添加附加庫(kù)的路徑,也就是Irvine庫(kù)文件所在路徑

鏈接器附加庫(kù)目錄

4.鏈接器->輸入->附加依賴(lài)庫(kù)里面添加要加載的庫(kù)文件,這里是Irvine32.lib;勿忘加分號(hào)

鏈接器輸入附加依賴(lài)庫(kù)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容