nasm x86 어셈블러에서 []를 사용하여 주소를 조작하는 방법을 알고 싶습니다.nasm x86 어셈블리 언어에서이 구문의 의미는 무엇입니까 (MOV [EBX], 110)?
MY_TABLE TIMES 10 DW 0 ; Allocates 10 words (2 bytes) each initialized to 0
MOV EBX, [MY_TABLE] ; Effective Address of MY_TABLE in EBX
MOV [EBX], 110 ; MY_TABLE[0] = 110
ADD EBX, 2 ; EBX = EBX +2
MOV [EBX], 123 ; MY_TABLE[1] = 123
의 MOV EBX, [MY_TABLE] - 여기 EBX에 복사 EBX 레지스터 또는 MY_TABLE의 주소로 복사 MY_TABLE 값 레지스터? []가
MOV [EBX], 110 내부에 지정된 주소에 값을 제공하기 때문에 나는이 질문입니다 - 여기 무슨 일이 내가 구문을 이해할 수 없다!
EBX가 가리키는 주소로 110을 이동하십시오. 크기가 불분명하지만 NASM이 코드가 유효한 NASM 코드가 아닌 기본 설정을 가지고 있지 않다면 (어떤 좋은 어셈블러도 그렇듯이) NASM은이 경우 명백한 피연산자 크기를 요구합니다. –
크기를 알 수 있지만 (MY_TABLE은 단어 크기로 "정의"되어 있음) 여전히 경고가 표시되어야합니다. 'MOV [EBX], 110 '은 모호합니다. 이 경우 어셈블러는 무엇을합니까? – Tommylee2k
line2의 주석이 잘못되었습니다. 실효 주소를로드하려면, LEA (로드 실효 주소)가 올 바릅니다. (또는'MOV EBX, offset My_table' 사용). 이것은 주소 my_table의 내용을 EBX (첫 번째 TWO 값, ebx는 32 비트이고, my_table은 16 바이트 값을 가짐)로 이동합니다. – Tommylee2k