WWW.ИСХОДНИКИ.РУ cpp.sources.ru
java.sources.ru web.sources.ru soft.sources.ru
jdbc.sources.ru asp.sources.ru api.sources.ru

  Форум на исходниках
  ASM
  Функции на асме

СПРОСИТЬ  ОТВЕТИТЬ
профайл | регистрация | faq

Автор Тема:   Функции на асме
zlelik опубликован 29-10-2001 14:43 MSK   Click Here to See the Profile for zlelik   Click Here to Email zlelik  
m3_readyC PROC

PUBLIC m3_readyC

mov dx, PORTO
mov al, C0
out dx, al
mov dx, PORTI
in al, dx
and ax, 30h

ret

m3_readyC ENDP

какое "число" возвращает эта функция? То что в регистре ax или нет?

devilray опубликован 29-10-2001 17:53 MSK     Click Here to See the Profile for devilray  Click Here to Email devilray     
Ну раз уж ты делаешь in al,dx то результат должен быть в al
7in опубликован 29-10-2001 19:16 MSK     Click Here to See the Profile for 7in  Click Here to Email 7in     
"Возвращаться" будет всё, что есть... Вопрос в том, что будет использовать программа после вызова этой процедуры...

А что касается "высоких" языков, то там используются определённые регистры: Pascal, например, использует AX для типа Word/Integer или DX:AX для Longint/Pointer, а в ASтMе - это уж у кого насколько фантазии хватит :)

В данной случае, скорее всего, как сказал Devilray, нужно использовать AX (или AL, т.к. AH будет = 0).

zlelik опубликован 29-10-2001 20:31 MSK     Click Here to See the Profile for zlelik  Click Here to Email zlelik     
Так значит в ах?
может это важно, что эта функция должна использоваться в С++ коде.
server_mouse опубликован 31-10-2001 15:14 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
(в С++)
Всё зависит о типа:
BYTE -- AL;
WORD -- AX;
DWORD -- EAX для 386+;
для древних процов не знаю.
void* -- EAX; любой указатель. Опять таки для 386+;

Кроме того из С можно получить доступ к регистрам процессара. См. _AL, _AX, _BX и т.д.

server_mouse опубликован 31-10-2001 15:21 MSK     Click Here to See the Profile for server_mouse  Click Here to Email server_mouse     
Да, double возвращается через регистр сопроцессора.
И фраза '386+' подразумевает не только проц, но и 32-разрядную ось. Принципиально ты можешь возвращать через EAX, но DOS вроде такого не понимает... Проверить надо.

Всё вышесказаное справедливо для __cdecl.

СПРОСИТЬ  ОТВЕТИТЬ
Перейти:


E-mail | WWW.ИСХОДНИКИ.RU

Powered by: Ultimate Bulletin Board, Freeware Version 5.10a
Purchase our Licensed Version- which adds many more features!
© Infopop Corporation (formerly Madrona Park, Inc.), 1998 - 2000.