- •!Производительность вс
- •Методы и средства повышения надежности эвм
- •Регистр флагов
- •Способы адресации
- •Команды пересылки данных, синтаксис команд.
- •Команды двоичной арифметики, синтаксис команд.
- •Команды логических операций, синтаксис команд.
- •Псевдокоманды
- •Общий вид строк программ на языке ассемблера.
- •Метка: назначение, синтаксис, правила именования, директива метки, вызов метки
- •Организация сегментов: сегменты и их значения, порядок следования и синтаксис
- •Оператор, операнд. Операторы адресации
- •Другие операторы(дополнительные) и их описание
- •Макроопределение
- •Прерывание dos
- •Символьный ввод/вывод, функции.
- •Прерывание и функции работы с мышью
- •Прерывание и функции системного таймера
- •Команды передачи управления
- •Команды безусловного перехода: синтаксис и область использования
- •Команды условного перехода: мнемоника и таблица условных переходов, операнд команд
- •Комментарии в программе
- •Модульное программирование
- •Концепция модульного программирования
- •Модуль, спецификация модуля
- •Разновидность модулей
- •Характеристики модуля:
- •Машинный код, языки программирования низкого уровня, язык ассемблера, ассемблер
- •Debug: ассемблирование и дизассемблирование
- •Строка в ассемблере, исполняемый файл. Трансляция программ
- •Программы ассемблера для компьютеров с процессором Intel.Типы программ на языке ассемблера
- •Средства dos вывода на экран в текстовом режиме
- •Способы моделирования (определения) в массиве
- •Клавиатурные функции dos и bios
- •Двухмерные массивы, вычисления адреса элемента
- •Машинная команда, части машиной команды
- •Директивы процессора (препроцессора)
- •Идентификаторы объектов программы, правила записи идентификаторов
- •Структура программы на языке ассемблера и ее описание
- •Организация цикла с помощью loop
- •Инкремент и декремент
- •Раздельная трансляция: назначение, варианты компоновки
- •!Высказывания, виды высказываний. Логические переменные и функции
- •Логические операции. Таблицы истинности логических операций
- •Заголовок модуля. Имена и идентификаторы в модуле
- •Структуры (тип данных) и объединения
Машинный код, языки программирования низкого уровня, язык ассемблера, ассемблер
Машинный код – система команд конкретной вычислительной машины (процессора), которая интерпретируется непосредственно процессором. Команда, как правило, представляет собой целое число, которое записывается в регистр процессора. Процессор читает это число и выполняет операцию, которая соответствует этой команде.
Язык программирования низкого уровня (низкоуровневый язык программирования) – это язык программирования, максимально приближенный к программированию в машинных кодах. В отличие от машинных кодов, в языке низкого уровня каждой команде соответствует не число, а сокращенное название команды (мнемоника). Язык низкого уровня привязан к конкретному процессору.
Язык ассемблера – это низкоуровневый язык программирования, на котором вы пишите свои программы. Для каждого процессора существует свой язык ассемблера.
Ассемблер – это специальная программа, которая преобразует (ассемблирует, то есть собирает) исходные тексты вашей программы, написанной на языке ассемблера, в исполняемый файл (файл с расширением 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 вывода на экран в текстовом режиме
Функция DOS 02h — Записать символ в STDOUT с проверкой на Ctrl-Break
Ввод:
АН = 02h
DL = ASCII-код символа
Вывод:
Никакого, согласно документации, но на самом деле: AL = код последнего записанного символа (равен DL, кроме случая, когда DL = 09h (табуляция), тогда в AL возвращается 20h).
Функция DOS 06h — Записать символ в STDOUT без проверки на Ctrl-Break
Ввод:
АН = 06h DL = ASCII-код символа (кроме FFh)
Вывод:
Никакого, согласно документации, но на самом деле: AL = код записанного символа (копия DL)
Функция DOS 09h — Записать строку в STDOUT с проверкой на Ctrl-Break
Ввод:
АН = 09h DS:DX = адрес строки, заканчивающейся символом $ (24h)
Вывод:
Никакого, согласно документации, но на самом деле: AL = 24h (код последнего символа)
Функция DOS 40h — Записать в файл или устройство
Ввод:
АН = 40h ВХ = 1 для STDOUT или 2 для STDERR DS:DX = адрес начала строки СХ = длина строки
Вывод:
CF = 0, АХ = число записанных байт
INT 29h: Быстрый вывод символа на экран
-
Ввод:
AL = ASCII-код символа
Т
ехнология
получения исполняемого файла
!Трассировка программы: область применения. Ключи команд трансляции и компоновки
Трассировка — процесс пошагового выполнения программы. В режиме трассировки программист видит последовательность выполнения команд и значения переменных на данном шаге выполнения программы, что позволяет легче обнаруживать ошибки. Трассировка может быть начата и окончена в любом месте программы.
Массив, характеристики массива
Массив — это последовательность элементов, доступ к которым осуществляется при помощи целочисленного индекса. Число элементов называется размером, или длиной, массива; способ нумерации описывается одномерным целочисленным массивом, называемым формой массива.
Массив характеризуется типом элементов, числом элементов и способом их нумерации.
Ранг и экстент массива. Сечение массива
Число измерений называется рангом массива; число элементов в измерении называется экстентом массива в данном измерении.
Сечение массива – группа элементов массива. Сечения массива очень эффективное средство, которое позволяет устранить многие циклы и повысить читаемость программы
Индексы массивов, виды массивов, получение адреса элемента в массиве
Индексы всегда следуют по порядку, и поэтому очевидным является использование «циклов» для работы с массивами. В языке ассемблера индексы массивов — это обычные адреса, но с ними работают особым образом. Другими словами, когда при программировании на ассемблере мы говорим об индексе, то, скорее, подразумеваем под этим не номер элемента в массиве, а некоторый адрес.
Массивы, доступ к элементам которых осуществляется при помощи одного индекса, называются одномерными массивами или векторами. Двухмерные массивы.
Адрес элемента: необходимо начальный (базовый) адрес массива сложить с произведением индекса (номер элемента минус единица) этого элемента на размер элемента массива: база + (индекс • размер элемента).
