Разработка алгоритма и программная реализация на эмуляторе микро-ЭВМ СМ-1800

Двоичная, восьмеричная и шестнадцатеричная системы счисления и перевод из одной в другую. Форматы хранения чисел с плавающей точкой. Позиционная система счисления. Подпрограмма вывода служебных слов и полученных данных. Альтернативные варианты решения.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 13.07.2014
Размер файла 920,9 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

1. Введение

Курсовой проект по дисциплине «Организация ЭВМ и систем» состоит из двух основных частей -- аналитической и практической. Это, соответственно, теория и непосредственно сам программный продукт. Вторая часть состоит из блок-схемы алгоритма с поясняющим текстом, листинга программы с комментариями и результатов ее тестирования.

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

Вариант №1.

1. Аналитическая часть

Подготовить для аналитической части реферативный материал на следующие темы:

с Двоичная, восьмеричная и шестнадцатеричная системы счисления.

с Правила переводов десятичных чисел в них и обратно.

с Форматы хранения чисел с плавающей точкой.

Числа для примеров в обзоре взять из второго пункта настоящего задания.

2. Практическая часть

Задача для разработки алгоритма и программной реализации на эмуляторе микро-ЭВМ СМ-1800.

Пользуясь программой Монитор занести в память ЭВМ, начиная с адреса 500016, следующий массив констант:

Адрес16

Константа16

5000

С1

5001

70

5002

FD

5003

A4

Будем рассматривать эти четыре байта как число в формате с плавающей точкой (1+8+23). (старший байт числа записан в старшем адресе!) Восьмиразрядный порядок имеет смещение pсм=12810. Двоичная двадцатитрехразрядная мантисса не содержит старшей единицы, получаемой в результате нормализации.

Составить программу, формирующую следующие 4 числа:

1. «Знак числа» в ячейке 600016 (однобайтное целое число «+» -00 и «-» -01),

2. «Знак порядка» в ячейке 600116 (однобайтное целое число «+» -00 и «-» -01),

3. Модуль порядка в ячейке 600216 (однобайтное целое число),

4. Мантисса, как трехбайтное целое число в ячейках (600316-600516). Старший байт записывается в старшем адресе!

Программу располагать в памяти с ячейки 400016.

2.

3. Аналитическая часть

3.1 Двоичная, восьмеричная и шестнадцатеричная системы счисления и правила перевода из одной в другую

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

Непозиционная система счисления -- система, в которой значение символа не зависит от его положения в числе системы. Например римская система.

Позиционная система счисления -- система, в которой значение символа зависит от его места в ряду символов (цифр), изображающих число. Это значение меняется в однозначной зависимости от позиции, занимаемой цифрой, по некоторому закону. Номер позиции называется разрядом. Позиционная система счисления характеризуется основанием.

Основание(базис) -- количество знаков или символов, используемых в разрядах для изображения числа в данной системе. Обозначим основание целым числом b>1. Тогда позиционная система счисления с основанием b будет также называется b-ричной (в частности, двоичной, троичной, десятичной и т. п.).

Целое число x в b-ричной системе счисления представляется в виде конечной линейной комбинации степеней числа b:

,где аk -это целые числа, называемые цифрами, удовлетворяющие неравенству 0 ? ak ? b-1, а каждая степень bk в такой записи называется разрядом (позицией), старшинство разрядов и соответствующих им цифр определяется значением показателя степени k. Обычно для ненулевого числа x требуют, чтобы старшая цифра an-1 в b-ричном представлении x была также ненулевой.

Двоичная система счисления -- это позиционная система счисления с основанием два. В этой системе счисления цифры записываются при помощи двух символов -- 0 и 1.

Основная система для информационных технологий и цифровой техники в особенности. Процессор любой вычислительной техники работает на этой системе счисления.

Между тем уже в XI веке китайский ученый и философ Шао Юн использует двоичную систему в текстах Книги Перемен.

А первое применение приходится аж на 200 год до н.э., тогда индийский математик Пингала разработал математические основы для описания поэзии с использованием двоичной системы счисления.

Рассмотрим, как формируются числа в двоичной системе.

В привычной для нас десятеричной системе счисления мы располагаем десятью знаками-цифрами (от 0 до 9). Когда счет достигает 9, то вводится новый разряд (десятки), а единицы обнуляются и счет начинается снова. После 19 разряд десятков увеличивается на 1, а единицы снова обнуляются. И так далее.

Двоичная система счисления аналогична десятеричной, за исключением того, что в ней участвуют не 10 символов, а всего 2. Как только разряд достигает предела (т. е. единицы) появляется новый разряд, а старый обнуляется.

0 - это ноль

1 - это один (и это предел разряда)

10 - это два

11 - это три (и это снова предел)

100 - это четыре

и т.д.

Преобразование двоичной системы в десятичную и обратно.

Для преобразования из двоичной системы в десятичную используют следующую таблицу степеней основания 2:

512

256

128

64

32

16

8

4

2

1

Точка, которая стоит после 1 называется двоичной точкой.

Возьмем для примера число 110001 в двоичной системе. Что бы его преобразовать в десятичную нужно выполнить следующие действия:

Таким образом, каждое следующее число умножается на двойку в степени на 1 выше и складывается.

Обратную операцию удобно выполнять методом «в столбик», но можно хоть в уме.

Для примера возьмем число 77, которое мы хотим перевести в двоичную систему.

Теперь выполним процесс его деления на 2:

77 / 2 = 38 (1 остаток)

38 / 2 = 19 (0 остаток)

19 / 2 = 9 (1 остаток)

9 / 2 = 4 (1 остаток)

4 / 2 = 2 (0 остаток)

2 / 2 = 1 (0 остаток)

1 / 2 = 0 (1 остаток)

Остатки на каждом шаге -- это и есть число 77 в двоичной системе счисления (1001101).

Восьмеричная система счисления.

Восьмеричная система счисления -- это позиционная система счисления с основанием 8. Для представления в ней используются числа от 0 до 7.

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

Перевод восьмеричной системы в десятичную и обратно.

Алгоритм действий аналогичен уже ранее рассмотренному в двоичной системе счисления.

Для перевода восьмеричного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания восьмеричной системы счисления на соответствующие цифры в разрядах восьмеричного числа.

Например, требуется перевести восьмеричное число 2357 в десятичное. В этом числе 4 цифры и 4 разряда ( разряды считаются, начиная с нулевого, которому соответствует младший бит). В соответствии с уже известным нам правилом представим его в виде суммы степеней с основанием 8:

23578 = (2·83)+(3·82)+(5·81)+(7·80) = 2·512 + 3·64 + 5·8 + 7·1 = 126310

Алгоритм обратных действий так же аналогичен ранее рассмотренному:

1. Делим десятичное число А на 8. Частное Q запоминаем для следующего шага, а остаток a записываем как младший бит восьмеричного числа.

2. Если частное q не равно 0, принимаем его за новое делимое и повторяем процедуру, описанную в шаге 1. Каждый новый остаток записывается в разряды восьмеричного числа в направлении от младшего бита к старшему.

3. Алгоритм продолжается до тех пор, пока в результате выполнения шагов 1 и 2 не получится частное Q = 0 и остаток a меньше 8.

Переведем, для примера, число 333610 в восьмеричную систему:

333610 : 8 = 41710

333610 - 333610 = 0, остаток 0 записываем в МБ восьмеричного числа.

41710 : 8 = 5210

41710 - 41610 = 1, остаток 1 записываем в следующий после МБ разряд восьмеричного числа.

5210 : 8 = 610

5210 - 4810 = 4, остаток 4 записываем в старший разряд восьмеричного числа.

610 : 8 = 010, остаток 0, записываем 6 в самый старший разряд восьмеричного числа.

В итоге получим -- 64108.

Шестнадцатеричная система счисления.

Шестнадцатеричная система счисления -- это позиционная система счисления с основанием 16.

Для отображения цифр используются следующие символы: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. То есть после обычных для десятичной системы счисления 0...9 идут латинские буквы A, B, C, D, E, F.

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

Так же в стандарте текста Юникод номер символа записывается в шестнадцатеричным виде, используя не менее 4 цифр.

Есть так же шестнадцатеричный стандарт записи цветов.

Для обозначения шестнадцатеричной системы в ассемблерах можно не только использовать нижний регистр (пример: A416), но и латинскую букву h (A4h).

Перевод из шестнадцатеричной системы счисления в десятичную и обратно.

Для примера возьмем число A4 из практической части задания.

Для перевода шестнадцатеричного числа в десятичное необходимо это число представить в виде суммы произведений степеней основания шестнадцатеричной системы счисления на соответствующие цифры в разрядах шестнадцатеричного числа.

A416 = 4·160+10·161 = 4·1+10·16= 4+160=16410

Соответственно для этого нужно помнить что А16=1010. Для этого можно пользоваться таблицей:

010

110

210

310

410

510

610

710

810

910

1010

1110

1210

1310

1410

1510

016

116

216

316

416

516

616

716

816

916

A16

B16

C16

D16

E16

F16

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

Переведем число 253 из десятичной в шестнадцатеричную систему.

25310 : 16 = 1510

25310 - 24010 = 1310, остаток 13 в виде D записываем в МБ шестнадцатеричного числа.

1510 делить уже не надо, поскольку этому числу и так соответствует F16.

Записав по начиная со старшего разряда получаем число из практической части -- FD16.

3.2 Форматы хранения чисел с плавающей точкой

Плавающая точка (плавающая запятая) -- форма представления действительных чисел, в которой число хранится в форме мантиссы и показателя степени. При этом число с плавающей запятой имеет фиксированную относительную точность и изменяющуюся абсолютную. Наиболее часто используемое представление утверждено в стандарте IEEE 754. Реализация математических операций с числами с плавающей запятой в вычислительных системах может быть как аппаратная, так и программная.

Экспоненциальная запись -- представление действительных чисел в виде мантиссы и порядка. Удобна при представлении очень больших и очень малых чисел, а также для унификации их написания.

,

где N -- записываемое число, М -- мантисса, n - основание показательной степени, р(целое) -- порядок.

Название «плавающая запятая» происходит от того, что запятая в позиционном представлении числа (десятичная запятая, или, для компьютеров, двоичная запятая -- далее по тексту просто запятая) может быть помещена где угодно относительно цифр в строке. Это положение запятой указывается отдельно во внутреннем представлении. Таким образом, представление числа в форме с плавающей запятой может рассматриваться как компьютерная реализация экспоненциальной записи чисел.

Стандарт IEEE -- Институт инженеров по электротехнике и электронике (англ. Institute of Electrical and Electronics Engineers) (I triple E -- «Ай трипл и»), международная некоммерческая ассоциация специалистов в области техники, мировой лидер в области разработки стандартов по радиоэлектронике и электротехнике.

Итак, IEEE разработал международные стандарты, которые описывают представление чисел с плавающей запятой:

с Стандарт ANSI/IEEE 754:1985 определяет требования к реализации двоичной плавающей арифметике.

с Стандарт ANSI/IEEE 854:1987 обобщает прежний стандарт, допуская дополнительно, кроме двоичного, десятичное основание представлений мантиссы и экспоненты и произвольную длину машинного слова.

Позднее требования этих стандартов были отражены в стандарте IEC 60559:1989.

Стандарты, помимо форматов представления, описывают также основные арифметические действия, операции вычисления остатка от деления, квадратного корня, преобразования из двоичного представления в десятичное и наоборот.

В большинстве современных платформ, таких как Intel реализована плавающая арифметика, соответствующая стандарту IEC 60559.

Стандарты IEEE определяют следующие форматы хранения вещественных чисел:

с С простой точностью (соответствует типам real*4 в языке Фортран и float в С)

с с двойной точностью (соответствует типам real*4 в языке Фортран и double в С)

с с расширенной точностью (соответствует типам real*10 и более в языке Фортран и long double в С)

Число в представлении с простой точностью занимает 32 двоичных разряда: 23 разряда занимает мантисса и 8 разрядов отведено для порядка. Старший разряд является знаковым.

Числа с плавающей точкой хранятся в нормализованном виде:

с В нормализованной форме точка расположена перед первой значащей, то есть, отличной от нуля цифрой мантиссы.

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

Мантисса нормализованного числа, если она не равна нулю, принадлежит диапазону [0.5, 1), в общем случае:

Порядок задается в формате с избытком (смещением) -- истинное значение порядка увеличивается на 127, сумма всегда положительна. Фактическое значение порядка находится в промежутке от -126 до +127. Основанием является 2.

Младший бит мантиссы в формате с простой точностью представляет значение 2-24 (примерно 10-7), что соответствует 7 значащим цифрам десятичного представления.

Значащие цифры числа допускают точное представление. Следующие значения имеют одинаковое (равное четырем) число значащих цифр: 3.142, 0.003142, 3.142е3.

В формате с простой точностью не имеет смысла хранить значения, содержащие более 8 десятичных разрядов мантиссы. Минимальное значение порядка -126 определяет минимальное по модулю, отличное от нуля, машинное число (около 1.17х10-38). Максимальное значение порядка составляет 127, что приблизительно соответствует значению 1.70х1038.

Число в представлении с двойной точностью занимает 64 двоичных разряда, из которых 52 разряда отводятся мантиссе и 11 разрядов порядку.

Для чисел с двойной точностью в десятичной системе диапазон значений составляет 2.22х10-308 до 1.79х10308

Количество значащих цифр и пределы изменения в этом случае больше, чем в формате с простой точностью (до 16 значащих цифр).

Расширенный формат используется для повышения точности промежуточных результатов вычислений. Диапазон значений от 3.4х10-4932 до 1.2х104932.

Рассмотрим полученные знания на примере числа, заданного в моем варианте курсового проекта:

C1 70 FD A4

11000001

1110000

11111101

10100100

Где 1 в старшем разряде (стоит помнить, что старший разряд тут A4, т. е. с конца) -- знак числа, в нашем случае, как видно, отрицательный.

Последующие 8 разрядов -- это смещенный порядок (01001001), т. е. в нашем случае это 4916 и 7310. Теперь, что бы найти знак числа и модуль порядка, нужно отнять из этого числа порядок смещения p128. В 16-ричной системе это 4916-8016. Очевидно, что порядок отрицательный, поэтому, как и будет происходить в моей программе, делаем наоборот: 8016-4916=3716. Это и есть модуль порядка. Теперь необходимо вернуть мантиссе 1 в старший разряд (так называемый неявный бит). Но т. к. она была и так, то ничего не меняется, и мантисса остается FD 70 C1 (в памяти мантисса будет выглядеть наоборот, т. к., по условию задания, старший байт числа записывается в старшем адресе).

4. Практическая часть. Блок-схема

Подпрограмма вывода служебных слов и полученных данных.

4.1 Распределение памяти и листинг программы с комментарием

Адрес

Данные

Ассемблерный код

Комментарий

4000

11

LXI D, 6000h

Загрузка в пару регистров D,E адреса, по которому будет сохранен знак числа.

4001

00

4002

60

4003

21

LXI H, 5003h

Загрузка в пару регистров H,L адреса, по которому будет загружен старший байт числа.

4004

03

4005

50

4006

7E

MOV A,M

Загрузка старшего байта в аккумулятор.

4007

17

RAL

Смещение числа на 1 шаг влево, в CY появляется знак числа.

4008

DA

JC 4011h

Проверка знака числа. Если знак 1 -- переход по адресу 4011h.

4009

11

400A

40

400B

3E

MVI A,00

Загрузка 00 в аккумулятор. Число положительное.

400C

00

400D

12

STAX D

Запись знака числа из аккумулятора по адресу в D,E.

400E

C3

JMP 4014h

Прыжок на 4014h.

400F

14

4010

40

4011

3E

MVI A,01

Загрузка 01 в аккумулятор. Число отрицательное.

4012

01

4013

12

STAX D

Запись по адресу в D,E.

4014

13

INX D

Увеличить адрес в D,E на 1. Теперь 6001h.

4015

21

LXI H, 5002h

Запись в пару регистров H,L адреса, по которому будет загружено число.

4016

02

4017

50

4018

7E

MOV A,M

Записать число из 5002h в аккумулятор.

4019

17

RAL

Сдвиг числа влево. Теперь в CY находится недостающий бит смещенного порядка.

401A

23

INX H

Увеличить адрес в H,L на 1. Теперь 5003h.

401B

7E

MOV A,M

Перенести по адресу из H,L число.

401C

17

RAL

Сдвиг влево на 1 бит. Теперь в аккумуляторе смещенный порядок числа.

401D

FE

CPI 80h

Сравнить смещенный порядок с 80h (12810),т.е. сравнить со смещением.

401E

80

401F

47

MOV B,A

Перенести смещенный порядок в пару регистров B,C.

4020

DA

JC 4030h

Проверка знака порядка. Если 1, то прыжок на подпрограмму для отрицательного порядка. Если 0, то дальше, на подпрограмму для положительного порядка.

4021

30

4022

40

4023

3E

MVI A,00

Запись в аккумулятор 00, порядок положительный.

4024

00

4025

12

STAX D

Запись знака порядка 00 по адресу в D,E.

4026

78

MOV A,B

Начало подпрограммы для положительного порядка. Перенос порядка из пары регистров B,C в аккумулятор A.

4027

D6

SUI 80h

Вычитание из аккумулятора числа 80h, теперь в аккумуляторе модуль порядка.

4028

80

4029

11

LXI D, 6002h

Запись в пару регистров D,E адреса, по которому будет сохранен модуль порядка.

402A

02

402B

60

402C

12

STAX D

Запись по адресу в D,E модуля порядка из аккумулятора.

402D

C3

JMP 403Ah

Прыжок на подпрограмму получения мантиссы. Конец подпрограммы для положительного порядка.

402E

3A

402F

40

4030

3E

MVI A,01

Запись в аккумулятор 01, порядок отрицательный.

4031

01

4032

12

STAX D

Запись в ячейку памяти находящуюся по адресу в D,E содержимого аккумулятора.

4033

3E

MVI A, 80h

Начало подпрограммы для отрицательного порядка. Запись в аккумулятор смещения порядка -- 80h.

4034

80

4035

90

SUB B

Вычесть из смещения порядок числа.

4036

11

LXI D, 6002h

Загрузка в D,E адреса, по которому будет сохранен модуль порядка.

4037

02

4038

60

4039

12

STAX D

Запись модуля порядка по адресу в D,E. Конец подпрограммы для отрицательного порядка.

403A

21

LXI H, 5002h

Подпрограмма для получения мантиссы, общая для обоих знаков порядка. Загрузка в H,L адреса 5002h, по которому будет загружено число в аккумулятор. По сути, это число -- старший байт мантиссы, но еще без неявного бита.

403B

02

403C

50

403D

7E

MOV A,M

Перенос из 5002h в аккумулятор числа.

403E

F6

ORI 80h

Логическое сложение 80h и числа в аккумуляторе. Восстановление неявного бита мантиссы числа.

403F

80

4040

11

LXI D, 6005h

Загрузка в D,E адреса, по которому будет отправлен старший байт мантиссы из аккумулятора в ячейку памяти.

4041

05

4042

60

4043

12

STAX D

Запись старшего байта мантиссы.

4044

2B

DCX H

Уменьшение адреса в H,L на 1, теперь 5001h.

4045

7E

MOV A,M

Перенос следующего байта мантиссы в аккумулятор.

4046

1B

DCX D

Уменьшение адреса в D,E на 1, теперь 6004h.

4047

12

STAX D

Запись в ячейку памяти 6005h следующего байта мантиссы.

4048

2B

DCX H

Уменьшение адреса в H,L на один, теперь 5000h.

4049

7E

MOV A,M

Перенос байта из 5000h в аккумулятор.

404A

1B

DCX D

Уменьшение адреса в D,E на один, теперь 6003h.

404B

12

STAX D

Запись в ячейку памяти 6003h младшего байта мантиссы.

404C

01

LXI B, 504Fh

Загрузка адреса в B,C, по которому содержатся коды служебных слов «Знак числа».

404D

4F

404E

50

404F

CD

CALL 4Fh

Вызов подпрограммы вывода на экран.

4050

4F

4051

00

4052

21

LXI H, 6000H

Загрузка адреса в H,L, содержимое которого будет выведено (знак числа).

4053

00

4054

60

4055

7E

MVI A,M

Перемещение содержимого ячейки памяти в аккумулятор.

4056

CD

CALL 61h

Вызов подпрограммы вывода содержимого аккумулятора на монитор.

4057

61

4058

00

4059

CD

CALL 49h

Вызов подпрограммы перехода на новую строку.

405A

49

405B

00

405C

01

LXI B, 505Ah

Загрузка адреса в B,C с фразой «Знак порядка».

405D

5A

405E

50

405F

CD

CALL 4Fh

Вызов подпрограммы вывода на экран служебных слов.

4060

4F

4061

00

4062

23

INX H

Увеличение адреса в H,L на 1.

4063

7E

MVI A,M

Перенос данных из памяти в аккумулятор.

4064

CD

CALL 61h

Вызов подпрограммы вывода содержимого аккумулятора.

4065

61

4066

00

4067

CD

CALL 49h

Вызов подпрограммы перехода на новую строку.

4068

49

4069

00

406A

01

LXI B, 5067h

Загрузка в B,C адреса, который содержит фразу «Модуль порядка»

406B

67

406C

50

406D

CD

CALL 4Fh

Вызов подпрограммы вывода на монитор служебных фраз.

406E

4F

406F

00

4070

23

INX H

Увеличение адреса в H,L на 1.

4071

7E

MVI A,M

Перенос данных из памяти в аккумулятор.

4072

CD

CALL 61h

Вызов подпрограммы вывода содержимого аккумулятора.

4073

61

4074

00

4075

CD

CALL 49h

Вызов подпрограммы перехода на новую строку.

4076

49

4077

00

4078

01

LXI B, 5076

Загрузка в B,C адреса, содержащего фразу «Мантисса».

4079

76

407A

50

407B

CD

CALL 4Fh

Вызов подпрограммы вывода служебных фраз с новой строки.

407C

4F

407D

00

407E

23

INX H

Увеличение адреса в H,L на 1.

407F

7E

MVI A,M

Перенос содержимого памяти в аккумулятор.

4080

CD

CALL 61h

Вызов подпрограммы вывода содержимого аккумулятора на экран.

4081

61

4082

00

4083

23

INX H

Увеличение адреса в H,L на 1.

4084

7E

MVI A,M

Перенос содержимого памяти в аккумулятор.

4085

CD

CALL 61h

Вызов подпрограммы вывода содержимого аккумулятора на экран.

4086

61

4087

00

4088

23

INX H

Увеличение адреса в H,L на 1.

4089

7E

MVI A,M

Перенос содержимого памяти в аккумулятор.

408A

CD

CALL 61h

Вызов подпрограммы вывода содержимого аккумулятора на экран.

408B

61

408C

00

408D

C3

JMP 40h

Конец программы.

408E

40

408F

00

До старта программы в памяти находятся:

Адрес

Данные

Комментарий

5000

C1

Предзагруженные командой Монитора S 4 байта числа для обработки в программе. В данной таблице число из задания курсового проекта. Старший байт числа записан в старшем адресе.

5001

70

5002

FD

5003

A4

4000-404D

Программа для определения знака числа, знака порядка, модуля порядка и мантиссы.

504F-507E

Служебные слова (см. ниже)

После выполнения программы, в памяти появятся:

Адрес

Данные

Комментарий

6000

01

Знак числа. В нашем случае число отрицательное.

6001

01

Знак порядка. Порядок отрицателен.

6002

37

Модуль порядка. В нашем случае 3716 или 5510.

6003

C1

Младший байт мантиссы.

6004

70

Байт мантиссы.

6005

FD

Старший байт мантиссы. Записан, как видно, в старшем адресе.

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

Число16 (Начиная со ст. байта)

Знак числа

Знак порядка

Модуль порядка16

Мантисса (Начиная со старшего байта).

F6 C1 72 24

01

00

6D

C1 72 24

73 0C 11 77

00

00

66

8С 11 77

81 3E 2F CC

01

01

7E

BE 2F CC

22 13 42 74

00

01

3C

93 42 74

Проверим одно из тестируемых чисел вручную.

Возьмем:

81 3E 2F CC

10000001

00111110

00101111

11001100

Сразу видно, что знак числа 1 -- т. е. отрицательный. Порядок следующие 8 битов -- 00000010, т. е. 210. Если вычесть по модулю из 2 смещение порядка 128, то получим 126, что в 16-ричной системе есть 7E. Вернув мантиссе в первый бит старшего байта 1, получим 10111110, что есть BE. Таким образом мантисса будет выглядеть BE 2F CC. Таким образом, т. к. в программе вышли те же значения, можно сделать вывод, что она работает корректно, ч.т.д.

Служебные слова:

В программе были задействованы служебные слова (см. скриншот выше), закодированные в КОИ-7. Они расположены в ячейках памяти 504F-507E и разделены 00 между собой:

Ячейка памяти

Код КОИ-7

Символ

504F

33

З

5050

6E

Н

5051

61

А

5052

6B

К

5053

20

Пробел

5054

7E

Ч

5055

69

И

5056

73

С

5057

6C

Л

5058

61

А

Ячейка памяти

Код КОИ-7

Символ

505A

33

З

505B

6E

Н

505C

61

А

505D

6B

К

505E

20

Пробел

505F

70

П

5060

6F

О

5061

72

Р

5062

71

Я

5063

64

Д

5064

6B

К

5065

61

А

Ячейка памяти

Код КОИ-7

Символ

5067

6D

М

5068

6F

О

5069

64

Д

506A

75

У

506B

6C

Л

506C

78

Ь

506D

20

Пробел

506E

70

П

506F

6F

О

5070

72

Р

5071

71

Я

5072

64

Д

5073

6B

К

5074

61

А

Ячейка памяти

Код КОИ-7

Символ

5076

6D

М

5077

61

А

5078

6E

Н

5079

74

Т

507A

69

И

507B

73

С

507C

73

С

507D

61

А

4.

5. Использованные при проектировании средства

система счисление подпрограмма данные

При проектировании был использован ноутбук Acer Aspire 5530 с техническими характеристиками:

Процессор: AMD Athlon X2 Dual-Core 1900 MHz

Оперативная память: 2048 Мб

Видео-карта: ATI Radeon HD 3200 2048 Мб

Жёсткий диск: 160 Гб

Встроенная клавиатура и компьютерная мышь Genius.

Программное обеспечение на ноутбуке:

Microsoft Windows XP Professional 2002 SP3

OpenOffice Professional 3.3.0

Microsoft Visio Professional 2003

Выводы

Программа спроектирована в соответствии с заданием.

Альтернативные варианты решения, как и всегда в программировании, существуют, но считаю предложенный мной наименее русурсоёмким, а значит наиболее оптимальным. В процессе проектирования был задействован всего 1 флажок (CY) и минимальное количество ячеек памяти. Программа включает в себя 78 строк (байтов) шестнадцатеричного кода и может обработать любое эспоненциальное число в коротком формате.

В ходе проектирования программы, я ознакомился с таким важным понятием как мантисса и экспоненциальная запись. Скорость обработки чисел в таком формате -- непосредственный показатель быстродействия процессора, а значит один из факторов гонки технологий. Считаю это знание необходимым для программиста и инженера.

Список использованной литературы

1. Гиляров В.Н. МикроЭВМ СМ-1800 и её эмулятор на ПК: методические указания. - СПб.: СПбГТИ(ТУ), 2006.

2. Гиляров В.Н. Стандартное программное обеспечение. Монитор: методические указания. - СПб.: СПбГТИ(ТУ), 2006.

3. Гиляров В.Н. Программирование в кодах для микроЭВМ СМ-1800: методические указания. - СПб.: СПбГТИ(ТУ), 2006.

4. Фомин С.В. Системы счисления: лекции по математике. - М.: Наука, 1987.

5. Юров В.И. Assembler: Учебник для вузов. - СПб.: Питер, 2003.

Размещено на Allbest.ru


Подобные документы

  • Система счисления как способ записи (изображения) чисел. История появления и развития различных систем счисления: двоичная, восьмеричная, десятичная и шестнадцатеричная. Основные принципы и правила алгоритма перевода из одной системы счисления в другую.

    курсовая работа [343,1 K], добавлен 11.11.2014

  • Анализ двоичной, восьмеричной и шестнадцатеричной систем счисления и перевода десятичных чисел. Форматы хранения чисел с плавающей точкой. Программа для преобразования массива констант в формат числа с плавающей точкой на эмуляторе микро-ЭВМ СМ-1800.

    курсовая работа [266,9 K], добавлен 24.12.2013

  • Система счисления и перевод числа из одной системы в другую. Машинное предоставление информации. Числа с фиксированной точкой: прямой, обратный (инверсный) или дополнительный код. Программная реализация алгоритма и описание использованных процедур.

    курсовая работа [96,7 K], добавлен 20.11.2010

  • Понятие и классификация систем счисления. Перевод чисел из одной системы счисления в другую. Перевод правильных и неправильных дробей. Выбор системы счисления для применения в ЭВМ. Навыки обращения с двоичными числами. Точность представления чисел в ЭВМ.

    реферат [62,0 K], добавлен 13.01.2011

  • Примеры правила перевода чисел с одной системы в другую, правила и особенности выполнения арифметических операций в двоичной системе счисления. Перевод числа с десятичной системы в двоичную систему счисления. Умножение целых чисел в двоичной системе.

    контрольная работа [37,3 K], добавлен 13.02.2009

  • Определение понятия и видов систем счисления - символического метода записи чисел, представления чисел с помощью письменных знаков. Двоичные, смешанные системы счисления. Перевод из одной системы счисления в другую и простейшие арифметические операции.

    курсовая работа [232,6 K], добавлен 16.01.2012

  • Порождение целых чисел в позиционных системах счисления. Почему мы пользуемся десятичной системой, а компьютеры - двоичной (восьмеричной и шестнадцатеричной)? Перевод чисел из одной системы в другую. Математические действия в различных системах счисления.

    конспект произведения [971,1 K], добавлен 31.05.2009

  • Целые числа в позиционных системах счисления. Недостатки двоичной системы. Разработка алгоритмов, структур данных. Программная реализация алгоритмов перевода в различные системы счисления на языке программирования С. Тестирование программного обеспечения.

    курсовая работа [593,3 K], добавлен 03.01.2015

  • История систем счисления, позиционные и непозиционные системы счисления. Двоичное кодирование в компьютере. Перевод чисел из одной системы счисления в другую. Запись цифр в римской нумерации. Славянская нумерация, сохранившаяся в богослужебных книгах.

    презентация [516,8 K], добавлен 23.10.2015

  • Десятичная система счисления, ее происхождение и применение. Арифметические операции: сложение и вычитание, умножение и деление. Перевод чисел из одной системы счисления в другую. Применение систем: азбука Морзе, алфавитное кодирование, штрих-коды.

    курсовая работа [2,5 M], добавлен 12.01.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.