- •Московский авиационный институт
- •(Государственный технический университет)
- •“ Язык ассемблера ibm pc ”
- •Лабораторные работы
- •Указания по работе с турбо-ассемблером
- •Лабораторная работа № 1
- •Команды сложения и вычитания
- •Дополнительные команды
- •Команды умножения и деления
- •Команды преобразования длины
- •Задание
- •Лабораторная работа № 2
- •Близкие и далекие переходы.
- •Задание
- •Лабораторная работа № 3
- •Структура программы на языке Ассемблера
- •Описание процедур
- •Вызов процедур
- •Задание
- •Лабораторная работа № 4 Задание
_________________________
Московский авиационный институт
(Государственный технический университет)
“ Язык ассемблера ibm pc ”
Лабораторные работы
Алещенко А.С.
Москва
2009
Указания по работе с турбо-ассемблером
1. Для установления связи с системой набрать
имя пользователя STUDENT
и пароль (на экране не высвечивается)
S304
2. В директории ASM располагаются файлы, необходимые для работы с языком ассемблера, их можно просматривать и копировать для использования. На диске, выделенном в данной лаборатории (H), следует создавать собственные поддиректории в директории с номером группы, в которых можно располагать собственные файлы, скопированные или вновь создаваемые.
3. Вновь создаваемые файлы можно записывать с использованием любого редактора текстов.
4. Трансляция программы осуществляется набором команды в командной строке
TASM filname.asm (enter)
где filname – любое имя файла,после чего формируется файл с исходным именем filname и расширением .obj
5. Компоновка производится набором команды в командной строке
TLINK filname (enter)
после чего формируются файлы с исходным именем filname и расширениями .exe и .map
6. Выполнение программы производится после вызова файла filname.exe в окне Norton Comander.
7. Отключение окон Norton Comander (и их включение) производится одновременным нажатием Ctrl+O.
Лабораторная работа № 1
Цель работы: освоить программирование линейных участков программ с использованием арифметических команд языка Ассемблера.
Справочно-обучающая система ASML.
Справочно-обучающая система ASML содержит необходимую справочную информацию о командах Ассемблера IBM PC, представлении информации, форматах команд и основных конструкциях языка.
Справочно-обучающая система ASML вызывается через кнопку ПУСК или через файл ASML.exe в директории ASM. После запуска работа с окнами системы ASML начинается с нажатия кнопки включения меню программы F9.
Арифметические команды языка Ассемблера
Команды сложения и вычитания
Операции сложения и вычитания одинаково для знаковых и беззнаковых целых. Используются две формы операндов: байт или слово, причем операнды должны быть одинаковой длины. Операнды могут храниться в регистре или в ОП, но второй операнд может быть непосредственным.
Перечислим команды, относящиеся к группе команд сложения и вычитания:
а) ADD op1, op2 ; op1 := op1+op2
SUB op1, op2 ; op1 := op1 – op2
Сложение (вычитание) операндов в дополнительном двоичном коде, результат помещается на место первого операнда, второй операнд не изменяется.
Команда модифицирует регистр флагов FLAGS в соответствии с результатом операции, а именно:
ZF – нулевой рез-т,
SF – знак результата,
PF – флаг четности,
CF, AF – флаги переносов,
OF – флаг переполнения.
Примеры:
ADD AH, 12 ; AH := AH + 12 (1Б)
SUB z, BX ; z := z – BX (2Б)
б) ADC op1, op2 ; op1 := op1+op2+CF
SBB op1, op2 ; op1 := op1 – op2 – CF
Сложение (вычитание) операндов с переносом, образованным предыдущей командой.
Модифицирует флаги аналогично п.(а).
Например, если требуется сложить двойные слова, расположенные в парах регистров
(AX, BX) := (AX, BX) + (CX, DX),
причем AX, CX – старшие байты слагаемых,
BX, DX – младшие байты.
Сложение выполняется двумя командами:
ADD BX, DX
ADC AX, CX
в) Специальный случай сложения – изменение операнда на единицу.
INC op ; op:= op +1 инкремент
DEC op ; op:= op –1 декремент
г) Десятичная коррекция результата предыдущей операции. Это анализ флагов и преобразование результата сложения (вычитания) BCD-кодов. BCD-операнды обрабатываются обычными командами сложения и вычитания, а затем размещается команда десятичной коррекции.
Команда коррекции обрабатывает только однобайтовый операнд, находящийся в AL, поэтому команды десятичной коррекции операнда не имеют (подразумеваемая адресация).
DAA; коррекция после сложения
DAS; коррекция после вычитания.
Например,
ADD AL, y
DAA
SUB AL, DH
DAS
Примечание: BCD-операнды, представленные более, чем одним байтом должны обрабатываться побайтно.
Команды десятичной коррекции модифицирует флаги аналогично п.(а), за исключением флагов AF и OF.