Пипл скажите плиз - зачем нужна функция 4c00h. Я понимаю что это означает завершение работы модуля и передача управления операционной системе. Но что будет если этого не сделать? И почему её нужно использовать?
Stalkwolf Эта функция заврершает текущий процесс, помещает код возврата в область теущих данных ДОС, освобождает память, сбрасывает на диск буферы, закрывает все дескрипторы. А так - принцип действия похож на iret. Извлечение адреса возврата из стека и дальний переход. В принципе можно завершить процесс и по-другому, но удобнее так.
_________________ I L.A.W. you, baby!
For a GNU dawn! For freedom!
Дальше текстура натягивается на куб.
Вобчем куб-то белый, а в углах граней голубая точка. Т.е. где-то промахиваюсь, или что-то не так делаю.
Кстати, virtualalloc отваливается по ошибке обращения к памяти.
И еще один вопрос, нужно ли использовать LocalLock? Примеры с аллоками, которые я нашел, обычно открывают файлы и используют LocalLock. В моём случае по барабану, работает и так и так, хотя для LocalAlloc return value is a handle, а у LocalLock - return value is a pointer to the first byte (это из билдеровского хелпа).
Member
Статус: Не в сети Регистрация: 26.10.2004 Откуда: СПб
S.Q.Lapp писал(а):
Кстати, virtualalloc отваливается по ошибке обращения к памяти.
Значит вызов неправильный, так быть не должно.
S.Q.Lapp писал(а):
И еще один вопрос, нужно ли использовать LocalLock?
Если при выделении памяти используется флаг LMEM_MOVEABLE, то LocalLOck нужен, если LMEM_FIXED, то не нужен, в этом случае сразу возвращается адрес выделенного блока. Т.к. LPTR это комбинация флагов, один из которых fixed, то LocalLock вообще нельзя использовать.
Member
Статус: Не в сети Регистрация: 17.10.2003 Откуда: Киев
#77
Редактор для тех, кто учится программировать на ассемблере под Дос, чтоб не мучаться с блокнотом и командной строкой. По умолчанию создает com-файлы, TASM и TD в архиве.
http://cp.people.overclockers.ru/cgi-bi ... me=asm.zip
Member
Статус: Не в сети Регистрация: 26.10.2004 Откуда: СПб
nickyoz Что именно, асм учить или виндовые приложения на нём делать?
virus Я начинал именно с винды, и узнавая как работает проц заодно изучил API-функции, а знать их очень полезно, в отличии от функций прерывания 21h, которые нафиг не нужны, ведь дос уже давно умер. Единственное что сложнее это на экран выводить.. хотя парой функций wsprintf и MessageBox можно сразу научиться пользоваться, а с тем как оконные приложения делать немного поразбираться придётся.
*Cofradia Intel*
Статус: Не в сети Регистрация: 02.09.2003 Откуда: Россия, г.Тверь
dragon
dragon писал(а):
ведь дос уже давно умер.
Мне нравится твоя наивность. До сих пор эксплуатируются компы на базе 486-х и до сих пор выпускают приложения под ДОС. А ты говоришь "давно умер". У нас на работе бухалтерия под ДОС и менять её будут только потому, что разработчики не способны её доработать под наши нужды (сеть, размеры обрабатываемых данных, работа с памятью). Программа учёта пациентов больницы, поставленная год назад - под ДОС. Сам сейчас написал небольшую учётную программу под ДОС.
Разумеется всё это не на асме. Языки работы с базами данных: Clipper, FoxPro, Clarion.
А изучать асм под ДОС мне тоже кажется более простым. И материалу побольше для изучения и сложностей с вызовами функций ДОС или БИОС меньше, чем с функциями API. Имхо. А что касается "пригодится-не пригодится", то изучайте тогда SQL, 1С или WEB-программирование. Это действительно пригодится больше. Зачем тогда асм?
_________________ Жизнь - штука вредная. От неё умирают.
Почётный участник *Cofradia Intel*
Member
Статус: Не в сети Регистрация: 26.10.2004 Откуда: СПб
IgLowy писал(а):
До сих пор эксплуатируются компы на базе 486-х и до сих пор выпускают приложения под ДОС. А ты говоришь "давно умер".
Это потому что людям лень оборудование обновлять и учиться писать под винду или линукс.. слава богу таких остаётся всё меньше и меньше.
IgLowy писал(а):
У нас на работе бухалтерия под ДОС и менять её будут только потому, что разработчики не способны её доработать под наши нужды (сеть, размеры обрабатываемых данных, работа с памятью). Программа учёта пациентов больницы, поставленная год назад - под ДОС. Сам сейчас написал небольшую учётную программу под ДОС.
Вот и причины, дос не позволяет обрабатывать больше 64 килобайта памяти за раз(нереальный режим не считается, не стабилен он) и оперативку с адресами > 1Mb(ну да himem.sys есть, но что-то мне подсказывает, что производительности его использования будет ничтожной по сравнению с нормальной 32-битной ОС), поэтому объемную бухгалтерию под дос вести это мягко говоря неудобно. Если переписать все вышеуказанные программы под винду, так чтобы код был качественный, быстрый и интерфейс удобный, это ни в какое сравнение с убогим досом не пойдёт. Сравнить хотя бы тот же фокс современный и старый досовский, по моему сразу всё ясно будет.
IgLowy писал(а):
А изучать асм под ДОС мне тоже кажется более простым. И материалу побольше для изучения и сложностей с вызовами функций ДОС или БИОС меньше, чем с функциями API. Имхо.
Проще только из-за вывода на экран. API-функции выглядят и запоминаются imho проще даже чем все эти прерывания.
IgLowy писал(а):
А что касается "пригодится-не пригодится", то изучайте тогда SQL, 1С или WEB-программирование. Это действительно пригодится больше. Зачем тогда асм?
Так я работаю не в этой области, мне ближе системное программирование и особенно реверсинг кода, чем и занимаюсь, а про 1C знаю что там используется ключик HASP, от которого в принципе не сложно её отучить
Member
Статус: Не в сети Регистрация: 14.03.2004 Откуда: Москва
dragon писал(а):
Что именно, асм учить или виндовые приложения на нём делать?
Виндовые приложения писать. Да и вызывать API функции. Тем более на этом гребоеном интеловском асме
dragon писал(а):
Это потому что людям лень оборудование обновлять и учиться писать под винду или линукс.. слава богу таких остаётся всё меньше и меньше.
А зачем? Зачем деньги тратить?
dragon писал(а):
Вот и причины, дос не позволяет обрабатывать больше 64 килобайта памяти за раз(нереальный режим не считается, не стабилен он) и оперативку с адресами > 1Mb(ну да himem.sys есть, но что-то мне подсказывает, что производительности его использования будет ничтожной по сравнению с нормальной 32-битной ОС),
Ой Дурасть какая... Все нормально. А работает - не трож
dragon писал(а):
Проще только из-за вывода на экран. API-функции выглядят и запоминаются imho проще даже чем все эти прерывания.
Боже мой. Ну зачем это надо? АСМ как язык уже ушел далеко и почти ничкому не нужено...
Есть inline asm function - вот это более или менее полезно
_________________ ФИЗТЕХ- рулез, ФАКИ - сила, Кванты тоже хорошо
Member
Статус: Не в сети Регистрация: 26.10.2004 Откуда: СПб
nickyoz писал(а):
Виндовые приложения писать. Да и вызывать API функции. Тем более на этом гребоеном интеловском асме
Иногда надо, например когда пишешь маленькое приложение, или кусок кода, критичный для производительности. А что касается API, то я только на нём и пишу, на VC++ интерфейс тоже на WinAPI делаю.
nickyoz писал(а):
ОйДурасть какая... Все нормально. А работает - не трож
Ну с такой логикой можно было вообще ни виндовса ни линуса и вообще ничего не создавать и до сих пор в досе сидеть. Сейчас уже вовсю 64-битные процы внедряются, а дос даже полностью потенциал 286-ого процессора использовать не может.
nickyoz писал(а):
АСМ как язык уже ушел далеко и почти ничкому не нужено...
Я например признаю только асм и C/C++ чистый(не builder), если хорошо владеть этими языками, можно написать что угодно и в результате будут получаться небольшие по объему качественные и быстроработающие приложения. К сожалению большинство сейчас пишет на дельфи, напихают в программу кучу глючных компонентов, напишут пять-десять строк кода и выпускают в продажу проги по 10 метров, которые на A64 FX-60 полминуты запускаются и вылетают каждые полчаса. Вот к чему прогресс идёт
Member
Статус: Не в сети Регистрация: 18.11.2002 Откуда: не вернуться
dragon это не прогресс, это программеры деградируют, каждый кто написал свой первый "Hello, World!" считает он мега программер затем покупает диплом, и как результат мы получаем глючные и тормознутые проги... (и это не только в России, это во всём мире так)
_________________ Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...
*Cofradia Intel*
Статус: Не в сети Регистрация: 02.09.2003 Откуда: Россия, г.Тверь
Извиняюсь за большой оффтоп, но приходится... dragon
dragon писал(а):
Это потому что людям лень оборудование обновлять и учиться писать под винду или линукс.. слава богу таких остаётся всё меньше и меньше.
Коллеги, вы судите по своему городу/предприятию и игнорируете реалии российской жизни. Извини за прямоту, но меня бесят высказывания в подобном стиле или стиле "инет доступен каждому". Вы бы съездили в деревни, где нет ни телефонной ни сотовой связи, а потом и рассуждали о лени. Суть в том, что на обновление парка из 30-ти машин нужно около 540 тыс рублей. Замена парка из 20-ти принтеров ещё около 96 тыс рублей. На новый сервер - 69 тыс. рублей. Итого 705 тыс рублей. В год мне на закупку техники выделено 200 тыс рублей. Значит заменить я всё это барахло смогу за 3,5 года. А ещё надо и новые рабочие места развёртывать. И не надо мне рассказывать, что руководство жалеет денег на технику. Просто больше денег оно выделить не может - это больница. Для них это и так большие затраты. А теперь представь, как на этом железе пойдут твои виндовские приложения. Потому и пишут приложения под ДОС, что в районных больницах ситуация ещё хуже. Так что поглядывайте иногда не только в новости в инете о передовых технологиях. И я уж не говорю о том, что особого смысла в задачах под Виндовс нет. Ресурсов ДОСа вполне достаточно. Или сеанса ДОСа под Виндовс.
dragon писал(а):
Вот и причины, дос не позволяет обрабатывать больше 64 килобайта памяти за раз(нереальный режим не считается, не стабилен он) и оперативку с адресами > 1Mb(ну да himem.sys есть, но что-то мне подсказывает, что производительности его использования будет ничтожной по сравнению с нормальной 32-битной ОС), поэтому объемную бухгалтерию под дос вести это мягко говоря неудобно. Если переписать все вышеуказанные программы под винду, так чтобы код был качественный, быстрый и интерфейс удобный, это ни в какое сравнение с убогим досом не пойдёт. Сравнить хотя бы тот же фокс современный и старый досовский, по моему сразу всё ясно будет.
Ты сильно ошибаешься: 1. ДОС позволяет использовать более 64КБ за раз. Например, в Clarion под ДОС ограничение 64К накладывается на размер массива, но его редко используешь при работе с базами. Также ограничение идёт на размер одного элемента списка, а самих элементов может быть до 65000. Это вполне достаточно для большинства задач. Более того. Если включить режим stream при работе с базой и учесть кеширование самих рабочих баз на локальной станции, то можно работать с самой базой со скоростью работы с оперативной памятью. А там количество записей достигает 2 в степени 32 (указатель - 4 байта). Я уже не говорю про языки типа C, которые умеют работать с heap-ом. 2. Приложения ДОС умеют работать с памятью выше 1МБ. Дело в том, что уже лет 10 досовские приложения умеют работать с extended memory и использовать защищённый 32-битный режим процессора. Я на том же Clarion под ДОС могу свободно использовать до 16МБ оперативки. И производительность подобной работы вполне приличная. Возможности при работе с памятью в FoxPro под ДОС Клариону не уступают. По этим причинам ДОС-приложения хорошо справляются с любой бухгалтерией, которая нужна пользователям. Переход на Виндовс при разработке программ вызван совсем не этими ограничениями. Основные причины: - отсутствие хороших визуальных средств разработки для большинства языков. Мне под ДОС известны только Clarion и FoxPro. Клиппер так нормальной средой и не обзавёлся. Визуальные среды под C и Паскаль появились только под Виндовс. - необходимость многие вещи под ДОС делать "ручками". Под Виндовс возможности библиотек гораздо больше, есть возможность использовать в качестве сервера приложений Word или Excel, имеется многозадачность. Даже возможности графического режима работы стали проявляться только сравнительно недавно при появлении дешёвых мониторов с большой диагональю. До этого текстовый интерфейс ничем не уступал графическому. А по опыту работы интерфейс Виндовс менее удобен при работе, чем интерфейс ДОС-задач. Обрати внимание на манеру работы операторов за хорошо вылизанными программами под ДОС - скорость их работы значительно выше, чем под Виндовс, из-за клавиш, которыми они пользуются. В ДОС часто используется дополнительная цифровая клавиатура и клавиши перемещения курсора и Enter. Работа при вводе цифр идёт одной рукой. Второй рукой пользователь отслеживает положение в бумажном документе. Виндовс принуждает использовать клавишу Tab, которая неудобна при наборе и тормозит работу оператора. И вылизка интерфейса под Виндовс будет заключаться в переназначении клавиш под иммитацию ДОС. Кстати, в своё время в Пенсионном фонде использовалась ДОС-программа на Clarion. Работала она в клиент-серверном режиме, а в качестве сервера использовался многопроцессорный комплекс IBM AS/400 со своей фирменной СУБД, для которой у Clarion была соответствующая библиотека. Приложение на локальной станции работало в защизенном реиме процессора и активно использовало прямой доступ к памяти в 32-битном режиме. Среда разработки обладала менеджерами приложения и баз данных, дизайнерами экранов и отчётов, генератором кода. Т.е. и средство разработки и получающееся приложение мало чем уступало многим нынешним задачам под Виндовс. Вот тебе и "убогий ДОС". Что касаемо FoxPro под ДОС и Виндовс - да нет там особой разницы. Интерфейс аналогичный, возможностей побольше за счёт уже упомянутого использования серверов приложений и многозадачности. Что там такого выдающегося? А наша досовская бухгалтерия как раз и не умеет работать за пределами 640К. И это вина конкретных программистов, которые не могут или не хотят использовать возможности выбранного ими же средства разработки.
dragon писал(а):
Проще только из-за вывода на экран. API-функции выглядят и запоминаются imho проще даже чем все эти прерывания.
Функция API - это функция. Воспоминания о работе с функциями под ДОС у меня не самые приятные. Много мороки со стеком при передаче параметров. А прерывания ДОС часто обходятся засылкой параметров в регистры и оператором int. Потому мне и кажется, что в ДОС на асме немного проще. А за счёт имён функций API и использования всяких именованных структур, пожалуй, текст под Виндовс будет более читаемым.
dragon писал(а):
Так я работаю не в этой области, мне ближе системное программирование и особенно реверсинг кода, чем и занимаюсь, а про 1C знаю что там используется ключик HASP, от которого в принципе не сложно её отучить
dragon писал(а):
Иногда надо, например когда пишешь маленькое приложение, или кусок кода, критичный для производительности.
Я тоже писал под ДОС именно критические куски кода на асме. Сами программы были на С. А потом пришлось перейти на СУБД-ориентированные языки. Слишком низкая производительность у С при разработке больших программ. Особенно при работе с базами. Под Виндовс это поправили, но мне смысла возвращаться на С сейчас уже нет.
dragon писал(а):
Ну с такой логикой можно было вообще ни виндовса ни линуса и вообще ничего не создавать и до сих пор в досе сидеть.
А зачем переходить на новое, если это ничего, кроме мороки с заменой техники и программ, не даёт? Новое ради нового?
dragon писал(а):
а дос даже полностью потенциал 286-ого процессора использовать не может.
Ну не правда. Под ДОС даже многозадачность сделали. Только поздно уже было.
dragon писал(а):
Я например признаю только асм и C/C++ чистый(не builder), если хорошо владеть этими языками, можно написать что угодно и в результате будут получаться небольшие по объему качественные и быстроработающие приложения. К сожалению большинство сейчас пишет на дельфи, напихают в программу кучу глючных компонентов, напишут пять-десять строк кода и выпускают в продажу проги по 10 метров, которые на A64 FX-60 полминуты запускаются и вылетают каждые полчаса. Вот к чему прогресс идёт
Я согласен с virus-ом. Это не прогресс. Куча "крутых программеров" на самом деле ничего толком не умеют. В масштабах страны рассылают кучи неотлаженных программ. И работают они плохо не потому, что написаны на Дельфи, а потому, что программистам не приходит в голову их отлаживать. Пришла программа для расчётов. Написана на Visual FoxPro. При нажатии на правую кнопку мыши на пустом месте экрана начинают срабатывать нажатия и переключения кнопок. Это вина разработчиков, а не средства разработки.
_________________ Жизнь - штука вредная. От неё умирают.
Почётный участник *Cofradia Intel*
Member
Статус: Не в сети Регистрация: 18.11.2002 Откуда: не вернуться
IgLowy писал(а):
Извини за прямоту, но меня бесят высказывания в подобном стиле или стиле "инет доступен каждому"
Мне тоже часто говорят, не парься купи себе "то и это и ещё чего-то" а то что я в отличии от них не зарабатываю по 2000$/мес как то в голову приходит далеко не всем
IgLowy писал(а):
Суть в том, что на обновление парка из 30-ти машин нужно около 540 тыс рублей. Замена парка из 20-ти принтеров ещё около 96 тыс рублей. На новый сервер - 69 тыс. рублей. Итого 705 тыс рублей.
Для комерческой фирмы это копейки, но многие забывают о том что компы работают не только в процветающих фирмах, но и в организациях с ограниченными финансовыми способностями... (к сожалению больницы входят в этот список)
_________________ Летели гуси-лебеди, а им навстречу - воробьи-пингвины и соловьи-страусы...
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения