Мне бы из массива Numbers числа нужные взять, да на вывод их отправить. Да только не беруться. ==== Код (Text): BSIZE equ 10; .data Numbers DWORD BSIZE dup(?) ; my massive ifmt BYTE "%d",0 buf BYTE BSIZE dup(?) [b]dig DWORD ?[/b] stdout DWORD ? cWritten DWORD ? CLSR DWORD ? .code start: mov CLSR, 13*256+10 invoke GetStdHandle, STD_OUTPUT_HANDLE mov stdout, eax mov ecx, BSIZE mov ebx, 1 mov edi, 0 nxt: mov Numbers[edi], ebx inc ebx add edi, 4 loop nxt mov ecx, BSIZE NxtDig: mov edi, 0 [b]mov dig, Numbers[edi] ; doesnt work! [/b] push ecx invoke wsprintf, ADDR buf, ADDR ifmt, [b]dig[/b] invoke WriteConsoleA, stdout, ADDR buf, BSIZE, ADDR cWritten, 0 ; invoke WriteConsoleA, stdout, ADDR CLSR, 2, ADDR cWritten, 0 add edi, 4 pop ecx loop NxtDig ===
Ну очень уж однозначное название темы. А по поводу ошибки - попробуй вынести инициализацию EDI за пределы цикла. Иначе получается, что ты каждый раз одно и то же число берешь
747_den Код (Text): mov ebx, 1 mov edi, 0 nxt: mov Numbers[edi], ebx inc ebx add edi, 4 loop nxt IMHO Код (Text): mov edi, offset Numbers mov eax,1 nxt: stosd inc eax loop nxt
скажите, а так вообще можно с массивом обращаться? mov dig, Numbers[edi] или так передать элемент массива аргументом ? invoke wsprintf, ADDR buf, ADDR ifmt, Numbers[edi] (я у юрова в учебнике еще видимо до этого места не дошёл или пропустил)