Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ассемблерная вставка, регистр AL 
:(
    Опции темы
neic
Дата 15.4.2012, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Добрый день.

Есть код с ассемблерной вставкой:
Код

    char ah=0;
    int x=0;
    int y=0;

    _asm
    {
        gh:
        mov ah, dword ptr 00h
        int 16h
        mov x,AL
        mov y,ah
        cmp AH,44
        jb gh
        cmp AH,53
        jg gh
    }
    printf((char*)ah);
    return 0;


Ругается следующими ошибками:
Цитата

error C2443: конфликт размеров операндов


на все строчки которые содержат команду mov

Пробовал и char, и int. Не получается, не знаю какой ещё тип заюзать.
Регистр AL, как я почитал в интернете 1 байтовый, ну а int 4 байтовый, т.е. уже ошибка.

Мне нужно передать значение регистра AL в программу и вывести позиционный код и ASCII код.

Заранее спасибо.
PM MAIL WWW ICQ Skype   Вверх
disputant
Дата 15.4.2012, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



dword - это 4 байта. 
Попробуйте byte smile Впрочем (см. ниже) вам и это не надо.
Ну и потом - x и y у вас явно 32-битные, dword. Опять же несоответствие...

И - у вас программка под DOS? Есть у меня подозрение, что вам надо не 
mov ah, dword ptr 00h
а 
xor ah, ah - вы ж его просто обнулить хотите?

Вобщем, честно говоря, у меня осталось тягостное ощущение, что то, что вы хотите сделать, надо делать не совсем так, если не совсем не так...




Это сообщение отредактировал(а) disputant - 15.4.2012, 12:20
PM MAIL   Вверх
borisbn
Дата 15.4.2012, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

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



neic, в Си для этого есть kbnit() и getch()


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
volatile
Дата 15.4.2012, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

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



Цитата(neic @  15.4.2012,  12:11 Найти цитируемый пост)
        int 16h

Это же досовское прерывание. Вы это серьезно собираетесь в 32 битном приложении юзать?  smile 


PM MAIL   Вверх
disputant
Дата 15.4.2012, 15:10 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(borisbn @ 15.4.2012,  13:15)
neic, в Си для этого есть kbnit() и getch()

Ему надо еще и код клавиши, а это getch() не дает. Тут можно было бы воспользоваться чем-то типа int86().

Но то, что он ХОТЕЛ написать - это только в real mode... А то, что написал - вообще никуда...  smile

Добавлено через 59 секунд
Цитата(volatile @ 15.4.2012,  13:51)
Цитата(neic @  15.4.2012,  12:11 Найти цитируемый пост)
        int 16h

Это же досовское прерывание. Вы это серьезно собираетесь в 32 битном приложении юзать?  smile

Ну, если совсем строго - то BIOS'овое smile

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

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


 




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


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

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