; 实验七-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