汇编语言写一程序,比较两个字符串String1和String2所含的字符是否相同;若相同则显示’Match’,否则显示’No Match’。
时间: 2023-11-12 10:04:59 浏览: 284
下面是一段使用汇编语言实现比较两个字符串的程序,实现了上述要求:
```
DATA SEGMENT
STR1 DB 'Hello, World$'
STR2 DB 'Hello, World$'
MSG1 DB 'Match$'
MSG2 DB 'No Match$'
DATA ENDS
CODE SEGMENT
START:
MOV AX, @DATA
MOV DS, AX ; 初始化数据段寄存器
MOV SI, OFFSET STR1 ; 将 STR1 的地址存放到 SI 寄存器中
MOV DI, OFFSET STR2 ; 将 STR2 的地址存放到 DI 寄存器中
MOV CX, 0 ; 初始化计数器 CX
COMPARE:
MOV AL, [SI] ; 将 SI 指向的字符存放到 AL 寄存器中
CMP AL, [DI] ; 将 DI 指向的字符与 AL 中的字符进行比较
JNE NOMATCH ; 如果不相等,跳转到 NOMATCH 标签
INC SI ; 指向下一个字符
INC DI ; 指向下一个字符
INC CX ; 计数器 CX 加一
CMP AL, '$' ; 判断是否比较完整个字符串
JNE COMPARE ; 如果没有比较完,继续比较
MATCH:
MOV DX, OFFSET MSG1 ; 将 MSG1 的地址存放到 DX 寄存器中
MOV AH, 09H ; 显示字符串
INT 21H ; 调用 DOS 中断显示字符串
JMP END ; 跳转到 END 标签
NOMATCH:
MOV DX, OFFSET MSG2 ; 将 MSG2 的地址存放到 DX 寄存器中
MOV AH, 09H ; 显示字符串
INT 21H ; 调用 DOS 中断显示字符串
END:
MOV AH, 4CH ; 退出程序
INT 21H ; 调用 DOS 中断退出程序
CODE ENDS
END START
```
程序使用了数据段和代码段,其中数据段定义了两个要比较的字符串 STR1 和 STR2,以及两个消息字符串 MSG1 和 MSG2。代码段中,程序首先将数据段的地址存放到数据段寄存器中,然后将要比较的两个字符串的地址分别存放到 SI 和 DI 寄存器中,计数器 CX 初始化为零。接着程序使用循环来比较两个字符串中的每个字符,如果比较的字符相同,计数器 CX 加一,否则直接跳转到 NOMATCH 标签。如果所有字符都比较完了,程序会跳转到 MATCH 标签,显示消息 MSG1,否则跳转到 NOMATCH 标签,显示消息 MSG2。最后程序退出。
阅读全文