어셈블러는 데이터와 명령어를 바이트로 변환합니다. 컴파일러와 달리 어셈블리 명령어와 메모리는 일반적으로 1 : 1로 일치합니다. 그. 기호는 전통적으로 현재 프로그램 섹션의 시작에서 현재 오프셋을 나타내는 데 사용되었습니다.
가장 일반적으로 개체의 크기를 결정하는 데 사용됩니다.
해당 변형 예가 사용 :
는
SOMEDATA:
.byte 0x55,0xaa
이 값 55 AA 2 바이트를 할당하고, 해당 데이터 위치를 내부 SOMEDATA 라벨을 할당한다.
나는 즉시 추가 한 경우 나중에
(이 경우 2) 할당 된 바이트 수를 나타내는 기호를 정의 할
SOMEDATA:
.byte 0x55,0xaa
SOMEDATALENGTH = . - SOMEDATA
. 일부 어셈블러에는 정교한 데이터 구조를 설명 할 수있는 복잡한 매크로 기능이 있습니다. 사용하기. 그러한 구조를 설정하는 데 매우 일반적입니다.
일부 어셈블러에서는. 기호.
_start:
.=_start+510
.byte 0x55,0xaa
이렇게하면 할당자는 510 바이트 씩 증가합니다. 그런 다음 _start 위치와 값 55 및 AA가 제공된 2 바이트 사이에 510 바이트 갭을 생성합니다. 보통 간격은 0으로 채워지지만 어셈블러에 따라 다릅니다.
'.'은 현재 위치입니다. '='는 심볼에 값을 할당하므로'. = _start + 510'은 현재 위치를 '_start + 510'으로 설정합니다. – fuz
'.byte 0x55,0xaa'는'0x55'와'0xAA'의 2 바이트를 정의합니다. 부트 섹터에서 offset +510과 +511의 두 값이 발견 된 경우를 제외하고 BIOS는 부트 섹터에 유효한 부팅 코드가 들어 있다고 생각하고 실행합니다 (디스크를 덮어 쓰는 경우 제외)/어떤 임의의 데이터에 의해 포맷 된 경우, "마술 마커"가 부트 섹터에 없기 때문에 BIOS가 잘못된 내용의 실행을 피하게됩니다. – Ped7g
간단한 답변과 내 문제 해결! 정말 고마워요 –