Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Ассемблер






Ассемблер - это программа, преобразовывающая исходный текст программы, написанной на языке ассемблера, в машинный код. Дополнительно ассемблер может создавать листинг программы с номерами строк, адресами переменных, операторами исходного языка и таблицей перекрестных ссылок символов и переменных, используемых в программе. Совместно с ассемблером используется программа, называемая компоновщиком (linker) или редактором связей (linkage editor). Она объединяет отдельные файлы, созданные ассемблером, в единую исполняемую программу. В блок базовых программ входит также отладчик (debugger) позволяющий программисту пошагово выполнять программу, проверять и изменять содержимое памяти.

16-разрядные программы для реального режима адресации. Эти программы предназначены для выполнения в системе MS DOS либо в среде эмулятора DOS под Linux. Большинство примеров из этой книги можно адаптировать для выполнения в реальном режиме адресации. О программировании для реального режима адресации речь пойдет в многочисленных примечаниях книги. Кроме того, две главы полностью посвящены выводу текстовой и графической информации на экран монитора в режиме MS DOS.

32-разрядные программы для защищенного режима. Эти программы предназначены для запуска в окне текстового терминала (консоли) вереде операционной системы Microsoft Windows. С их помощью вы сможете отобразить на экране монитора как текстовые, так и графические данные.

Как язык ассемблера связан с машинным кодом? Во-первых, машинный код - это набор чисел, которые интерпретируются центральным процессором компьютера и определяют выполняемые им действия. Например, все процессоры Intel семейства IA-32 имеют совместимый между собой машинный код. Машинный код состоит исключительно из двоичных чисел. Во-вторых, язык ассемблера состоит из набора операторов, понятных человеку. Каждый оператор начинается с короткого мнемонического обозначения выполняемых процессором действий, например ADD (сложить), MOV (переслать), SUB (вычесть) или CALL (вызвать). Язык ассемблера однозначно связан с машинным кодом. Это значит, что каждый оператор языка ассемблера соответствует одной команде машинного кода.

Описание использованных в программе инструкций:

org 100h – директива указывает компилятору, что всю адресацию внутри кода программы нужно сместить на 100 байт.

mov А, В – копирует операнд В в операнд А;

int X – прерывание, приостанавливает выполнение текущей последовательности команд, и передает управление обработчику прерывания;

ret – выталкивает адрес из стека и помещает его в регистр ip;

start: - метка;

jmp X – изменяет текущее значение регистра ip на указанное в X (обычно метка);

msg db " Hello, World! $" – объявление массива типа байт, и его инициализация;

offset X – используется для получения адреса переменной или метки.

Код программы:

org 100h # смещает адресацию на 100 байт

jmp start # переходит к метке start

msg db " Hello, World! $" # объявление массива типа байт

start: # объявление метки

mov dx, offset msg # в регистр dx копируется адрес массива

mov ah, 09h # в регистр ah копируется число 09.

int 21h # вызов прерывания. Прерывание 21h с числом 09 в регистре ah выводит на

# экран символы с адреса, находящегося в регистре dx. Вывод выполняется,

# не будет встречен символ «$»

ret

Результат программы:


Рис. Программа «Hello, World!»

Вывод: В ходе лабораторной работы мы разобрали принцип работы программы emu8086, а так же разобрали код программы на языке assembler, которая выводит на экран «Hello, World!». По сравнению с языками высокого уровня, язык ассемблер очень отличается и не имеет сходств. Было так же замечено, что одному оператору языка высокого уровня(C++, Java) соответствует несколько команд языка ассемблера, так как ассемблер однозначно связан с машинным кодом.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.