2010-08-04 2 views
28

누구나 ORG 지침에 대한 포괄적 인 설명을 제공 할 수 있습니까?
어셈블리 작성 응용 프로그램에서 언제 그리고 왜 사용됩니까?ORG Assembly Instruction의 기능은 무엇입니까?

x86 또는 AMD64에서 Nasm을 사용하십시오.

+2

힌트 : 널리 사용되는 하나 이상의 CPU 아키텍처와 이러한 아키텍처 중 적어도 일부에 대해 둘 이상의 어셈블러가 있습니다. 어떤 기계어에 대한 어셈블러를 지정하면 더 유용 할 수 있습니다. –

+0

Nasm for x86 and amd64 – sepisoad

답변

24

ORG는 어셈블러를 설정하는 데 사용됩니다 위치 카운터. 이것은 링크시로드 주소로 변환되거나 변환되지 않을 수 있습니다. 절대 주소를 정의하는 데 사용할 수 있습니다 (예 : 고정 주소에 있어야 할 수도있는 인터럽트 벡터와 같은 것을 정의 할 때 또는 패딩을 도입하거나 다음 코드에 대한 특정 정렬을 생성하는 데 사용할 수 있습니다.

+3

'ORG' 지시어의 의미는 어셈블러에 따라 다를 수 있음에 유의하십시오. 예를 들어 Paul이 언급 한 바와 같이 패딩을 생성하기 위해이 패딩을 사용하면 MASM에서 작동하지만 NASM에서는 작동하지 않습니다 (http://developer.apple.com/mac/library/documentation/DeveloperTools/nasm/nasmdo10.html#section-10.1). .삼). – bcat

+11

'ORG '는 "origin"의 약자입니다. – starblue

+1

@starblue 이해하기 좋은 보충물 –

-1

바이너리 프로그램을로드 할 메모리 위치입니다 (있는 경우).

저는 org를 사용하지 않고 하드웨어에 곧바로 opcode/value를 내 보냅니다. 항상 ax에 값을 저장하고 bx, cx, dx 사이에 값을 전송할 수 있습니다. 내가 처음 실행하기 전에 메모리로 전송에 대해 걱정할 필요없이 오피/값을 요리하는 내 자신의 어셈블러를 쓰고 있어요

,

그것 때문에 훨씬 더 빨리 그들이 당하고처럼 그 자리에서 옵 코드를 실행하려면 메모리에 캐시하려고 시도하지 않고 스택에 과부하가 걸려 CPU가 소모 될 수 있습니다.

+0

RAM 메모리의 오프셋으로 프로그램을 0x00000000h에서로드하려고합니다. ORG 100h = 내 바이너리 코드를 64 비트 컴퓨터에서 0x00000000h + 100h 또는 0x00000100h 위치의 메모리에 저장합니다. – Jason

+4

첫 번째 문장이 정확합니다. 나머지는 나에게 넌센스처럼 보인다. 값을 저장하기 위해 레지스터 나 메모리를 사용하는 것은 'org'의 사용과 아무 관련이 없습니다. 그리고 여러분은 cpu의 명령어 포인터가 항상 _memory_ 위치를 가리키고 있다는 사실을 알고 있습니까? 그리고 CPU는 항상 메모리 또는 캐시에서 opcode를 읽습니다. – hirschhornsalz

6

ORG는 현재 세그먼트와 관련된 코드/데이터의 다음 부분을 넣을 위치를 나타냅니다.

최종 주소가 어셈블리 시간에 알려지지 않은 세그먼트에 따라 달라 지므로 고정 주소로 사용하는 것은 유용하지 않습니다.

2
 During the assemble time ORG directive resets the MLC (memory location counter) to the address specified in the ORG directive. 

구문 : ORG 참고 : + 부호 없음 절대 값 또는 심볼 또는 심볼 일 수있다.

예 : - ORG 지시문을 사용하는 조립 목록이 필요합니다.

위치
0000A4 00 89 TAB DC 256AL1 - 240
000,194 F0F1F2F3F4F5F6F7 91 DC C'1234567 '는 TAB 심볼 위의 여기

가 할당 + (* TAB)
0001A4 00,000,194 90 ORG의 TAB MLC 주소 0A4. 다음 명령어에서 ORG는 MLC를 x'194 '(~ x'A4'+ 십진수로 240) 인 TAB + 240 주소 위치로 설정합니다. 기본적으로이 설정은 길이가 256이고 240 번째 위치에서 일부 문자 상수를 저장하기 위해 TR 명령에 사용할 수 있도록 설정되어 있습니다.

-1

ORG는 프로그램을로드 할 것으로 예상되는 위치를 설정합니다. 이 프로그램을 특정 위치에로드하면 메모리 주소가 잘못되어 문제가 발생할 수 있습니다.

+0

정보가 이미 언급되었으므로 추가 답변이 필요하지 않습니다. 그 외에도 일반적인 경우와는 거리가 멀다. – usr2564301