串操作的几个例子:
例1:
; 子程序名: STRLEN
; 功能: 测量字符串的长度。
; 入口参数: 字符串放在段值和偏移为DS: DI 所在的存储单元中
; 出口参数: AX = 字符串的长度
; 说明: 字符串以0结尾,长度不包含0
STRLEN PROC
PUSH CX
PUSH DI
CLD
XOR AL, AL
MOV CX, 0FFFFH
REPNZ SCASB
MOV AX, CX
NOT AX
DEC AX
POP DI
POP CX
RET
STRLEN ENDP
例2:
有两个等长字符串,分别存放在在STR1和STR2开始的存储单元中。编一程序检测两字符串是否相同,如果相同,FLAG单元置为0,否则置为-1
DATA SEGMENT
STR1 DB '….'
STR2 DB '……'
COUNT EQU $-STR2
FLAG DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA, ES: DATA
START: MOV AX, DATA
MOV DS, AX
MOV ES, AX
MOV SI, OFFSET STR1
MOV DI, OFFSET STR2
MOV CX, COUNT
REPZ CMPSB
XOR AL, AL
JZ NEXT
MOV AL, 0FFH
NEXT: MOV FLAG, AL
MOV AH, 4CH
INT 21H
CODE ENDS
END START