Реферат: Лабораторные работы по системному ПО
Деление слова на байт. Делимое находится в регистре АХ, а делитель в байте памяти или однобайтном регистре. Для деления остаток получается в регистре АН, а частное - в AL.
Деление двойного слова на слово. Делимое находится в регистровой паре DX:AX, а делитель - в слове памяти или в регистре. После деления остаток получается в регистре DX, а частное в регистре - АХ.
Данные, вводимые с клавиатуры, имеют ASCII - формат, например, буквы SAM имеют в памяти шестнадцатеричное представление 53414DH. С помощью следующих ассемблерных команд можно выполнять арифметические операции непосредственно над числами в ASSCII - формате:
ААА - коррекция для сложения ASCII кода;
AAD - коррекция для деления ASCII кода;
ААМ - коррекция для умножения ASCII кода;
AAS - коррекция для вычитания ASCII кода.
Эти команды кодируются без операндов и выполняют автоматическую коррекцию в регистре АХ. Коррекция необходима, так как ASCII – код представляет так называемый распакованный десятичный формат, в то время как компьютер выполняет арифметические операции в двоичном формате.
Например, сложение и коррекция кодируются следующими командами:
ADD AL, BL ; сложить числа в регистрах AL и-BL
ААА ; коррекция для сложения ASCII- кодов.
Если сжать число в ASCII - формате, сохраняя только правые цифры каждого байта, то получим BCD - формат (двоично - десятичный формат). Можно выполнять сложение и вычитание в BCD - формате. Для этого служат две корректирующие команды:
DAA - десятичная коррекция для сложения;
DAS - десятичная коррекция для вычитания.
Во многих прикладных программах используется табличная организация данных, например, имена, описания, размеры. Определение и использование таблиц включает одну новую команду ассемблера XLAT. Таким образом использование таблиц - это дело техники и применение знаний, полученных ранее. Для облегчения табличного поиска большинство таблиц определяются систематично, т.е. элементы таблиц имеют одинаковый формат, одинаковую длину и восходящую или нисходящую последовательность элементов. Пример описания таблицы:
MONTAB DB 'JAN', 'FEB', 'MAR', ..., 'DEC'.
Команда XLAT транслирует содержимое одного байта в другое предопределенное значение. С помощью команды XLAT можно проверить корректность содержимого элементов данных. Команда XLAT предполагает адрес таблицы в регистре ВХ, а транслируемый байт (например, поля ASCHO) - в регистре AL. Следующие команды выполняют подготовку и трансляцию байта:
LEA ВХ, XLTBL
MOV AL, ASCHO
XLAT.
Команда XLAT использует значение в регистре AL в качестве относительного адреса в таблице, т.е. складывает адрес в ВХ и смещение в AL.
Содержание задания
1. Имеются следующие данные:
DATAX DW 0148H
DW 2316H
DATAY DW 0237H
DW 4052H
Закодируйте команды для сложения:
а) слово DATAX со словом DATAY;
б) двойного слова, начинающегося по адресу DATAX , на слово DATAY.
2. Поле UNPAK содержит 01040705 в распакованном десятичном формате. Напишите цикл, который преобразует это содержимое в ASCII - формат, т.е. 31343735.
3. Поле ASCA содержит значение 313733 в ASCII - формате, а другое поле ASCB содержит 35. Напишите программу, перемножающую эти числа в ASCII - формате и записывающую произведение в поле ASCPRO.
4. Определите 3 отдельные связанные таблицы, содержащие следующие данные: