Как стать программистом Как устроен компьютер. Что такое программа. Как написать свою программу. И многое другое узнаете вы из этой книги. Получить бесплатно! |
Ассемблер в Delphi и Lazarus
Главная / Ассемблер / Ассемблер и языки высокого уровня /
Лучшие книги по Ассемблеру
Сделал подборку не новых, но проверенных книг по программированию на языке ассемблера. Если вы также как и я любите погружаться на низкий уровень, в те закоулки мира программирования, куда не всем путь открыт, то посмотрите. Возможно, что-то вам понравится. Подробнее... |
В общем случае не очень часто, но всё-таки иногда приходится в исходный текст на языке высокого уровня вставлять кусочки кода на Ассемблере.
Практически все средства разработки позволяют это делать. Только в некоторых (таких как Turbo Pascal или Delphi) это делается “лёгким движением руки”, а в некоторых (таких как Dev-C++), что называется, “без бутылки не разобраться”.
В этой статье я расскажу, как вставить кусок кода на Ассемблере в исходный текст программы на Delphi и Lazarus.
Asm в Delphi
Начнём с Делфи. Здесь всё предельно просто. Вам надо только включить в то место исходного кода, где надо вставить код на ассемблере, ключевое слово asm, после которого вы пишите инструкции ассемблера как обычно - одна инструкция в одной строке. Завершается блок на ассемблере ключевым словом end и точкой с запятой.
Простой пример использования asm в Delphi в консольном приложении приведён ниже:
program asmtest; {$APPTYPE CONSOLE} var x : byte = 10; begin WriteLn('X = ', x); asm MOV AL, x //Поместить значение их Х в AL INC AL //Увеличить AL на единицу MOV x, AL //Поместить значение из AL в Х end; WriteLn('X = ', x); WriteLn('Press ENTER...'); ReadLn; end.
Разъяснять тут особо нечего. Только обратите внимание на комментарии - не забывайте, что это программа на Delphi, не на на Ассемблере.
Asm в Lazarus
Lazarus мало чем отличается от Делфи. Более того, разработчики Lazarus стремятся к максимальной совместимости с Делфи. Но есть объективные сложности и предпочтения. Если вы попробуете откомпилировать приведённый выше код в Лазарус, то получите сообщение об ошибке:
Fatal: Selected assembler reader not supported
Что можно перевести как “выбранный ассемблер не поддерживается”.
Почему?
Потому что по умолчанию Лазарус использует ассемблер AT&T, синтаксис которого отличается от привычного многим синтаксиса MASM/TASM. И чтобы компилятор начал понимать привычные инструкции MASM/TASM, надо с помощью специальной директивы компилятора указать нужный нам вид ассемблера.
Пример использования asm в Lazarus в консольном приложении приведён ниже:
program asmtest; {$ASMMODE INTEL} //!!!Использовать эту директиву var x : byte = 10; begin WriteLn('X = ', x); asm MOV AL, x //Поместить значение их Х в AL INC AL //Увеличить AL на единицу MOV x, AL //Поместить значение из AL в Х end; WriteLn('X = ', x); WriteLn('Press ENTER...'); ReadLn; end.
Ну что же, на этом всё. Не забывайте делиться ссылкой на статью с друзьями.
Вступить в группу "Основы программирования"
Подписаться на канал в РУТУБ Подписаться на рассылки по программированию |
Первые шаги в программирование
Главный вопрос начинающего программиста – с чего начать? Вроде бы есть желание, но иногда «не знаешь, как начать думать, чтобы до такого додуматься». У человека, который никогда не имел дело с информационными технологиями, даже простые вопросы могут вызвать большие трудности и отнять много времени на решение. Подробнее... |