На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> Функции на асме
    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 или нет?
      Ну раз уж ты делаешь in al,dx то результат должен быть в al
        "Возвращаться" будет всё, что есть... Вопрос в том, что будет использовать программа после вызова этой процедуры...
        А что касается "высоких" языков, то там используются определённые регистры: Pascal, например, использует AX для типа Word/Integer или DX:AX для Longint/Pointer, а в ASтMе - это уж у кого насколько фантазии хватит :)
        В данной случае, скорее всего, как сказал Devilray, нужно использовать AX (или AL, т.к. AH будет = 0).
          Так значит в ах?
          может это важно, что эта функция должна использоваться в С++ коде.
            (в С++)
            Всё зависит о типа:
            BYTE -- AL;
            WORD -- AX;
            DWORD -- EAX для 386+;
            для древних процов не знаю.
            void* -- EAX; любой указатель. Опять таки для 386+;
            Кроме того из С можно получить доступ к регистрам процессара. См. _AL, _AX, _BX и т.д.
              Да, double возвращается через регистр сопроцессора.
              И фраза '386+' подразумевает не только проц, но и 32-разрядную ось. Принципиально ты можешь возвращать через EAX, но DOS вроде такого не понимает... Проверить надо.
              Всё вышесказаное справедливо для __cdecl.
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0214 ]   [ 15 queries used ]   [ Generated: 19.04.24, 16:50 GMT ]