The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
asm for C, !*! redd, 13-Апр-18, 18:15  [смотреть все]
Не могу передать переменную в asm вставку ...
int X;


void putChar()
             {
              asm { mov al,X;}
              }

Выдает ошибку, ...
invalid combination of opcode and и т д ...


И еще asm { push 0b800h;}
Тоже выдаёт ошибку ...
instruction not enable (((

  • asm for C, !*! PereresusNeVlezaetBuggy, 18:36 , 13-Апр-18 (1) +1
    >[оверквотинг удален]
    >  {
    >            
    >   asm { mov al,X;}
    >            
    >   }
    > Выдает ошибку, ...
    > invalid combination of opcode and и т д ...
    > И еще asm { push 0b800h;}
    > Тоже выдаёт ошибку ...
    > instruction not enable (((

    asm-синтаксис не стандартизирован, так что для начала неплохо было бы назвать точно компилятор.

    А затем можно таки взять в руки гуглю и... «inline asm КОМПИЛЯТОР syntax»

    • asm for C, !*! redd, 18:52 , 13-Апр-18 (2) –1
      Тольки не ругайтесь, компилятор у меня пока Turbo C 3.2 for dos ...
    • asm for C, !*! redd, 19:09 , 13-Апр-18 (3)
      Ё maё, это Ваше «inline asm КОМПИЛЯТОР syntax» помогло ... Спасибки
      Переменные передались в asm вставку на ура.

      А вод asm{push 0b800h;} пока никак, ...

      А можно допустим заменить
        push 0b800h  
        pop es

      На вот это
      mov ax,0b800h
      push ax
      pop es

      А ? так компилятор воспринимает,

      В любом случае пойду читать мануал ...

      • asm for C, !*! PereresusNeVlezaetBuggy, 19:28 , 13-Апр-18 (4) +1
        > А вод asm{push 0b800h;} пока никак, ...
        > А можно допустим заменить
        >   push 0b800h
        >   pop es
        > На вот это
        > mov ax,0b800h
        > push ax
        > pop es

        Почему бы и нет? Если, конечно, вам не надо каждый такт считать.

        Насколько я понял, 8086, в отличие от последующих моделей, не умел напрямую делать push константы:

        http://bitsavers.informatik.uni-stuttgart.de/pdf/borland/tur... , страница 149

        Поэтому, возможно, есть какие-то опции для компилятора, с помощью которых можно включить режим совместимости с 80186 или выше. Но это если моя догадка в целом верна.

        • asm for C, !*! redd, 19:51 , 13-Апр-18 (5)
          Да пока такты считать не нужно, интересует запись в неактивную страницу видеопамяти , а именно в 1.
          Потом переключение её в активную, потом запись в нулевую, и.т.д. ...


        • asm for C, !*! redd, 19:55 , 13-Апр-18 (6)
          За мануал спасибо, буду читать, до просветления ...
        • asm for C, !*! redd, 20:05 , 13-Апр-18 (7)
          Вроде заработало, но выводит только в самый верхний левый пиксель,
          • asm for C, !*! PereresusNeVlezaetBuggy, 20:22 , 13-Апр-18 (8)
            > Вроде заработало, но выводит только в самый верхний левый пиксель,

            Это уже отдельный разговор.

            Я бы посоветовал вам, на самом деле, сделать публичный репозиторий с программой на любом современном хостинге с pull-запросами. Тогда и вопрос «покажи код» будет решаться проще, и изменения будет проще предлагать. Но это, конечно, если исходная лицензия позволяет.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру