реклама на сайте
подробности

 
 
> Использование ассемблера в MinGW, вопросики...
Виктория
сообщение Aug 27 2009, 07:52
Сообщение #1


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



Осваиваем инлайновский ассемблер в MinGW.
Текст функции
Код
/******* Вывод байта в порт *******/
void outportb(unsigned addr,        // адрес регистра
                      unsigned char data)    // данные для записи
{
      asm(“mov %%eax, %2; \        // шаблон кода на ассемблере для
               out %1, %%al;”          // вывода байта в порт
               :                    // выходных переменных нет
               : “r” (addr), “r” (data)        // список входных операндов
               : “%%eax”, “%%al”);        // используемые регистры
}


1) Компилятор не желает передавать параметры через короткие регистры, даже для unsigned char (кто-нибудь знает какая, кстати, у него длина в Минималисте?). Поэтому используем eax.

2) Компилятор ругается на строчку с out (неправильный суффикс или операнд?), причём ругается именно на al (т.е. при замене out на mov - одно и тоже сообщение об ошибке). Непонятно sad.gif

3) Тип void тоже почему-то не понимает... Придется вводить фиктивную выходную переменную типа int, например.

Плиз, помогите. Может у кого-нибудь были похожие ситуации и в другом gcc (не обязательно под Windows, для любого МК)? Передать, естеств., хотелось бы байт. Т.к. это для учебной лабы.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 12:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01363 секунд с 7
ELECTRONIX ©2004-2016