블라인드 시도는 EMU8086에 대한 코드를 수정합니다 : 또한
ANA PROC FAR
MOV AX, @DATA
MOV DS, AX ; ds for default memory access
MOV ES, AX ; es for SCASB
...
... then modifying the char can be done without "ES:" prefix, using default "DS:"
JNE CIK
MOV [DI-1], BH
...
:
.MODEL SMALL
.STACK 64
.DATA
DIZI DB 'LDA#305A'
.CODE
ANA PROC FAR
MOV AX, @DATA
MOV ES, AX ; es for SCASB
CLD
MOV AL, '#'
MOV BH, '$'
MOV CX, 9
LEA DI, [DIZI]
REPNE SCASB ; should now work over correct ES:DI memory.
JNE CIK
MOV [ES:DI-1], BH ; try ES:[DI-1] in case of syntax err.
; ^^ needs now "ES:" prefix, because I don't set "DS"
CIK: MOV AH, 4CH
INT 21H
ANA ENDP
END ANA
또 다른 옵션은 모두이 같은 ds
및 es
을 설정하는 것입니다 읽는 것이 중요합니다. 사용하는 지침에 대한 자세한 설명. 예를 들어, SCASB는 매우 특별하며 ES:DI
메모리 포인터로 고정되어 있으며 어떤 세그먼트 접두어로도 덮어 쓸 수 없습니다 (80 % 다른 명령어와 달리 기본 DS/SS에서 다른 것으로 접두사가 붙을 수 있음). SI는 무시 될 수 따라서, : (SCASB이 속한 곳) 소스 포인터가 DS 때문에
은 "문자열"intruction 제품군은 특히 까다 롭습니다 보통
MOVSB ; moves single byte from [DS:SI] to [ES:DI], ++SI, ++DI
SS:MOVSB ; moves single byte [SS:SI] to [ES:DI], ++SI, ++DI
귀하의 가정에 대한 어떠한 지시를 확인하는 가장 쉬운 방법 구글 "x86 <name_of_instruction>
"을 입력하고 시간이 지남에 따라 원래의 인텔 문서를 HTML로 변환 한 것으로 인식 할 도메인 이름을 찾으십시오. 예를 들면 다음과 같습니다. http://x86.renejeschke.de/
"작동하지 않음"을 확장하십시오. –
"DS :"를 제거하고 DI 만 남겨 두십시오. –
@Jose Manuel Abarca Rodríguez 여전히 문자열에 # 기호가 그대로 표시됩니다. – NoWeDoR