基于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ù)