#c #windows #assembly #x86 #nasm
# #c #Windows #сборка #x86 #nasm
Вопрос:
Итак, я пытаюсь создать функцию asm, которую я могу запускать на C, но каждый раз, когда я использую прерывание, оно выдает следующую ошибку: Исключение, вызванное 0x00541735 в Project1.exe : 0xC0000005: местоположение чтения с нарушением доступа 0xFFFFFFFF. Я пытался возвращать значения из функций asm без использования прерываний, просто чтобы проверить, была ли проблема в самой функции asm, но это сработало, поэтому я застрял. Прерывания, похоже, единственная проблема. Вот мой код
global _getkey
section .data
section .text
_getkey:
push ebp
mov ebp, esp
mov ah, 01
int 22
mov eax, 16
mov esp, ebp
pop ebp
ret
Я использую Microsoft Visual Studio 2019 для запуска этого, а также NASM. Я на Windows 10.
Комментарии:
1. Вы не можете использовать
int 22
в Windows. Вместо этого вызовите соответствующие функции API ОС.2. В этом случае, если вам разрешено вызывать версию библиотеки C для Windows, вы можете выполнить вызов
_kbhit
, чтобы получить ключ.