URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 10215
[ Назад ]

Исходное сообщение
"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 , 13-Апр-18 18:36 
>[оверквотинг удален]
>  {
>            
>   asm { mov al,X;}
>            
>   }
> Выдает ошибку, ...
> invalid combination of opcode and и т д ...
> И еще asm { push 0b800h;}
> Тоже выдаёт ошибку ...
> instruction not enable (((

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

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


"asm for C"
Отправлено redd , 13-Апр-18 18:52 
Тольки не ругайтесь, компилятор у меня пока Turbo C 3.2 for dos ...

"asm for C"
Отправлено redd , 13-Апр-18 19:09 
Ё maё, это Ваше «inline asm КОМПИЛЯТОР syntax» помогло ... Спасибки
Переменные передались в asm вставку на ура.

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

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

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

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

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


"asm for C"
Отправлено PereresusNeVlezaetBuggy , 13-Апр-18 19:28 
> А вод 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 , 13-Апр-18 19:51 
Да пока такты считать не нужно, интересует запись в неактивную страницу видеопамяти , а именно в 1.
Потом переключение её в активную, потом запись в нулевую, и.т.д. ...



"asm for C"
Отправлено redd , 13-Апр-18 19:55 
За мануал спасибо, буду читать, до просветления ...

"asm for C"
Отправлено redd , 13-Апр-18 20:05 
Вроде заработало, но выводит только в самый верхний левый пиксель,

"asm for C"
Отправлено PereresusNeVlezaetBuggy , 13-Апр-18 20:22 
> Вроде заработало, но выводит только в самый верхний левый пиксель,

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

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


"asm for C"
Отправлено redd , 14-Апр-18 07:18 
Да какая лицензия, скажете тоже ...
А подскажите где лучше разместить ?

А программа то примитивная ..., вот
Могу прям тут выложить ..., если можно, там строк 400 всего
https://youtu.be/elrfOh1zpN4