![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Dimush |
|
|||
|
Unregistered |
Прошу прощения за ламерский вопрос. Только недавно занялся этим делом.
Вопрос в том как из C использовать код на ассемблере. Например у меня есть программа на ассемблере которая выводит курсор мыши: .model tiny .code org 100h ; COM-файл .186 ; для команды shr cx,3 start: mov ax,12h int 10h mov ax,0 int 33h mov ax,1 int 33h mov ah,0 int 16h mov ax,000Ch mov cx,0000h int 33h mov ax,3 int 10h ret end start Мне необходимо запустить ее из программы на C, и получить координаты курсора. Подскажите как сделать подобное, либо дайте ссылку где про это можно узнать. Спасибо. |
|||
|
||||
| Enflout |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 260 Регистрация: 22.5.2004 Репутация: нет Всего: 6 |
Прочитай эту статью
Там правда о билдере, но разницы это не несет. Удачи... Это сообщение отредактировал(а) Templar$ - 22.5.2004, 20:11 |
|||
|
||||
| Pikachu |
|
|||
|
Unregistered |
Сделай ассемблерную вставку:
_asm { ... } |
|||
|
||||
| Масяня |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 1.4.2004 Репутация: нет Всего: нет |
В VC++ asm-вставки ограничены, например, нельзя объявлять переменные через db, dd... и еще много чего там нельзя делать!
|
|||
|
||||
| Sined |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 19.5.2004 Репутация: 1 Всего: 0 |
Насколько я понимаю, код вообще не затачивается под винду, которая при вызове прерываний радостно дает по шапке,а и Turbo каком-нибудь все сделать вполне можно.
Другое дело, что проще было бы писать всю прогу на асме, вызывая какие-надо сишные функции. |
|||
|
||||
| shedon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1209 Регистрация: 17.1.2003 Где: Нижнiй Новгородъ Репутация: 4 Всего: 11 |
Если под дос, то всё можно нормально и зделать без вставок на асме.
-------------------- Programming is like sex: One mistake and you have to support it your lifetime |
|||
|
||||
| Anton Vatchenko |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 460 Регистрация: 21.5.2004 Репутация: нет Всего: -1 |
shedon
Это фигня с прерываниями на Си! Я думаю, просто использовать asm{} и почти все можно реализовать |
|||
|
||||
| shedon |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1209 Регистрация: 17.1.2003 Где: Нижнiй Новгородъ Репутация: 4 Всего: 11 |
Почему ?
Да не кто этого не запрещает, человеку нужен был код на си, я ег ему и дал... -------------------- Programming is like sex: One mistake and you have to support it your lifetime |
||||
|
|||||
| Sined |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 78 Регистрация: 19.5.2004 Репутация: 1 Всего: 0 |
shedon, это в мой огород камень.Твой код абсолютно корректен. Но я для проверки скомпилил исходники Dimusha--естессно не работают(A.V.) |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
shedon - спасибо то , что надо.
Вопросов больше нет спасибо за помощь, программа нужна была под дос. Sined - хм, каким образом? тот исходник который я привел выше рабочий, т.е. из под ассемблера компилируется и работает. Правда из под C заставить его работать следующим образом: void main() { asm { mov ax,12h int 10h mov ax,0 int 33h mov ax,1 int 33h mov ah,0 int 16h mov ax,000Ch mov cx,0000h int 33h mov ax,3 int 10h } } так и не удалось :-(. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |