2014-03-19 2 views
0

잘못된 배열이 있음 : FOO BYTE 1,2,3,4오프셋에 대한 피연산자가 올바르지 않습니다.

그리고 배열을 사용하여 프로 시저에 배열을 전달하고 싶습니다.

내 질문은 0이 아닌 인덱스 (예 : 내 배열에서 2)를 전달하려면 다음을 수행 할 수 있습니다. 푸시 오프셋 foo [1] ...하지만 작동하지 않습니다 (컴파일 오류) : eax가 1 인 상태에서 OFFSET foo [eax]를 푸시합니다.

모든 레지스터가 대괄호로 묶여 있으므로 상수를 사용할 필요가 없습니까? 사용자 입력에 따라 인덱스를 변경하고 싶습니다. if/else 문을 사용하지 않아도되기 때문입니다.

답변

0

추가 양식을 사용하여 주소를 먼저 계산 한 다음 해당 값을 스택에 저장하십시오. 한 가지 가능한 해결책 :

lea edx, [foo+eax] 
push edx 
0

이의 구문은 다음과 같습니다

 push offset foo+2 

주 (foo는이 DWORD 있다면 그것은 중요하지 않을 오프셋 푸의 데이터 유형을 무시에 추가 된 즉시 그, 2를 더하면 스케일링 효과없이 항상 2가 추가됩니다.

관련 문제