Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ASM коды в СИ, Помоги плиз!!! очень прошу! 
:(
    Опции темы
Гость_Anton
Дата 19.11.2005, 00:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Сорри, если не нашёл похожей темы на энтом форуме...
Как правильно вставить АСМ код в лэнгуаж СИ???
В хэлпе функция описана как "asm {
}"...
Но с метками она не работает, выдаёт еррор типа "неопределённая метка"!
Вот АСМ код:
Цитата

asm {
mov cx,8
mov dx,PRN_dat
cli
@read:
mov al,80h /* clc = 1 */
out dx,al
mov bx,wdel /* wait */
@d1:
dec bx
jnz @d1
mov dx,PRN_inp
in al,dx /* get data */
rcl al,1
rcl ah,1 /* ah - read result */
mov dx, PRN_dat
mov al,0 /* clc = 0 */
out dx,al
mov bx,wdel /* wait */
@d2:
dec bx
jnz @d2
loop @read
sti
not ah
mov al,ah /* return data */
}

Пожалуйста, помогите кто сможет, очень попрошайничаю!!!
  Вверх
cardinal
Дата 19.11.2005, 02:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 1
Всего: 99



@ убери...
Добавлено @ 02:53
А во-вторых out тоже например не прокатит...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Гость_Anton
Дата 19.11.2005, 12:08 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Собак поуберал, но теже самые эрроры и на теже самые метки smile
  Вверх
cardinal
Дата 20.11.2005, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 1
Всего: 99



Вот такое по крайней мере компилируется в VC++
Код

_asm {
mov cx,8
;mov dx,PRN_dat
cli
read:
mov al,80h /* clc = 1 */
out dx,al
;mov bx,wdel /* wait */
d1:
dec bx
jnz d1
;mov dx,PRN_inp
in al,dx /* get data */
rcl al,1
rcl ah,1 /* ah - read result */
;mov dx, PRN_dat
mov al,0 /* clc = 0 */
out dx,al
;mov bx,wdel /* wait */
d2:
dec bx
jnz d2
loop read
sti
not ah
mov al,ah /* return data */
}

@ убраны и переменные типа PRN_dat, PRN_inp и wdel закомментированы, т.к. задекларированы где-то выше. in и out насколько я знаю в windows не проходят...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Tohey
Дата 20.11.2005, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 20.11.2005

Репутация: нет
Всего: нет



Странно, на CBulder6 компилируется асм код (даже с @, in и out), но спотыкается на ДОСовской функции outport(), а на Turbo C++ IDE наоборот... И чем тогда компилить? smile
PM MAIL   Вверх
S.A.P.
Дата 20.11.2005, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: нет
Всего: 71



Tohey _asm - это фича компилеров. Более менее переносимый вариант - asm( "тут какой - то асм код" ), наверное. Хотя там вроде AT синтаксис, деревянный smile .

Это сообщение отредактировал(а) Perchilla - 20.11.2005, 15:12
PM MAIL   Вверх
Tohey
Дата 24.11.2005, 18:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 20.11.2005

Репутация: нет
Всего: нет



Благодаря RusFaq.ru Я раздуплил!
Метки ставятся не в АСМе(как на Паскакле), а в наглую - в СИ!!!

Цитата

{
asm {
mov cx,8
mov dx, PRN_dat
cli
}
read:
asm {
mov al,80h
out dx,al
mov bx,wdel
}
d1:
asm {
dec bx
jnz d1
mov dx,PRN_inp
in al,dx
rcl al,1
rcl ah,1
mov dx,PRN_dat
mov al,0
out dx,al
mov bx,wdel
}
d2:
asm {
dec bx
jnz d2
loop read
sti
not ah
mov al,ah
}
}
smile
PM MAIL   Вверх
cardinal
Дата 24.11.2005, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 1
Всего: 99



И ты хочешь сказать, что все остальноэ работает? И out и in? Я просто не пробовал... Но метки у меня, помоему, и в асме проходили.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Pelmen
Дата 2.12.2005, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 21.11.2005

Репутация: нет
Всего: 1



cardinal
а в чем проблема?
нормальные асмовские команды
PM MAIL   Вверх
cardinal
Дата 2.12.2005, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 1
Всего: 99



Да чего то у меня в голове отложилось, что in и out использовать нельзя. А их испольховать можно вроде, но все равно например в Borland:
Цитата
Так как BASM не является полным ассебмлером, некоторые конструкции этого языка он не воспринимает. В этом случае Borland С++ будет выводить сообщение об ошибке.

http://www.unix.org.ua/bcpp/r75_3.htm


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.1761 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.