MASM проблемы с inpout32.dll - PullRequest
       19

MASM проблемы с inpout32.dll

0 голосов
/ 24 марта 2012

Я пытаюсь сделать программу сборки для чтения ввода с порта 0x379.К сожалению, я не могу использовать регистр ESI для этой задачи, так как я использую Windows 7. Я импортировал inpout32.dll в свою программу, но, к сожалению, я не знаю, как передать ему порт.Я пытаюсь использовать функцию Inp32, которая принимает порт в качестве аргумента.Пока что я могу только назвать адрес местоположения Inp32 в dll.Кстати, цикл while еще не завершен.Вот мой исходный код:

.386
.model flat, stdcall
option casemap :none

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib

.data
    LibName db "inpout32.dll", 0
    OutName db "Out32", 0
    InpName db "Inp32", 0
    DllNotFound db "Cannot load the library", 0
    AppName db "Load Library", 0
    FunctionNotFoundInp db "Inp32 function not found", 0
    FunctionNotFoundOut db "Out32 function not found", 0

.data?
    libHandle dd ? ; handle of the dll
    outAddress dd ? ; address of the out function
    inpAddress dd ? ; address of the inp function

.code
start:
    invoke LoadLibrary, offset LibName

    .if (eax == NULL)
        invoke MessageBox, NULL, addr DllNotFound, addr AppName, MB_OK
    .else
        mov libHandle,eax
        invoke GetProcAddress, libHandle, offset OutName

        .if (eax == NULL)
            invoke MessageBox, NULL, addr FunctionNotFoundOut, addr AppName, MB_OK
        .else
            mov outAddress, eax

        .endif

        invoke GetProcAddress, libHandle, offset InpName

        .if (eax == NULL)
            invoke MessageBox, NULL, addr FunctionNotFoundInp, addr AppName, MB_OK
        .else
            mov inpAddress, eax

        .endif

    .endif

    WhileLp:
        cmp eax, 223d ;compare eax to 223, which is up and down combined
        je WhileDone
        jmp WhileLp ;jump back to the while loop
 
    WhileDone:
        invoke ExitProcess, 0

end start
...