>  기사  >  메모리 피연산자의 주소 지정 모드는 무엇입니까?

메모리 피연산자의 주소 지정 모드는 무엇입니까?

青灯夜游
青灯夜游원래의
2020-07-28 14:24:4916435검색

메모리 피연산자의 주소 지정 모드에는 직접 주소 지정, 레지스터 간접 주소 지정, 레지스터 상대 주소 지정, 기본 인덱스 인덱스 주소 지정 및 기본 인덱스 인덱스 상대 주소 지정이 있습니다.

메모리 피연산자의 주소 지정 모드는 무엇입니까?

메모리 피연산자의 주소 지정 모드

TIPS:

♥ 명령어에 의해 동작하는 객체는 메모리에 있고, 형태는 [ ]

♥ 명령어는 위치를 알려준다. 메모리 어딘가에 있는 피연산자 논리 세그먼트의 오프셋 주소: [오프셋 주소]

♥논리 세그먼트의 세그먼트 기본 주소는 default 또는 reset

♥으로 지정됩니다. 메모리 피연산자 자체의 워드 길이는 다음과 같습니다. 결정되지 않았으며 단어 길이가 다른 레지스터 피연산자에 따라 다르거나 단어 길이가 다른 방법으로 지정되었습니다.

1. 직접 주소 지정

명령어는 피연산자의 오프셋 주소를 직접 제공합니다.

eg: MOV AX,[1200H] ; AL에서는 데이터 세그먼트의 1200H 위치에 내용을 저장하고, AH에서는 1201H 위치에 내용을 저장합니다.

직접 주소 지정 모드에서는 피연산자가 기본적으로 데이터 세그먼트에 저장됩니다. , 그러나 세그먼트 재설정은 허용됩니다. 즉, 명령은 논리 세그먼트

eg를 제공합니다. MOV AX,ES:[1200H]는 추가 세그먼트 1200H의 내용을 AL에 저장하고 1201H의 내용을 AH에 저장합니다.

개인적인 이해:

[ ]를 붙인다는 것은 레지스터가 아닌 다른 곳에서 주소를 찾아야 한다는 뜻이다. 이때, 메모리의 어느 부분에 있는지 먼저 생각한 후 직접 찾아야 한다. 이 세그먼트에 지정된 위치입니다. 일반적으로 기본값은 데이터 세그먼트입니다.

2. 간접 주소 지정

피연산자는 메모리에 저장되며, 메모리에 있는 데이터의 오프셋 주소는 대괄호 [ ] 안의 일반 레지스터 내용입니다.

4개의 범용 레지스터가 일반적으로 사용되며(이 4개의 레지스터는 간접 주소 레지스터라고도 함, 즉 BX, BP, SI 및 DI) 데이터의 오프셋 주소를 저장하는 데 사용할 수 있습니다. (간접 주소 레지스터는 기본 주소 레지스터 BX, BP 및 인덱스 레지스터 SI, DI로 구분됩니다)

간접 주소 지정의 일반적인 형식:

eg: MOV BX,1200H는 즉시 주소 지정입니다. , 이때 BX=1200H

MOV AX,[BX]; 여기서는 [BX]=[1200H]이므로 직접 주소로 변환되지만 다음과 같이 BX가 추가됩니다. 이때, 코드 세그먼트에서 오프셋 주소가 1200H인 유닛의 내용이 AL에 할당되고, 유닛 1201H의 내용이 AH에 할당됩니다

간접 어드레싱은 피연산자의 오프셋 주소를 의미합니다. 레지스터에 의해 간접적으로 부여됩니다

피연산자의 세그먼트 주소(피연산자가 어느 세그먼트에 있는지)는 어떤 간접 주소 레지스터를 선택했는지에 따라 다릅니다(세그먼트는 재설정 가능)

BX, SI, DI BP는 기본적으로 스택 세그먼트에 있습니다

개인의 이해:

선택한 간접 주소 레지스터를 통해 해당 세그먼트를 찾은 다음 오프셋을 통해 물리적 위치를 찾을 수 있습니다. 세그먼트의. 간접적으로 주소를 지정하면 소스 피연산자의 물리적 위치를 찾을 수 있습니다.

물리적 위치 = 세그먼트 기본 주소 * 16 + 오프셋 주소.

3. 레지스터 상대 주소 지정

피연산자의 오프셋 주소는 레지스터 내용과 변위입니다.

eg: MOV AX,2000H ; AX

MOV DS,AX 에 할당됨 ; DS는 AX

MOV BX,1200H에서 세그먼트 헤드 주소를 가져옵니다. 즉시 주소 지정, BX

MOV AL,[BX]5에 할당 AL

에는 세그먼트 기본 주소 2000H와 오프셋 1200H+5가 할당됩니다. 레지스터는 테이블에서 상대 주소로 사용됩니다. (사용 사이에 상수가 있으므로 불편할 것입니다.)

개인의 이해:

상대 주소 지정은 간접 주소 지정을 기반으로 변위 상수를 추가하므로 판단 방법은 간접주소 레지스터 앞뒤에 상수가 있는지 확인하는 것입니다. 상수가 있으면 상대어드레싱

4.

연산자 오프셋 주소는 : 기본 레지스터의 내용(BX, BP) + 인덱스 레지스터의 내용(SI, DI)

여기서 BX는 기본적으로 데이터 세그먼트 및 BP를 사용합니다. 기본값은 스택 세그먼트

피연산자의 세그먼트 주소는 선택한 기본 주소 레지스터에 의해 결정됩니다

상대 주소 지정과 동일하며 주로 1차원 배열 연산에 사용됩니다

eg

: MOV SI, 1100H; 즉시 주소 지정, 1100H SIMOV BX,SI에 할당 BX

MOV AX,[SI+BX]에 1100H 할당 = 데이터 세그먼트 기본 주소 *16+1100H +1100H

개인의 이해

:

기본 주소 인덱스 주소 지정은 먼저 기본 레지스터가 위치한 세그먼트 헤드 주소를 찾은 다음 기본 레지스터의 오프셋과 인덱스 레지스터의 오프셋을 추가하는 것입니다. 특징은 [BX][BP]는 둘 중 하나, [SI][DI]는 둘 중 하나여야 합니다

5. 기본 주소 인덱스 상대 주소 지정

오프셋 주소입니다. of the Operand는 :

기본 레지스터 + 인덱스 레지스터 + 변위

피연산자의 세그먼트 주소는 선택한 기본 레지스터에 의해 결정됩니다.

기본 주소 인덱스 상대 주소 지정 방법은 주로 연산에 사용됩니다. 2차원 배열

eg: MOV DI,1100H ; 즉시 주소 지정, 1100H를 DI

MOV BP,DI ; BP

MOV AL,[BP ] [DI] 5 ; 피연산자가 스택 세그먼트에 있고 해당 물리적 ​​주소 = 스택 세그먼트 기본 주소 * 16 + 1100H + 1100H + 5

개인의 이해:

기본 주소 인덱스 상대 주소 지정은 상수 오프셋에만 있음을 나타냅니다. 기본 주소 인덱스에 추가되며, 이를 통해 소스 피연산자의 물리적 주소를 파악할 수 있습니다.

더 많은 관련 지식을 보려면 PHP 중국어 웹사이트를 방문하세요!

위 내용은 메모리 피연산자의 주소 지정 모드는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.