|
|||
Лабораторная работа №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.
|
|||
|