以下程序代码均为原创,且调试通过。因为实践仓促,程序结构不一定合理,欢迎讨论!
在内存String1 String2处分别存放两个字符串,试编写汇编语言程序对二串进行比较,若相同输出“MATCH”,若不同显示“NO MATCH”。要求在程序中,用串比较指令实现二个字符串的比较
;**************************************************************
EXTRA SEGMENT PARA 'EXTRA'
STRING2 DB 'ABCDEFRHIA','$';定义目标串,默认比较10个字符
EXTRA ENDS
;**************************************************************
DATA SEGMENT PARA 'DATA'
STRING1 DB 'ABCDEFRHIJ','$';定义源串,默认比较10个字符
MESSAGE1 DB 'MATCH!','$'
MESSAGE2 DB 'No MATCH!','$'
MESSAGE3 DB 0ah,'This masm program made by qizhaolin,thanks!','$'
DATA ENDS
;**************************************************************
CODE SEGMENT PARA 'CODE'
ASSUME CS:CODE,DS:DATA,ES:EXTRA
MAIN PROC FAR;主过程
START:
MOV AX,DATA;段初始化
MOV DS,AX
MOV AX,EXTRA
MOV ES,AX
MOV BX,00H
LEA SI,STRING1;源串有效地址传送
LEA DI,STRING2;目标串有效地址传送
MOV CX,0BH;计数器初始化
CLD
REPE CMPSB
CMP CX,BX;比较CX和0,相同则说明两个串相同
JZ A ;两个串相同跳转到A,否则向下执行
MOV AX,DATA;串段地址入DS
MOV DS,AX
LEA DX,MESSAGE2;串偏移地址入DX
MOV AH,09H;DOS调用,输出信息
INT 21H
JMP B;无条件跳转到B
A: MOV AX,DATA
MOV DS,AX
LEA DX,MESSAGE1
MOV AH,09H
INT 21H
B: lea dx,MESSAGE3;输出信息
mov ah,09h
int 21h
MOV AH,01
INT 21H
;**************************************************************
MOV AH,4CH
INT 21H
MAIN ENDP
CODE ENDS
END START