Хелпикс

Главная

Контакты

Случайная статья





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



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

по курсу: «Проектирование и архитектура вычислительных систем»

 

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

Теоретическая часть:

Ассемблер — это программа, которая переводит текст с языка, понятного человеку, в язык, понятный процессору, то есть говорят, что она переводит язык ассемблера в машинный код.

 

Система программирования «Turbo Assembler» от фирмы Borland в основном предназначена для создания 16-битных программ для DOS и процессоров семейства Intel x86. Система включает в себя следующие основные компоненты

1)Компилятор языка ассемблер – tasm.exe – программа, предназначенная для компиляции файла написанного на языке ассемблера (.asm) в объектные модули

2)Компоновщик (linker) – tlink.exe – программа, предназначенная для сборки исполняемого файла из объектных модулей и библиотек. Основные два формата исполнимых файлов в DOS — .com и .exe. Файлы типа .com содержат только скомпилированный код без какой-либо дополнительной информации о программе. Весь код, данные и стек такой программы располагаются в одном сегменте и не могут превышать 64 килобайта. Файлы типа .exe содержат заголовок, в котором

Команды пересылки данных и способы адресации. Базовой командой

 

пересылки данных является команда MOV. Эта команда копирует содержимое

 

источника в приемник, источник не изменяется. Команда MOV действует аналогично операторам присваивания из языков высокого уровня, то есть команда MOV AX,BX присваивает регистру AX значение из регистра BX. В качестве источника для MOV могут использоваться: число (непосредственный операнд), регистр общего назначения, сегментный регистр или переменная (то есть операнд, находящийся в памяти). В качестве приемника — регистр общего назначения, сегментный регистр (кроме CS) или переменная. Оба операнда должны быть одного и того же размера — байт, слово или двойное слово. Нельзя выполнять пересылку данных с помощью MOV из одной переменной в другую, из одного сегментного регистра в другой и нельзя помещать в сегментный регистр непосредственный операнд — эти операции выполняют двумя командами MOV. Также в данной работе можно использовать стек – это специальным образом организованный участок памяти, используемый для временного хранения переменных, для передачи параметров вызываемым подпрограммам и для сохранения адреса возврата при вызове процедур и прерываний. Данные можно записывать и считывать только с вершины стека. Таким образом, если записать в стек числа 1, 2, 3, то при чтении они будут получаться в обратном порядке — 3, 2, 1. Для работы со стеком используются команды PUSH (поместить данные в стек) и POP (считать данные из стека). Способы адресации определяют доступ к данным. Часто используемые способы адресации:

-- регистровая

– MOV AX,BX

-- непосредственная

– MOV AX,2

-- прямая

– MOV AX,ES:0001

-- косвенная

– MOV AX,[BX]

-- по базе со сдвигом

– MOV AX,[BX+2]

-- по базе с индексированием

– MOV AX,[BX+SI+2]

3) Команды передачи управления – служат для организации вычислительного

процесса. Предлагается использовать следующие команды этой группы:

-- безусловный переход

– JMP

-- условный переход

– Jcc (где cc – условие перехода, обычно

используется после команды CMP)

-- цикл

– LOOP

-- прерывание

– INT

 

Практическая часть:

Пример выполнения задания 1

Задание №1.

Вариант1.  Найти прямой, обратный и дополнительный коды в однобайтовом представлении для числа -2310.

Вариант2.  Найти прямой, обратный и дополнительный коды в однобайтовом представлении для числа -1910.

 

1. Выполнить перевод числа в двоичную систему счисления

2. Запишем прямой код числа. Всего в однобайтовом представлении 8 двоичных разрядов. Первый слева разряд – знаковый: 1 – для отрицательного числа, 0 – для положительного. Оставшиеся 7 разрядов занимает число в двоичном представлении. Если в числе меньше 7 разрядов, оставшиеся дополняются нулями слева.

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

4. Дополнительный код отрицательного числа получается из обратного кода прибавлением к двоичному числу единицы (знаковый разряд в операции не участвует.

Пример.

-1110 =- (1011)2

1.0001011 – прямой код

1110100 – число -11 в обратном коде

+     1

_________

1110101 - число -11 в дополнительном коде

 

 

Задание №2.

Вариант 1.

Составить программу на ассемблере, которая находит сумму двух чисел. Числа передаются в регистрах.

Вариант 2.

Составить программу, которая находит сумму целых чисел арифметической прогрессии от 2 до N. N – передается в регистре.

Задание №3.

Вариант 1.

Разработать программу для нахождения скалярного двух векторов, с заданными координатами. Например, х = (1,2,3); y = (2,3,4)

(x,y) = (1*2+2*3+3*4) = 2 + 6 + 12 = 20

 

 

Вариант 2.

Разработать программу для сложения двух матриц.

 

Требования к отчету:

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

 

CUDA – библиотека для GPU (NVidea )

Linux C (Mpi) – параллельные программы

Этапы разработки ПО

1. Анализ бизнес процессов и разработка ТЗ

2. Разработка архитектуры программы.

3. Написание программного кода.

4. Тестирование

(Разработка через тестирование NUnit)

5. Передача заказчику бета-версии программы

6. Поддержка. Сопровождение или support.

 

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.