Как стать автором
Обновить

Комментарии 17

на языке ассемблера.

Что-о-о? Что за язык ассемблера? Может, вы еще с большой буквы хотели написать "ассемблера", думая, что это имя? Нет "языка ассемблера"! Есть "язык ассемблер"!

Что за язык ассемблер? Это язык текст на котором сам что-то «ассемблит»? Нет, это язык на котором пишется код для ассемблера, который, в свою очередь, собирает ваш код. Так что «язык ассемблера»
Своевременная статья. В закладки, однозначно.

Возвращает в молодость, так сказать. 640 Кб памяти хватит на всё!

В строке 6 используем прерывание 20h для завершения программы, этот способ не совсем корректный, но он простой и хорошо подходит для .com программ.

Всегда использовал обычный ret

Да, ret тоже вполне себе допустимый способ, внутри он использует все тот же int 20h, так как возврат идет на адрес PSP:0000, по которому лежит инструкция int 20h. Мне показался этот способ избыточным для дальнейшего описания его работы. Но упомянут он, безусловно, будет, так же как и функция 4ch превывания 21h.

При всей моей любви к MS-DOS, позволю себе усомниться в какой-либо практической пользе от изучения x86 ассемблера, особенно для реального режима.

Ассемблер он и в Африке ассемблер

Эмм, ну, не совсем. Как раз для каждого процессора он разный. В этом и смысл был изобретать языки более высокого уровня.

но они не поддерживают мою рабочую операционную систему Линукс, а разрабатываться хочется все-таки в удобстве

так-так-так.. Купим раритетный Москвич, но ездить будем на Тойоте. Компилировать тоже под Linux будем?

Сама статья - это набор каких-то допущений, много умных слов, предлагается тупо набить текст программы..

используем прерывание 20h

Ах ну да. Прерывание. Чтобы прервать. Нет уж, придумайте как объяснить все связно либо просто оставьте ссылку на самую лучшую книжку: Зубков С. В.

О, да, Зубков - сила! Сначала купил его книжку, а потом как-то даже пересёкся с ним в ФИДО! Как же давно это было... Кстати, есть она в формате CHM, но там не хватает некоторых глав (либо издание младшее - не знаю).

позволю себе усомниться в какой-либо практической пользе от изучения x86 ассемблера, особенно для реального режима.


Да вы оптимист. Похвально, конечно, но…

Так же как и реальный режим процессора, исключительно ради начальной загрузки до сих пор поддерживается текстовый режим экрана с возможностью из реального режима писать в видеопамять, PC Speaker, прерывание 9 для клавиатуры и много чего еще

А пацаны говорят, что js сейчас в моде.

Заграницв нам поможет: github.com/SuperIlu/jSH
/зануда вкл
Программа преобразующая исходный текст на языке ассемблера называется «транслятором», а не компилятором. Транслятор, в отличии от компилятора, не выполняет ни какой оптимизации получаемого кода. К примеру встретит транслятор 30 килобайт NOP-ов в исходнике, он их как есть перенесет в получаемый файл, а не оставит один NOP, а остальные выкинет. Проще говоря «тупо поставленная задача, тупо выполнена».
/зануда выкл

Технически, мнемоники языка ассемблера просто попытка придания смысла для опкода, чтобы облегчить программисту понимание машинного кода. Для некоторых несложных процессоров при достаточном опыте иногда этот промежуточный уровень становится лишним. Например, я в своё время ещё на кружке плотно имел дело с КР580ВМ80А (i8080), так через некоторое время заметил, что могу читать опкоды прямо по хексодампу.

Hidden text

0000 21 00 00 11 00 90 7E 12 23 13 7A FE C0 C2 06 00

0010 C3 00 C8

Но если с ванильным i8086 это ещё возможно, то с нынешним x86 (а тем более с x64) это маловероятно. Но часто используемые мнемоники вполне поддаются запоминанию.

Во времена, когда часто приходилось менять 75h на EBh - я тоже HEX довольно успешно читал. Хотя и HIEW'ом не брезговал. Потом навык был подутрачен. Сейчас патчу BIOS'ы для ноутов - VEN/DEV в видеомодулях ещё на глаз можно, а вот что-то посерьёзнее - без отладчика с визуализацией - никуда.

Совершенно верно, когда долго вглядываешься в бездну хекс с ассемблерным листингом, код начинает укоризненно смотреть на тебя.
Если серьезно, то во времена MSDOS хорошим тоном для наСильника было генерить файл листинга, для последующей оптимизации/ускорения узких мест.
Ну а коды 90 CD CB 9A 70-7F в подкорке сохранились.
Минутка ностальгии
image
НЛО прилетело и опубликовало эту надпись здесь
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории