직접 어셈블리 언어 피연산자는 오프셋

직접 변위 변수 이름이 형성되고 - 오퍼랜드 오프셋. 이 명시 적으로 표시되지 않은 메모리 위치에 액세스 할 수 있습니다. 기존의 바이트 배열을 가정 arrayB :

 

arrayB 바이트 10H, 20H, 30H, 40H, 50H

MOV 명령 배열의 첫 번째 바이트의 자동 전송로 소스 피연산자와 배열 :

MOV 문헌 arrayB; AL = 10H

arrayB 오프셋 번째 바이트의 배열에의 액세스를 추가하여 1 :

MOV 문헌 [arrayB + 1] = AL 20H

플러스 2 어레이의 제 3 바이트에 액세스 할 수있는 경우 :

MOV 문헌 [arrayB + 2] AL = 30H

ArrayB + 일정한 오프셋 변수를 추가하여 소위 유효 주소 표현의 동일한 모양 형태 1. 유효 주소 괄호의 외부는 표시된 메모리 주소의 내용을 얻을 수있는이 식을 구문 분석하여 표시합니다. 어셈블러 주소 표현뿐만 아니라 괄호를 필요로하지 않지만, 명확성을 위해, 우리는 괄호를 사용하는 것이 좋습니다.

MASM 효과가 주소 범위 검사를 내장하고 있지 않습니다. 다섯 arrayB 바이트 어레이는 명령의 바이트 배열의 범위 밖에있는 메모리 액세스이며, 다음 예에서, 우리가 가정이있다. 결과는 찾기 어려운에서 논리 오류이기 때문에 배열 참조를 검사 할 때 매우 조심해야합니다 :

MOV 문헌 [arrayB + 20]; AL = ??

워드, 더블 워드

16 비트 워드의 그룹에서 전방 각 배열 요소 2 바이트 이상의 비율을 상쇄. 아래의 예는, 상기 어레이는 상기 어레이의 제 2 개 소자에 점을 추가 ArrayW 이유이다 :

  .DATA arrayW WORD의 100H, 200H, 300H .CODE MOV AX, arrayW] = AX 100H의 MOV 도끼 [arrayW + 2] = AX 200H

유사하게, 더블 워드의 경우, 두 번째 요소를 가리키는 오프셋 추가하기 위해 상기 제 4 요소 :

  .DATA arrayD DWORD의 l0000h, 20000h의 .CODE mov 인 eax에, arrayD 

4.1  오퍼랜드 타입
4.2  MOV 명령어
4.3  그것을 및 사용 MOVSX 일에 MOVZX
4.4  LAHF의 SAHF 명령 및
5 개 4.5  XCHG 명령어
4.6  즉치 오프셋 피연산자
4.7  어셈블리 언어 데이터 전송을 실시 예
4.8  가감 상세한
4.9  오프셋 (OFFSET) 연산자
4.10  ALIGN 지시문
4.11  PTR 연산자
4.12  유형 연산자
4.13  lengthof 연산자
4.14  라벨 지정
4.15  간접 어드레싱
4.16  JMP 명령과 LOOP
4.17  64 MOV 명령어
4.18  64 비트 가산 및 감산

추천

출처blog.csdn.net/Javaxuxuexi/article/details/93401535