0
그래서 나는 MASM32 (C++에서 온 배열)로 작업하려고 노력 중이며, 실제로 짜증이납니다. 그것은 12 × 12 게임 보드에 각각 폭 1과 3 긴 3 배를 배치배열에 값을 저장
void randomplaceShip()
{
int toPlace = 3;
srand(time(0));
while (toPlace > 0)
{
int v1 = rand() % 12;
int v2 = rand() % 12;
if (dArray[v1][v2] != 'X' && v1 < 9)
{
for (int i=0; i<3; i++)
{
dArray[v1+i][v2] = 'X';
}
toPlace--;
}
}
}
: 나는 C에서 원하는 ++과이 어떻게 생겼는지 프로토 타입. 지금까지 어셈블리에서 어레이 주소를 esi
레지스터에 저장하고 1-9 사이의 임의의 숫자를 rVal
에 저장합니다. C++ 에서처럼 인덱싱이 없기 때문에 올바른 위치에 "X"를 저장하는 데 문제가 있습니다. MASM32에서 사용하는 배열은 144 슬롯 (12x12 보드 용)이있는 바이트 배열입니다. 당신이 무슨 일을하는지
lea esi, dArray
mov eax, 11
.while eax > 10
invoke crt_rand
.endw
mov rVal1, eax
mov eax, 11
.while eax > 10
invoke crt_rand
.endw
mov rVal2, eax
movzx eax, byte ptr [esi+1*rVal1] ;The problem
mov eax, "x" ;is here