Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ASM_ПЗ111.doc
Скачиваний:
9
Добавлен:
09.09.2019
Размер:
131.58 Кб
Скачать

Федеральное агентство по образованию

РЫБИНСКИЙ ГОСУДАРСТВЕННЫЙ АВИАЦИОННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ имени П. А. СОЛОВЬЁВА

Факультет радиоэлектроники и информатики

Кафедра вычислительные машины, комплексы, системы и сети

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

по дисциплине

ПРОГРАММИРОВАНИЕ НА АССЕМБЛЕРЕ

ЗАДАЧА № 12

Пояснительная записка

Студент группы ВСб-10 Бароян А.Г.

Преподаватель Ломанов А.Н

Рыбинск, 2012

Содержание

1 Постановка задачи 3

2 Разработка программы без интерфейса 4

2.1 Спецификация задачи 4

2.2 Организация данных 5

2.3 Алгоритм подпрограммы 6

2.4 Описание подпрограммы 7

2.4.1 Подпрограмма нахождения произведения 8

2.5 Текст программы 12

3 Разработка программы с интерфейсом 15

3.1 Спецификация задачи 15

3.2 Организация данных 16

3.3 Алгоритм подпрограммы 17

3.4 Описание процедур 18

3.5 Текст программы 21

4 Вывод 29

Список литературы 30

1 Постановка задачи

Написать подпрограмму для вычисления Y=X1*X2, где X1 и Х2 -десятичные ASCII-числа повышенной точности. С помощью этой подпрограммы обработать две пары чисел, в первой из которых разрядность чисел 5 и 3, а во второй — 4 и 2. Для передачи параметров использовать стек.

2 Разработка программы без интерфейса

2.1 Спецификация задачи

Входными параметрами являются четыре массива байт, содержащие значения, заданные программистом в коде программы. Разрабатываемая программа должна перемножить две пары числе, и вывести два результирующих массива.

2.2 Организация данных

Разрабатываемая программа имеет следующий набор данных:

  • X1 DB 5,2,3,4 -первый входной массив (Х1);

  • X2 DB 3,6- второй входной массив (Х2);

  • Y1 DB 0,0,0,0,0,0- первый выходной массив байт Y1;

  • X3 DB 5,2,3,4,1-третий входной массив (Х3);

  • X4 DB 1,8,2- четвертый входной массив (Х4);

  • Y2 DB 0,0,0,0,0,0,0,- второй выходной массив байт Y2.

2.3 Алгоритм подпрограммы

Алгоритм верхнего уровня (подпрограммы) изображен на рисунке 1

Рисунок 1 - Блок-схема

алгоритма подпрограммы

2.4 Описание подпрограммы

В разрабатываемой программе, в варианте без интерфейса используются одна подпрограмма.

Которая рассчитывает произведение двух пар чисел с разрядностью четыре и два, а вторая с разрядностью пять и три, тем самым получая в качестве выходного результата два массива байт с разрядностью шесть и восемь.

2.4.1 Подпрограмма нахождения произведения

Программный код подпрограммы:

ProgramStart PROC

;---------------подготовка, загрузка адресов---------------

push bp

MOV bp,sp ;привязка к верхушке стека

MOV BX,[BP+4]

MOV DI,[BP+6]

MOV SI,[BP+8]

MOV CX,[BP+10]

;---------------внешний цикл---------------------------------

m1: MOV SI, [BP+8]

PUSH CX

PUSH BX

MOV Ah,dh

mov al,ah

mov ah,0

MOV CX,AX

xor ax,ax

m2:

;---------------умножение элементов-------------------------

MOV AL, byte ptr [SI]

MUL byte ptr [DI]

AAM

;---------------сложение младших элементов-------------------------

ADC AL, byte ptr [BX]

AAA

MOV byte ptr [BX],AL

MOV AL,AH

;---------------сложение старших элементов-------------------------

clc

ADC AL,byte ptr[BX-1]

AAA

MOV byte ptr [BX-1],AL

MOV DL,byte ptr [BX-1]

DEC SI

DEC BX

DEC CX

JNZ m2

DEC DI

POP BX

DEC BX

POP CX

DEC CX

JNZ m1

;---------------вывод результата по байтно-------------------------

mov dx,0

MOV BX,[BP+4]

MOV DL,byte ptr [BX]

MOV DL,byte ptr [BX-1]

MOV DL,byte ptr [BX-2]

MOV DL,byte ptr [BX-3]

MOV DL,byte ptr [BX-4]

MOV DL,byte ptr [BX-5]

MOV DL,byte ptr [BX-6]

MOV DL,byte ptr [BX-7]

POP BP

ret 8

Блок-схема подпрограммы для нахождения произведения изображена на рисунке 2.

Обнуление регистров

Загрузка начальных адресов

Умножение элементов

Загрузка в счетчик количества элементов обрабатываемого массива

Подготовка цикла

Нет

Декрементирование счетчика

Модификация адреса- источника

Да

Сложение младших элементов

Сложение старших элементов

Извлечение счетчика из стека

Декрементирование счетчика

Нет

Да

Вывод результата по байтно

Рисунок 2 - Подпрограмма для нахождения произведения

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]