MASM에서 두 dimmensional 배열에 액세스하는 방법을 보여줄 수 있습니까?MASM의 두 dimmensional 배열에 액세스하는 방법
C++ 코드 :
int k = 0
for (i = 0; i<5; ++i)
{
if (k == text.length())break;
for (j = 0; j<2; ++j)
{
for (t = 0; t<26; ++t)
{
if (text[k] == letters[t]){ tab[i][j] = t; k++; break; }
}
}
}
MASM 단지 내 코드의 일부
mov al, [ebx] ;ebx - begin of text array
xor esi, esi
for1:
cmp al, 00
je break_for1
mov j, 0
for2:
mov t, 0
mov ecx, adrAlphabet ;ecx - begin of letters array
for3:
;if (text[k] == letters[t]){ tab[i][j] = t; k++; break; }
mov ah, [ecx]
cmp ah, 00
je end_of_alphabet
cmp al, 00
je end_of_text
cmp al, ah
jne not_equal
;here comes the problem
mov edx, t
mov [letters + (esi*4 + j)*4], edx
;
inc k
inc ebx
jmp break_t
; end if
not_equal:
inc ecx
inc t
cmp t, 26
jne for3
break_t:
inc j
cmp j, 2
jne for2
inc esi
cmp esi, 5
jne for1
break_for1:
end
,하지만 난 그냥 배열을 이해합니다. MASM에서 tab [i] [j]를 어떻게 사용할 수 있습니까? 또 다른 질문은, 어떻게 탭 배열의 길이를 수정할 수 있습니까? 즉, 프로그램 시작시 탭 크기가 계산 된 다음 배열 크기를 설정하고 싶습니다.
감사
1) '행당 요소 수 i','j' 추가 각 요소의 크기 합을 승산하고, 마지막의 기본 주소를 곱하기 정렬. 2) 어레이의 메모리를 동적으로 할당하십시오. 그렇게하는 방법은 타겟 OS에 따라 다릅니다. Windows 응용 프로그램을 작성하는 경우 HeapAlloc을 찾으십시오. – Michael