Цитата(bems @ 18.9.2013, 17:06 ) | тип HANDLE на х64 занимает все 64 бита, а возвращаемое значение берется как EAX (32 бита) |
Перепутал функции. Думал, что в RAX BOOL возвращается, у него по таблице одна разрядность на Win x32 и Win x64. HANDLE возвращается по параметру-указателю. Исправил. А INVALID_HANDLE_VALUE равен NULL, или чему то другому?
Добавлено через 11 минут и 12 секунд
Код | MOV RAX, 0x0000000000000000 MOV Result, RAX MOV RCX, 0xFFFFFFFFFFFFFFF6 CALL GetStdHandle CMP RAX, INVALID_HANDLE_VALUE JE L16 MOV RCX, RAX MOV RDX, &Count L01: CALL GetNumberOfConsoleInputEvents CMP EAX, 0x00000000 JE L16 MOV R10, Count CMP R10, 0x0000000000000000 JE L01 L02: CMP R10, 0x0000000000000000 JE L17 MOV RDX, $Bufer MOV R8, 0x0000000000000001 MOV R9, $Readed CALL ReadConsoleInput CMP EAX, 0x00000000 JE L16 DEC R10 MOV R11, EventType CMP R10, 0x0000000000000001 JNE L02 MOV EBX, bKeyDown CMP EBX, 0x00000000 JE L02 MOV BX, wRepeatCount L04: CMP BX, 0x0000 JNE L03 DEC R10 JMP L02 MOV BL, AsciiChar CMP BL, '0' JE L05 CMP BL, '1' JE L06 CMP BL, '2' JE L07 CMP BL, '3' JE L08 CMP BL, '4' JE L09 CMP BL, '5' JE L10 CMP BL, '6' JE L11 CMP BL, '7' JE L12 CMP BL, '8' JE L13 CMP BL, '9' JE L14 JMP L16 L05: MOV RAX, Result IMUL RAX, 0x000000000000000A JMP L15 L06: MOV RAX, Result IMUL RAX, 0x000000000000000A ADD RAX, 0x0000000000000001 JMP L15 L07: MOV RAX, Result IMUL RAX, 0x000000000000000A ADD RAX, 0x0000000000000002 JMP L15 L08: MOV RAX, Result IMUL RAX, 0x000000000000000A ADD RAX, 0x0000000000000003 JMP L15 L09: MOV RAX, Result IMUL RAX, 0x000000000000000A ADD RAX, 0x0000000000000004 JMP L15 L10: MOV RAX, Result IMUL RAX, 0x000000000000000A ADD RAX, 0x0000000000000005 JMP L15 L11: MOV RAX, Result IMUL RAX, 0x000000000000000A ADD RAX, 0x0000000000000006 JMP L15 L12: MOV RAX, Result IMUL RAX, 0x000000000000000A ADD RAX, 0x0000000000000007 JMP L15 L13: MOV RAX, Result IMUL RAX, 0x000000000000000A ADD RAX, 0x0000000000000008 JMP L15 L14: MOV RAX, Result IMUL RAX, 0x000000000000000A ADD RAX, 0x0000000000000009 L15: MOV Result, RAX DEC BX JMP L04 L16: MOV RAX, 0x0000000000000000 L17: RET |
|