概述
;试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否完全相同,
;若相同则显示'MATCH',若不相同则显示'NO MATCH'.
DATA SEGMENT
string1 DB "I a$"
string2 DB "I am a student!$"
YES DB "MATCH", 0DH, 0AH, '$'
NO DB "NO MATCH", 0DH, 0AH, '$'
DATA ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE, DS:DATA, ES:DATA
STRAT:
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,data
MOV DS,AX
MOV ES,AX
;初始化
MOV AX,0
MOV CX,0
LEA SI,string1
LEA DI,string2
length1: ;string1的长度
SUB [SI],'$'
JZ length2
INC SI
INC AX
JNZ length1
length2: ;string2的长度
SUB [DI],'$'
JZ compare
INC DI
INC CX
JNZ length2
compare: ;设置CX为最大长度
CMP CX,AX
JGE lop
MOV CX,AX
lop:
LEA SI, string1 ;设置串比较指令的初值
LEA DI, string2
CLD
REPE
CMPSB ;串比较
JNE dispNo
LEA DX, YES ;显示MATCH
JMP display
dispNo: LEA DX, NO ;显示NO MATCH
display: MOV AH, 9 ;显示一个字符串的DOS调用
INT 21H
RET
MAIN ENDP
CODE ENDS
END STRAT
//
指令的基本功能:CLD DF=0
STD DF=1
/
Direction Flag (DF)
- 方向标志,在串处理指令中控制处理信息的方向用。
当DF为1时,每次操作后使变址寄存器SI和DI减量,这样就使串
处理从高地址向低地址方向处理。当DF为0时,则使SI和DI增量
,使串处理从低地址向高地址方向处理。
///
有效地址传送器 LEA
相等/为零时重复执行串指令 REPE/REPZ
指令的汇编格式:REPE / REPZ (CX)=比较/扫描的次数
指令的基本功能:① (CX)!=0或ZF=0时,结束执行串指令,否则继续② ~ ④
② (CX)←(CX)-1
③ 执行串指令(CMPS或SCAS)
④ 重复执行①
不等/不为零时重复执行串指令 REPNE / PEPNZ
指令的汇编格式:REPNE / PEPNZ (CX)=比较/扫描的次数
指令的基本功能:① (CX)!=0或ZF=1,结束执行串指令,否则继续② ~ ④
② (CX)←(CX)-1
③ 执行串指令(CMPS或SCAS)
④ 重复执行①
最后
以上就是真实樱桃为你收集整理的汇编一日一学(8)--比较两个字符串的全部内容,希望文章能够帮你解决汇编一日一学(8)--比较两个字符串所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复