Найти в Дзене

Работа программы на ассемблере - как проверить

Сегодня уже очень мало осталось людей, кто программирует на ассемблере (ну если не считать программистов микроконтроллеров, хотя и они уже переходят на С++, Паскаль и даже Python). Да что там программирует. Даже тех, кто просто интересуется - тоже осталось мало. Но зато это люди, которые хотят добраться до самой сути, понять, как же программный код в итоге преобразуется в машинные команды, которые и заставляют железо делать то, что нужно программисту. Правда, здесь мы снова сталкиваемся с рынком. Если таких людей мало, то и писать книги для них невыгодно - слишком малый будет тираж. Поэтому современных книг по ассемблеру практически нет. Обучаться приходится по старым книгам или таким же старым статьям и видео в интернете. И всё бы ничего (старый конь борозды не испортит), однако большинство из примеров, которые приведены в этих книгах, на современных компьютерах работать не будут. Так как же их тогда проверить на практике? Есть несколько способов: На этом всё. Подписывайтесь на канал,

Сегодня уже очень мало осталось людей, кто программирует на ассемблере (ну если не считать программистов микроконтроллеров, хотя и они уже переходят на С++, Паскаль и даже Python).

Да что там программирует. Даже тех, кто просто интересуется - тоже осталось мало. Но зато это люди, которые хотят добраться до самой сути, понять, как же программный код в итоге преобразуется в машинные команды, которые и заставляют железо делать то, что нужно программисту.

Правда, здесь мы снова сталкиваемся с рынком. Если таких людей мало, то и писать книги для них невыгодно - слишком малый будет тираж. Поэтому современных книг по ассемблеру практически нет. Обучаться приходится по старым книгам или таким же старым статьям и видео в интернете.

И всё бы ничего (старый конь борозды не испортит), однако большинство из примеров, которые приведены в этих книгах, на современных компьютерах работать не будут. Так как же их тогда проверить на практике? Есть несколько способов:

  • Эмулятор. Эмулятор - это программа, которая работает в современной ОС (такой, как Windows), и в которой можно выполнить программу на ассемблере. При этом с реальным железом программа на ассемблере напрямую не взаимодействует, и, соответственно, не причинит ему никакого вреда. Все команды ассемблера эмулируются. Среди известных мне эмуляторов мне больше всего нравится emu8086. Незаменимая вещь для начинающих изучать ассемблер. Правда, у неё есть один недостаток - она поддерживает только команды процессора 8086. Команды, которые появились в более поздних версиях процессоров INTEL (286, 386 и т.д.), не поддерживаются.
  • Вставка в язык высокого уровня. Многие современные средства разработки (такие, как Lazarus) позволяют в исходных кодах делать вставки на ассемблере. Несколько примеров можно найти здесь. Правда, таким образом вы сможете проверить далеко не всё. Например, не получится напрямую записывать данные в память и выполнять другие команды, которые взаимодействуют непосредственно с железом.
  • Виртуальная машина. Это тоже эмулятор, только он эмулирует целую операционную систему. Это будет посложнее, поскольку придётся поразбираться с установкой и настройкой виртуальной машины. Но зато здесь вы сможете опробовать почти все фишки ассемблера. Да, у виртуалок тоже могут быть ограничения. Однако они минимальны. Так что с виртуальной машиной вы сможете проверить все или почти все примеры из книг и ваши собственные программы на ассемблере. Один из самых известных таких эмуляторов - это DOSBox с уже предустановленной DOS. Но есть и другие, более продвинутые, например, VirtualBox (здесь DOS вам придётся устанавливать самостоятельно на виртуальный диск).
  • Настоящий компьютер. Наконец, самое 100-процентное средство - это найти где-нибудь старый компьютер с DOS. Наверняка его можно купить по объявлениям за копейки или даже получить даром. У меня, например, до сих пор хранится реликвия (рабочая!!!) - комп на 286 процессоре, с двумя дисководами 5 и 3 дюйма, в корпусе в горизонтальном исполнении. Правда, я уже не помню, когда я его доставал из кладовки )))

На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.