Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.11.2011, 18:54   #1
Namolem
Oo
Форумчанин
 
Аватар для Namolem
 
Регистрация: 10.10.2009
Сообщений: 350
По умолчанию Отличия DOS от WinConsole

переписываю программу, получил эксепшн: нельзя читать 0xFFFFFFF

Ошибка появляется при попытке очистить экран с помощью прерывания 10h (Video Service)

OS Windows 7 x64


Где мне можно почитать про различия между ДОС и тем, под что я пишу?
Namolem вне форума Ответить с цитированием
Старый 15.11.2011, 19:04   #2
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

DOS это 16-битная программа, предназначенная для режима реальных адресов. Windows работает в защищённом режиме, DOS-программы она запускает на виртуальной машине представленной процессом NTVDM.EXE.
Консольные программы это полноценные 32(64)-битные программы для windows. Отличаются они от других только тем что окон они не создают, а взаимодействуют с пользователем через консоль, с помощью API функций (ReadConsole, WriteConsole и т.д.)
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
haruhi вне форума Ответить с цитированием
Старый 16.11.2011, 08:06   #3
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

Цитата:
Сообщение от Namolem Посмотреть сообщение
Где мне можно почитать про различия между ДОС и тем, под что я пишу?
Перейди хотя бы по этой ссылке. http://programmersforum.ru/showthread.php?t=12343
vadimych вне форума Ответить с цитированием
Старый 16.11.2011, 08:25   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Отличаются они от других только тем что окон они не создают, а взаимодействуют с пользователем через консоль, с помощью API функций (ReadConsole, WriteConsole и т.д.)
отличаются только тем что у них изначально есть окно консоли(точнее хендлы вывода и ввода(про ошибки не помню, помоему тоже)), вот и все отличия по сути.(оно так же может создать окна и тп)
там помоему еще немного функций специфичных для консоли, но я как то не уверен что они строго для консольного приложения.

а вот в коде отличия тут скорее между платформами. в виндовом приложении нет прерываний(по сути они аналог апи), только вызовы АПИ функций.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 16.11.2011, 09:07   #5
haruhi
Форумчанин
 
Аватар для haruhi
 
Регистрация: 05.10.2011
Сообщений: 368
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
а вот в коде отличия тут скорее между платформами. в виндовом приложении нет прерываний(по сути они аналог апи), только вызовы АПИ функций.
ключевое отличие состоит в том что в DOS-приложениях код 16-битный, а в winconsole код 32-битный. плюс DOS-приложения представлены в формате MZ или COM, а виндовые в формате PE.

в общем, отличаются как небо и земля
Не стоит будить спящего Бога! (с) Меланхолия Харухи Судзумии
haruhi вне форума Ответить с цитированием
Старый 16.11.2011, 09:33   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в общем то говоря в ДОС приложении мог быть и 32 битный код(правда не только).
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 17.11.2011, 14:28   #7
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

IMHO -- основное отличие -- программы DOS используют функции прерываний 10h, 16h, 21h, 33h -- Консольные программы взаимодействуют с пользователем через консоль, с помощью API функций, хотя и здесь можно вызывать графические функции, создавать окна и т.п. теоретически можно обойтись без импорта вызывая некоторые функции API как int 2Eh, а также использовать int 2Ah - KiGetTickCount, int 2Bh - KiCallbackReturn, int 2Ch - KiSetLowWaitHighThread, int 2Dh - KiDebugService
Mikl___ вне форума Ответить с цитированием
Старый 17.11.2011, 19:11   #8
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Mikl___, отличия DOS от Windows не только в API функциях. Есть ещё куча других отличий: SEH, формат исполняемого файла, сегменты, модель памяти, импорты/экпорты, возможность создавать потоки и т.д.

haruhi правильно говорит, отличаются как небо и земля.
rpy3uH вне форума Ответить с цитированием
Старый 18.11.2011, 08:51   #9
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

rpy3uH
Основное отличие -- DOS однозадачная система, а если так, то зачем SEH, потоки и т.д.
Mikl___ вне форума Ответить с цитированием
Старый 21.11.2011, 17:17   #10
Fedor666
Пользователь
 
Регистрация: 22.02.2010
Сообщений: 71
По умолчанию

Под виндой в пользовательском режиме прерывания запрещены. Надобно использовать только API-функции.
Fedor666 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем отличия указателя self от this? romantik2011 PHP 3 31.07.2011 00:57
отличия С# от C++/CLR dampirik Общие вопросы .NET 13 14.12.2010 11:27
Отличия Си и VBA std№1211-29-31 Общие вопросы C/C++ 2 11.04.2010 16:30
отличия EXCEPT от UNION Neymexa Помощь студентам 1 24.03.2010 19:52
Найти отличия miss Microsoft Office Excel 17 03.08.2009 05:03