4.3. Оформить эту же программу в виде ассемблерного фрагмента в головной программе. Исходные данные и результат поместить в локальные переменные, описанные в головной программе.
Задания к лабораторной работе.
Исходные данные:
А = 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. Вычестьиз В значение О в двоично-десятичной виде
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 ;регистровый операнд в Ьх
mov aх, 100 ;непосредственный, операнд - константа
mov ax, table ;прямой, table = адрес операнда
mov ax, [bx] ;косвенно-регистровый;
;bx - адрес операнда
mov ax, [Ьх+2] ;по базе. bх+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);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.