汇编一日一学(8)--比较两个字符串

;试编写一程序,要求比较两个字符串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:

LEASI, string1;设置串比较指令的初值

LEADI, string2

CLD

REPE

CMPSB;串比较

JNEdispNo

LEADX, YES;显示MATCH

JMPdisplay

dispNo:LEADX, NO;显示NO MATCH

display:MOVAH, 9;显示一个字符串的DOS调用

INT21H

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)

   ④ 重复执行①

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值