Методические указания к лабораторным работам по курсу "Информатика", страница 2

Исходные данные:

А = 2438Н - двоично - десятичное число

В = 1329Н - двоично - десятичное число

С = -157  - двоичное слово со знаком

D = 100   - двоичный байт без знака

Вариант 1.

1. Переставить 1-ю и 3-ю тетрады в слове А

2. Сложить А и В в двоично-десятичном виде

3. Выделить 2-ю и 4-ю тетрады в слове В и сложить их,  как 2 двоичных числа

4. Умножить А на D,  в старшем слове выделить два  младших разряда и объединить по "ИЛИ" с результатом п.2

Вариант 2.

1. Переставить 2-ю и 4-ю тетрады в слове А

2. Сложить младшиебайты А и В в двоичном виде

3. Выделить  1-й  и  3-ю  тетрады в В и сложитьих как два двоично-десятичных числа

4. Умножить В на D, в младшем слове выделить 1-5 разряды и объединитьих по "И" с результатом п.3

Вариант 3.

1. Поменять местами 0-2 разряды младшего и старшего байтов в слова А

2. Сложить С и D в двоичном виде

3. Выделить  старший  байт А и младший байт В и сложить их как два двоично-десятичных числа

4. Разделить  А  на  D  и остаток от деления объединить по "исключающему ИЛИ" с результатом п.3 

Вариант 4.

1. Поменять местами 0-2 и 5-7  разряды  младшего  байта  в  слове А

2. Вычесть из В значение С в двоичном виде

3. Выделить  старшие байты А и В и сложитьих как два дво­ично-десятичных числа

4. Разделить В  на С и 3 младших разряда целой части объ­единить по "ИЛИ" с результатом п.1.

Вариант 5.

1. Поменять местами 0-2 разряди старшего байта и 5-7 разряды младшего байта в слове А

2. Вычестьиз В значение 0 в двоично-десятичной виде

3. Младший  и старший Байты А сложитьихкак два двоичных числа

4. Разделить  В на С и 3 старших разряда целой части объединить по "И" с результатом п.3

Вариант 6.

1. Поменятьместами 0-3 разряды старшего  байта  А  и  0-3 разряды младшего байта В

2. Вычесть из А значение В в двоичном виде

3. Младший  байт А и старший байт В сложить как два двоично-десятичных числа

4. Разделить  С на D и объединить по "ИЛИ" частное и оста­ток от деления. Выделить три младших разряда полученного числа.

5. Контрольные вопросы

1. Правила оформления ассемблерной программы

2. Директивы ассемблера

3. Форматы данных:  двоичные, двоично-десятичные, знаковые и беззнаковые представления чисел

4. Особенности команд умножения и деления

5. Стек и команды работы со стеком

Лабораторная работа № 2

ОБРАБОТКА МАССИВОВ  ДАННЫХ.  ИНТЕРФЕЙС С  ЯЗЫКАМИ ВЫСОКОГО УРОВНЯ.

1. Цель работы

Ознакомиться с методами адресации и командами передачи уп­равления, ознакомиться с правилами оформления ассемблерных про­цедур, вызываемых из Си-программ.

2. Краткие теоретические сведения

Ассемблер позволяет использовать различные режимы адресации для  операндов.  Ниже показано их использование на примере команды пересылки в регистр АХ:

table   dw 10 dup (0)        ;таблица слов

mov ax, bx                              ;регистровый операнд в Bх

mov ах, 100                             ;непосредственный, операнд - константа

mov ax, table                        ;прямой, table = адрес операнда

mov ax, [bx]                          ;косвенно-регистровый;

                        bx - адрес операнда

mov ax, [Ьх+2]                     ;по базе. Ьх+2 = адрес операнда

mov ax, table[di]             ;прямой с индексированием,

                       ;table+di = адрес операнда

mov ax, table[bx][di]      ;по базе с индексированием,

                       ;table+bx+di = адрес операнда

Ассемблер имеет средства  для  упрощения  программирования процедур, предназначенных для вызова из Си-программ. Они позво­ляют выполнить соглашения о характеристиках  сегментов,  модели памяти, правилах передачи параметров и использовании регистров.

Оформленная таким образом ассемблерная процедураимеет вид

    .MODEL SMALL,С

func PROC NEAR USES SI DI, a:WORD, b:WORD

    LOCAL X:WORD, y:WORD

RET

func ENDP

Функции func соответствует следующий прототип  в  Си-прог­рамме:

int func(int a, int b);

При входе в ассемблерную процедуру в стеке будут сохранены регистры SI и DI и размещены локальные переменные х и у. Доступ кэтим  данным  организуется с помощью адресации по базе с ис­пользованием регистра ВР.  При этом нет необходимости вычислять смещения вручную,  поскольку ассемблер автоматически генерирует макроподстановки типа