Files
Operating-System/Experiment/asm-exp/实验七/实验七-2_字符串比较.asm
2026-06-25 00:09:09 +08:00

61 lines
1.3 KiB
NASM
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
; 实验七-2: 字符串比较程序 - 使用REP CMPSB
; 功能: 比较两个字符串是否相等
DATAS SEGMENT
STRING1 DB 'Hello, World!', 0 ; 第一个字符串
STRING2 DB 'Hello, World!', 0 ; 第二个字符串(相同)
STRING3 DB 'Hello, Assembly!', 0 ; 第三个字符串(不同)
RESULT DB 'EQUAL', 0 ; 比较结果
RESULT2 DB 'NOT EQUAL', 0
DATAS ENDS
STACKS SEGMENT
DB 64 DUP(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES, DS:DATAS, SS:STACKS
START:
MOV AX, DATAS
MOV DS, AX
MOV ES, AX
LEA SI, STRING1 ; SI指向第一个字符串
LEA DI, STRING2 ; DI指向第二个字符串
; 计算字符串长度
MOV CX, 0
LEN1_LOOP:
CMP BYTE PTR [SI + CX], 0
JE LEN1_DONE
INC CX
JMP LEN1_LOOP
LEN1_DONE:
; 使用REP CMPSB比较字符串
; CMPSB会逐字节比较[SI]和[DI],相等则继续,不等则停止
REP CMPSB
; 检查比较结果
; 如果CX=0且ZF=1则字符串相等
JNZ NOT_EQUAL ; ZF=0说明不相等
; 相等的情况
LEA DX, RESULT
JMP DISPLAY_RESULT
NOT_EQUAL:
LEA DX, RESULT2
DISPLAY_RESULT:
; 显示结果
MOV AH, 09H
INT 21H
; 程序结束
MOV AH, 4CH
INT 21H
CODES ENDS
END START