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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Специально для Дрон'а... 
:(
    Опции темы
Nos
  Дата 7.4.2004, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо за содействие и извиняюсь за назойливость, но

void main()
{
unsigned short Segment,Offset;
_asm{
mov ax, 0x35
int 0x21
mov Segment, es
mov Offset, bx
}
}
(цытирую Вас из темы C&Assembler) ...так во: компилятор выдаёт что "Offset is declared, but never used" чтоб это могло значить? Я работаю в Borland 5.02
PM MAIL   Вверх
DenDen
Дата 7.4.2004, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А я говорил,ГОВОРИЛ...(истерический смех, всхлипывания, приезд санитаров)
PM MAIL   Вверх
Дрон
Дата 7.4.2004, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


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

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



Увидел название темы и, мягко говоря, офигел. Как бы нам за такие дела от модератора не досталось... smile.gif

Значится, в 5.02 я проверить не могу, т.к. у меня там какие-то проблемы с ассемблером.
Проверил в версии 3.1. Выдало на строке mov Offset,bx ошибку Expression syntax.
Заменил Offset на Offs и всё заработало smile.gif
Видать не ндравиться компилятору такое имя переменной.

З.Ы. Оно-то заработало, только у меня в WinXP выдаёт:
"Процессор NTVDM обнаружил недопустимую операцию".

Это сообщение отредактировал(а) Дрон - 7.4.2004, 18:35


--------------------
Да. Именно так.
PM   Вверх
DenDen
Дата 7.4.2004, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Кстати, а компилер по шапке не надает, что ты в байт слово записываешь?
PM MAIL   Вверх
Дрон
Дата 7.4.2004, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Java-ненавистник :)
****


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

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



DenDen
Цитата
Кстати, а компилер по шапке не надает, что ты в байт слово записываешь?

Надаёт, конечно!
Только short -- это вообще-то 16 бит, т.е. это и есть слово. smile.gif

А ты всё хочешь у меня обшибку найти? smile.gif




--------------------
Да. Именно так.
PM   Вверх
Nos
Дата 7.4.2004, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я надеюсь модератор нас простит... это во-первых.
Во-вторых: я эту Б... таки заставил засунуть свои ошибки себе в Ж... поменяв имена переменных (до перепрочтения форума), но за то что Вы не забили на эту пакость опять таки - спасибо!
Ну и в третих: (тут нужно немного истории) в целях, так сказать образования, заставили меня из таблицы параметров харда (HDTP) узнать его ёмкость... Вроде не сложно: цылиндры, сектора, головки... перемножили - получили, НО... пишу я гибрит Си а Ассемблера, с прерываниями работаю на Ассме, на нём же присваиваю содержимое регистров каким-то переменным... перемножаю я эти переменные и вывожу на экран в Си... и вот тут начинается кака - какие-то бешенные значения вылазят, особенно кол-во головок... Так вот, вопрос: в какой системе счисления записана инфа в регистрах, как правильно её перемножить силами Си, и соответсвенно коректно выдать на экран?
Прога выглядит так:
#include <iostream.h>
void main()
{
unsigned int cyl;
unsigned int head;
unsigned int sec;
unsigned int tot;
asm mov ax, 0x3541;
asm int 0x21;
asm mov ax, es:[bx+0];
asm mov cyl, ax;
asm mov ax, es:[bx+0x2];
asm mov head, ax;
asm mov ax, es:[bx+0xE];
asm mov sec, ax;
tot=cyl*sec*head*512;
cout << "Cylinders = "<< cyl;
cout << "Heads = " << head;
cout << "Sectors = " << sec;
cout << "Total = " << tot;
}
писал на Билдере 3.1 Будте добры любезны!

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


Java-ненавистник :)
****


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

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



Боюсь, что тут я ничего не помогу -- не знаю я функций DOS совсем smile.gif

Могу только подсказать, что в строке:
tot=cyl*sec*head*512;
у тебя скорее всего получится чушь, т.к. результат умножений не уложится в 16-битный int, так что лучше объяви эту переменную (в смысле tot) как unsigned long.

В остальном же я ошибок не вижу...



--------------------
Да. Именно так.
PM   Вверх
Anklav
Дата 7.4.2004, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

... Вроде не сложно: цылиндры, сектора, головки... перемножили - получили, НО... пишу я гибрит Си а Ассемблера, с прерываниями работаю на Ассме, на нём же присваиваю содержимое регистров каким-то переменным... перемножаю я эти переменные и вывожу на экран в Си... и вот тут начинается кака - какие-то бешенные значения вылазят, особенно кол-во головок... Так вот, вопрос: в какой системе счисления записана инфа в регистрах, как правильно её перемножить силами Си, и соответсвенно коректно выдать на экран?

Я могу ошибаться, но помоему размер диска для DOS - не больше 8,4Гб. А т. к. 21h - это DOS прирывание, то и получается что-то непонятное
PM ICQ   Вверх
Nos
Дата 8.4.2004, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Оно-то ограничено, вот только я 35-й функцией обращаюсь к 41-у прерыванию (или что-то в этом роде)... короче суть в том, что я получаю доступ к таблице HDTP, которую формирует сам контролер, а ему до ком-порта ограничения... (я так думаю)
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.0471 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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