Предача прараметров
Как в Delphi правильно предать параметры в эту прочедуру? Как получить возвращаемые параметры? Что нужно изменить коде?
( MOV EBX,[EBP+8]
MOV AX,[EBX] )
Подключаю как obj файл {$L *.obj}.
В Делфи функция выгляди вот так
Function SendByte(D:byte):integer; external;
Как передать параметр D в функцию?
Вот код функции
Public SendByte
PUSH EBP
MOV EBP,ESP
Push EBX
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Mov AH,0 ; Получить
Int 1AH ; значение текущего времени в тиках
And DX,3
Mov T1,DX
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
M0: Mov DX,RLPT_SI ; Регистр состояния порта
In AL,DX ; Проверить готовность контроллера
Test AL,01000000b ; к приему очередного байта
JNE M0S
Mov AH,0 ; Получить
Int 1AH ; значение текущего времени в тиках
And DX,7
Sub DX,T1
Cmp DX,2
JNE M0
Mov EAX,-1
Jmp ErrB
M0S: Mov EBX,[EBP+8]
MOV AX,[EBX]
Mov DX,RLPT_D ; Регистр данных порта
Out DX,AL ; Послать байт в порт
Mov DX,RLPT_SO ; Регистр управления
Mov AL,00000001b ; Выдать сигнал
Cmp Osc,0 ; Подавать тактовую частоту?
JNE M11
Or AL,00000100b ; Выключить подачу тактовой частоты
M11: Out DX,AL ; установленных данных
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Mov AH,0 ; Получить
Int 1AH ; значение текущего времени в тиках
And DX,3
Mov T1,DX
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
M2: Mov DX,RLPT_SI ; Регистр состояния порта
In AL,DX ; Подождать пока
Test AL,01000000b ; контроллер
JE M2S ; прочитает данные
Mov AH,0 ; Получить
Int 1AH ; значение текущего времени в тиках
And DX,7
Sub DX,T1
Cmp DX,2
JNE M2
Mov EAX,-2
Jmp ErrB
M2S: Mov DX,RLPT_SO ; Регистр управления
Mov AL,00000000b ; Снять сигнал
Cmp Osc,0 ; Подавать тактовую частоту?
JNE M3
Or AL,00000100b ; Выключить подачу тактовой частоты
M3: Out DX,AL ; выставленных данных
Mov EAX,0
ErrB: Pop EBX
Pop EBP
Ret
SendByte EndP;
Верно подмечено! Низя использовать прерывания (int).
2 AndreiPH
На счет передачи параметров - смотри Calling conventions в хелпе.
ИМХО лучше использовать такую конструкцию
asm
MOV EAX, X
...
end;
2 AndreiPH
На счет передачи параметров - смотри Calling conventions в хелпе.
ИМХО лучше использовать такую конструкцию
asm
MOV EAX, X
...
end;
Правда, превыватия на NT-шном ядре не работают, а в 9х все ОК.
Использовать вставки не получиться, появляются ошибки при вызове процедур.
за Calling conventions - спасибо, буду разбираться
Нет это не определение чатоты процессора, это часть драйвера управления установкой, подключенного через LPT. Написать все в дельфи пока не получается
Конечно будут появляться. Нужно это процедуру переработать чуть. Тут методом копи-пасте не получится :)