2011-11-01 2 views
1

일부 간접 주소 지정 문제를 해결하기 위해 노력하고 있으며 바이트 수를 올바르게 계산하는 방법을 모르겠습니다. 우리는이 코드 주어진다 : 문제는이 지침이 실행 된 후 표준 출력 장치에 기록 된 것입니다 얼마나 많은 바이트 요청어셈블리 언어 간접 주소 지정

.data 
v1 db 9,7,5,3,1 
v2 dw 0 
v3 dw -1 
v4 db '$' 

mov dx,offset v2 
mov ah,9 
int 21h 

을 대답은 내가 설정이 문제 4.

입니다 그것은 최대과 같이 :

offset 0 1 2 3 4 5 6 7 8 9 
data 09 07 05 03 01 00 00 FF FF 24 

우리는 우리는 다음, 그것을 쓸 수있는 도스 코드를 설정 그래서 우리의 출력이 네을 2 바이트를 써 00 05 2 바이트를 작성, DX에 5를 이동? 내 논리가 잘못되면 나를 바로 잡으십시오.

답변

6

DOS 기능 9는 DX의 오프셋에서 시작하여 $에 도달 할 때까지 씁니다. DX에 오프셋 V2를로드했습니다. V2 및 V3을 각각 2 바이트로 정의했으며 그 중 아무 것도 "$"를 포함하지 않으며 그 뒤에 V4가 붙습니다 ($ 포함). 따라서 V2 및 V3의 4 바이트를 쓴 다음 중지합니다.

편집 : 나는 제목의 질문에 그 반대를 추가해야합니다, 당신은 실제로 보여준 코드 중 어느 것도하지 않는다 어떤 간접 주소 (DOS 기능 (9)는 의심 할 여지없이 dx에로드 된 주소에서 읽기, 주소 사용 간접 않습니다하지만) .

+0

다시 도움을 주셔서 감사합니다. – raphnguyen