Машинный код, языки программирования низкого уровня, язык ассемблера, ассемблер
Машинный код – система команд конкретной вычислительной машины (процессора), которая интерпретируется непосредственно процессором. Команда, как правило, представляет собой целое число, которое записывается в регистр процессора. Процессор читает это число и выполняет операцию, которая соответствует этой команде.
Язык программирования низкого уровня (низкоуровневый язык программирования) – это язык программирования, максимально приближенный к программированию в машинных кодах. В отличие от машинных кодов, в языке низкого уровня каждой команде соответствует не число, а сокращенное название команды (мнемоника). Язык низкого уровня привязан к конкретному процессору.
Язык ассемблера – это низкоуровневый язык программирования, на котором вы пишите свои программы. Для каждого процессора существует свой язык ассемблера.
Ассемблер – это специальная программа, которая преобразует (ассемблирует, то есть собирает) исходные тексты вашей программы, написанной на языке ассемблера, в исполняемый файл (файл с расширением EXE или COM).
Debug: ассемблирование и дизассемблирование
Debug— Программа-отладчик, которую используют для проверки и отладки выполняемых файлов. Также иногда называют процесс отладки программы.
Ассемблирование - процесс трансляции программы с языка ассемблера в машинный код
Дизассемблирование- процесс и/или способ получения исходного текста программы на ассемблере из программы в машинных кодах.
Строка в ассемблере, исполняемый файл. Трансляция программ
Строка – в ассемблере это обычный тип данных с которым работает программа, ее ассемблер видит как набор байт.
Исполнимый файл (исполняемый) - это разновидность файла, содержимое которого является готовой к непосредственному исполнению компьютерной программой
Обычно исполняемый файл:
- получается в результате трансляции и компоновки объектных модулей;
- содержит машинные команды и/или команды операционной системы.
Трансляция - преобразование программы, представленной на одном из языков программирования, в программу на другом языке и, в определённом смысле, равносильную первой
Программы ассемблера для компьютеров с процессором Intel.Типы программ на языке ассемблера
Программы ассемблера для компьютеров с процессорами Intel:
1. Emu8086. Работает в Windows, хотя программы пишутся под DOS.
2. TASM – Турбо Ассемблер от фирмы Borland. Можно создавать программы как для DOS так и для Windows.
3. MASM – Ассемблер от компании Microsoft
4. Debug - обладает скромными возможностями, но имеет большой плюс - входит в стандартный набор Windows (изучен в 1 и 2 лабораторных работах).
Типы:
· Программа типа COM
· Программа типа EXE
Средства DOS вывода на экран в текстовом режиме
1.Функция DOS 02h — Записать символ в STDOUT с проверкой на Ctrl-Break
Ввод: | АН = 02h DL = ASCII-код символа |
Вывод: | Никакого, согласно документации, но на самом деле: AL = код последнего записанного символа (равен DL, кроме случая, когда DL = 09h (табуляция), тогда в AL возвращается 20h). |
2.Функция DOS 06h — Записать символ в STDOUT без проверки на Ctrl-Break
Ввод: | АН = 06h DL = ASCII-код символа (кроме FFh) |
Вывод: | Никакого, согласно документации, но на самом деле: AL = код записанного символа (копия DL) |
3.Функция DOS 09h — Записать строку в STDOUT с проверкой на Ctrl-Break
Ввод: | АН = 09h DS:DX = адрес строки, заканчивающейся символом $ (24h) |
Вывод: | Никакого, согласно документации, но на самом деле: AL = 24h (код последнего символа) |
4.Функция DOS 40h — Записать в файл или устройство
Ввод: | АН = 40h ВХ = 1 для STDOUT или 2 для STDERR DS:DX = адрес начала строки СХ = длина строки |
Вывод: | CF = 0, АХ = число записанных байт |
5.INT 29h: Быстрый вывод символа на экран
Ввод: | AL = ASCII-код символа |
51.
Технология получения исполняемого файла
52. !Трассировка программы: область применения. Ключи команд трансляции и компоновки
Трассировка —процесс пошагового выполнения программы. В режиме трассировки программист видит последовательность выполнения команд и значения переменных на данном шаге выполнения программы, что позволяет легче обнаруживать ошибки. Трассировка может быть начата и окончена в любом месте программы.