我试图使用rep cmpsb如下:
DSEG SEGMENT PARA PUBLIC 'DATA'
SOURCE DB 'ASDF'
TARGET DB 'ASDF'
SIZE EQU ($-TARGET)
DSEG ENDS
SSEG SEGMENT PARA STACK 'STACK'
SSEG ENDS
CSEG SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CSEG,DS:DSEG,SS:SSEG,ES:NOTHING
MAIN:
MOV AX,DSEG
MOV DS,AX
MOV SI,OFFSET SOURCE
MOV DI,OFFSET TARGET
CLD
MOV CX,SIZE
REPE CMPSB
MOV AH,4CH
INT 21H
CSEG ENDS
END MAIN
我正在使用emu8086。 尝试代表并重复但没有任何反应。 rep应该重复,直到cx> 0,两个字符串相等或不相同,但它不会发生并且只运行一次(程序终止后,cx为3) 我也尝试重复两个相同的字符串,但没有任何事情发生 当在这两种模式下运行时,零标志永远不会改变,我认为它应该被改为重复正常工作 所以只有repne工作,直到cx = 0并且没有给出正确的结果 那我该怎么办?
---------解决--------------- 在初始化ES之后起作用:
DSEG SEGMENT PARA PUBLIC 'DATA'
SOURCE DB 'ASDF'
TARGET DB 'ASDF'
SIZE EQU ($-TARGET)
DSEG ENDS
SSEG SEGMENT PARA STACK 'STACK'
SSEG ENDS
ESEG SEGMENT PARA PUBLIC 'EXTRA'
ESEG ENDS
CSEG SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CSEG,DS:DSEG,SS:SSEG,ES:ESEG
MAIN:
MOV AX,DSEG
MOV DS,AX
MOV ES, AX
MOV SI,OFFSET SOURCE
MOV DI,OFFSET TARGET
CLD
MOV CX,SIZE
REPE CMPSB
MOV AH,4CH
INT 21H
CSEG ENDS
END MAIN