1、编写程序,实现将内存偏移地址为 1000H 开始的连续 100 个字节送往偏移地址为 1050H 开始 的连续 100 个内存单元中。要求使用二种不同的方法(用单一的串操作指令、用带重复前缀的串操作指令)。
方法一:使用MOVSB指令
DATA SEGMENT
ORG 1000H
X DB 100 DUP('1')
ORG 1050H
Y DB 100 DUP('0')
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA SI,X
LEA DI,Y
MOV CX,100
CLD
AGAIN: MOVSB
DEC CX
JNZ AGAIN
MOV AH,4CH
INT 21H
CODE ENDS
END START
方法二: 使用REP重复前缀指令
DATA SEGMENT
ORG 1000H
X DB 100 DUP(1)
ORG 1050H
Y DB 100 DUP(2)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA SI,X
LEA DI,Y
MOV CX,100
CLD
REP MOVSB
MOV AH,4CH
INT 21H
CODE ENDS
END START
2、编程实现:对 str1 和 str2 两个字符串进行比较,若两串相同,给 DL 送 1,否则送-1。
DATA SEGMENT
STR1 DB '123456'
STR2 DB '1234567'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA SI,STR1
LEA DI,STR2
CLD
REPZ CMPSB
JNZ UMAT
MOV DL,1
JMP NEXT
UMAT: MOV DL,-1
NEXT: MOV AH,4CH
INT 21H
CODE ENDS
END START