Содержание лабораторной работы

Задачи, решаемые на ЭВМ, не сводятся к обработке отдельного элемента данных с помощью одной операции. Напротив, они требуют обработки многих элементов данных (например, массива или блока данных), которые занимают отдельные ячейки памяти. Программа может выполнять одну и ту же операцию над содержимым ячеек, причем выполнять ее многократно с помощью программных циклов.

Например, необходимо найти сумму ряда чисел. При этом задача состоит в том, чтобы осуществить суммирование нескольких чисел сразу. Эти числа могут представлять собой совокупности входных сигналов, находящихся под управлением системы, число изделий (или число сообщений), изготовленных (или принятых) за определенный промежуток времени. Предположим, что сумма не превышает 65535 и для ее хранения достаточно одной 16-битовой ячейки памяти.

В программе суммирования ряда чисел для Intel 80x86 использованы следующие исходные данные и обозначения:

0117 – адрес ячейки памяти, где указана длина массива.

cx - счетчик, указатель длины массива.

bx - адресный указатель данных.

ах - регистр-аккумулятор.

0119 - адрес ячейки памяти, где хранится первый элемент массива.

100 – адрес начала программы.

Таблица 2.

Программа сложения ряда чисел

Адрес Машинный код Мнемокод Мет­ка Комментарий
  BE1701 mov si,0117   Загрузка счётчика
  AD Lodsw  
  8BC8 Mov cx,ax  
  BB1901 Mov bx,0119   Загрузка адресного указателя
  2BC0 Sub ax,ax   Обнуление ax
010B   Add ax,[bx]   Сложение элемента массива с ax
010D   Dec cx   Уменьшение счётчика
010E   Je 0115   Сложение элементов закончено?
  83C302 Add bx,0002   Переход к следующему адресу
  EBF6 Jmp 010B   Организация цикла
  CD20 Int 20 M1 Окончание программы
        Данные
        Данные
011B       Данные
01D       Данные

Исходные данные см. Приложение 2.

В большинстве случаев точность вычислений, обеспечиваемая одной ячейкой памяти, недостаточна. Поэтому рассмотрим арифметику для чисел, занимающих несколько ячеек.Задача состоит в том, чтобы сложить два числа длиной более 16 бит каждое. Исходные числа располагаются в области памяти таким образом, что сначала идут младшие разряды, а затем более старшие. Полученную сумму необходимо поместить в те ячейки памяти, где хранилось первое число

В программе суммирования двух длинных чисел для Intel 80x86 использованы следующие исходные данные и обозначения:

0003 - длина чисел в битах;

cx - счетчик, указатель длины чисел;

di - адресный указатель первого слагаемого;

0115 - адрес ячейки памяти, где хранится младший байт первого числа;

si - адресный указатель второгослагаемого;

011B - адрес ячейкипамяти, где хранится младший байт второго числа;

100 - адрес начала программы.

Таблица 3.

Программа сложения длинных чисел

Адрес Машинный код Мнемокод Мет­ка Комментарий
  B90300 mov cx,0003   Загрузка счётчика
  BF1501 mov di,0115   Загрузка адресного указателя 1-го числа
  BE1B01 mov si,011B   Загрузка адресного указателя 2-го числа
  8B05 mov ax,[di] M1 Загрузка 1-го операнда в ax
010B   adc ax,[si]   Сложение
010D AB stosw   Запоминание результата сложения
010E   inc si   Увеличение si на единицу
010F   inc si   ­– “ – “ –
    dec cx   Уменьшение счётчика на единицу
  75F6 jne 0109   Организация цикла
  CD20 int 20   Окончание программы
  FF     Данные
  FF     Данные
  FF     Данные
  FF00     Данные
011A       Данные
011C       Данные
011E       Данные
        Данные

Исходные данные см. Приложение 3.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: