![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Ассемблер ⇐ ПредыдущаяСтр 2 из 2
Ассемблер - это программа, преобразовывающая исходный текст программы, написанной на языке ассемблера, в машинный код. Дополнительно ассемблер может создавать листинг программы с номерами строк, адресами переменных, операторами исходного языка и таблицей перекрестных ссылок символов и переменных, используемых в программе. Совместно с ассемблером используется программа, называемая компоновщиком (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) соответствует несколько команд языка ассемблера, так как ассемблер однозначно связан с машинным кодом.
|