내가 소화 할 수없는 것이 있습니다. 나는 어떤 어셈블러를 배우고 있으며, 지금 나는 어드레싱과 관련된 장에있다. 역 참조를위한 괄호의 개념을 이해하지만 어떻게 든 사용법을 볼 때 나는 그 지점을 흡수 할 수 없다. 내 혼란이 시작된 곳 여기에 조금 더 정확하게하려면입니다 :어셈블러에서 주소 지정
mov 인 등이, [L1]
여기에서 확인 내가 예를 들어 케이스로 L1을 가정한다 나중에 실제 주소를 대입 매크로 어떤 종류의 기계어 코드에 .. 좋아?
이 명령어의 기능은 다음과 같습니다. 물리적 주소를 거의 변경할 수 없어서 참조를 역 참조하고 L1에 저장된 값으로 값을 변경합니다.
경우 지금은 모든 것이 확인 될 때까지 :
MOV [L1] 알
analogicaly ... 주소가 저장되어 있어야합니다 (그래서이 일을 어느 시점이 있었다) 의미가와 당신은 그것을 메모리의 다른 장소로 바꾼다. 그렇지?
만약 내가 실수를해서는 안되는 경우에 대비해주세요. 제게 배우기를 계속해도 좋을 것입니다.
오, 마지막으로 NASM은 내 코드 아래에 0xAA55를 추가합니다 (이 시퀀스는 프로그램을 끝내기로되어 있습니까?), 왜 이렇게 여러 번입니까? 여기를 읽어 주셔서 대단히 감사합니다.
나는 지금 그것을 얻는다 고 생각한다. 단지 하나지만. 당신은 모든 레이블이 두 번째 명령에서 실제로 L1에 저장되는 것이 AL 주소임을 나타냅니다. ? – Pyjong
두 번째 명령에서 레이블 L1의 주소는 AL 레지스터의 값으로 설정됩니다. –
@stupid_idiot (btw, 어느 쪽도 아닌 것 같습니다). 아니요, AL (및 AH, AX 및 모든 레지스터 이름)은 메모리 위치가 아니며 주소 자체가 없습니다. 그들은 단순히 CPU 자체 내의 특정 위치를 참조하기 만합니다. 사실, 나는 당신의 질문에 "dereferencing al register"라는 표현을 사용하는 것에 대해 "정정"하려고했다. 이 상황에서 AL에 대한 어드레싱 모드는 "등록"입니다. AL에 관해서는 역 참조가 일어나지 않습니다. (이것은 때로는 레지스터가 혼란스러워 질 수 있습니다. 레지스터는 다음에 참조되는 메모리에 주소를 생성하는 데 사용될 수 있습니다) – mjv