汇编语言8086试编写程序,要求比较两个字符串的所含字符是否相同,如果相同,则把DX的值赋值为1,否则赋值为2;(要求用循环结构实现,不能用串处理指令)
时间: 2023-06-19 07:08:13 浏览: 98
以下是汇编语言8086实现比较两个字符串所含字符是否相同的程序:
```
.MODEL SMALL
.STACK 100H
.DATA
STR1 DB 'string1$'
STR2 DB 'string2$'
RESULT DB ?
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
MOV CX, 6 ; 循环次数为字符串长度
MOV BX, 0 ; BX为计数器
COMPARE:
MOV SI, BX ; 将计数器BX的值赋给SI
MOV AL, STR1[SI] ; 取出STR1的第BX个字符
MOV DL, STR2[SI] ; 取出STR2的第BX个字符
CMP AL, DL ; 比较两个字符
JNE NOT_EQUAL ; 如果不相等,跳转到NOT_EQUAL标签
INC BX ; 计数器加1
LOOP COMPARE ; 继续循环比较下一个字符
EQUAL:
MOV DX, 1 ; 如果循环结束,说明两个字符串相同,将DX赋为1
JMP EXIT ; 跳转到EXIT标签
NOT_EQUAL:
MOV DX, 2 ; 如果两个字符不相等,将DX赋为2
JMP EXIT ; 跳转到EXIT标签
EXIT:
MOV RESULT, DX ; 将DX的值赋给RESULT变量
MOV AH, 4CH ; 返回操作系统
INT 21H
MAIN ENDP
END MAIN
```
程序的思路是,首先将两个字符串的第一个字符进行比较,如果相同,则继续比较下一个字符,如果不相同,则直接跳转到NOT_EQUAL标签并将DX赋值为2。如果循环结束,说明两个字符串相同,将DX赋值为1。最后将DX的值赋给RESULT变量,程序结束。
阅读全文