Автор работы: Пользователь скрыл имя, 24 Ноября 2012 в 10:15, курсовая работа
Существуют системы позиционные и непозиционные. В непозиционных системах счисления вес цифры не зависит от позиции, которую она занимает в числе. Так, например, в римской системе счисления в числе XXXII (тридцать два) вес цифры X в любой позиции равен просто десяти. В позиционных системах счисления вес каждой цифры изменяется в зависимости от ее позиции в последовательности цифр, изображающих число. Любая позиционная система характеризуется своим основанием.
ВВЕДЕНИЕ 5
1. АНАЛИТИЧЕСКАЯ ЧАСТЬ 6
1.1 Двоичная система счисления 6
1.2 Правила перевода десятичных чисел в двоичную систему счисления и обратно. 6
1.3 Восьмеричная система счисления 7
1.4 Правила перевода десятичных чисел в восьмеричную систему счисления и обратно. 7
1.5 Шестнадцатеричная система счисления 8
1.5 Правила перевода десятичных чисел в шестнадцатеричную систему счисления и обратно. 8
1.7 Форматы хранения чисел с плавающей точкой. 9
2. ПРАКТИЧЕСКАЯ РАЗРАБОТКА 11
2.1 Блок-схема алгоритма 11
2.2 Распределение памяти листинг программа 12
2.3 Результата тестирования программы 15
3. ОПИСАНИЕ СРЕДСТВ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ 16
ВЫВОДЫ 18
СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ 18
Для перевода десятичного
числа в шестнадцатеричную
Пример. Число перевести в шестнадцатеричную систему счисления.
Для перевода шестнадцатеричного числа в десятичное необходимо его записать в виде многочлена, состоящего из произведений цифр числа и соответствующей степени числа 16, и вычислить по правилам десятичной арифметики:
При переводе удобно пользоваться таблицей степеней числа 16:
Таблица 3. Степени числа 16
n (степень) |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
|
1 |
16 |
256 |
4096 |
65536 |
1048576 |
16777216 |
Пример . Число перевести в десятичную систему счисления.
Представление чисел с плавающей точкой в общем случае имеет вид:
X = <знак>M*pt,
где М – мантисса
числа Х, t – порядок, p – основание
( обычно целая степень числа 2). Мантисса
и порядок представляются в системе
счисления с основанием p. Знак числа
совпадает со знаком мантиссы.
Порядок t может быть положительным или
отрицательным целым числом, определяет
положение точки в числе Х.
Для представления порядка применяют смещенный код.
Для перехода к смещенному коду от дополнительного кода необходимо инвертировать знаковый разряд кода.
Особенностью смещенного кода является то , что из [X1]см > [X2]см Þ X1 >X2.
Это упрощает сравнение чисел со знаком, сводя его к сравнению представляющих их кодов (чисел без знака). Чтобы сформировать смещенный код числа , сначала выбирается длина битовой комбинации, а затем в порядке счета в обычной двоичной системе последовательно записываются все возможные комбинации, имеющие установленную длину.
Кодовые значения, получаемые при использовании трехразрядных битовых комбинаций, приведены в таблице 4.
Таблица 4.
Значение |
Комбинация |
3 |
111 |
2 |
110 |
1 |
101 |
0 |
100 |
-1 |
011 |
-2 |
010 |
-3 |
001 |
-4 |
000 |
Для представления числа 0 выбирается битовая комбинация 100, с единицей в старшем разряде. Все последующие комбинации с единицей в старшем разряде будут представлять числа 1, 2, 3 соответственно. Предыдущие комбинации в обратном направлении используются для представления чисел -1, -2,-3, -4.
Пример представления в котором для хранения числа используется один байт (восьмиразрядный формат). Способ разделения байта представлен ниже.
Таблица 5
Знак |
Смещенный порядок |
Модуль мантиссы (двоичный) |
7 |
6..4 |
3 …0 |
Начало
Установка стека по адресу 8000h
Загрузка в аккумулятор значения по адресу 5002h — второй байт числа, сдвиг аккумулятора влево. Флажок су принимает значение первого разряда байта.
Загрузка в аккумулятор значения по адресу 5003h - первый байт числа, сдвиг аккумулятора влево. В конец байта помещается значение флажка су, во флажок су записывается первый бит — знак числа.
После двух сдвигов в аккумуляторе получается значение смещенного порядка. Запись его значения в регистр С.
Запись в длинный регистр H,L адреса 7000h для сохранения знака числа, хранящегося в су
Вычитание из аккумулятора 80h (смещение) для определения знака порядка. Если су=0, значит значение в аккумуляторе больше чем 80h, иначе произошёл заём, значит, знак порядка - «-».
Процедура записи в память значения 01h, если су=1 или 00h, если су=0.
Процедура записи в память (7001h) значения 01h, если су=1 или 00h, если су=0.
cy=1 (определение модуля порядка)
А
B
Да
Нет
1
2
3
4
5
6
7
8
9
10
A=80h-A - значение аккумулятора меньше 80h
11 12
A=A-80h - значение аккумулятора больше 80h
Запись значения аккумулятора в память (7002h)
13
Загрузка в аккумулятор
14
Загрузка в аккумулятор
15
Запись аккумулятора в ячейку с адресом 7005h, перезапись ячеек памяти 5000h и 5001h соответственно в ячейки 7004h и 7003h - мантисса
16
Вывод на экран значения ячеек 6001h-6005h - результата работы программы
17
Конец
18
1. Проиллюстрируем, как выполняется получение знака числа и смещенного порядка в блоках 3 и 4. Для этого возьмём числа из примера: 84h и 0Dh. Запишем в аккумулятор число 0Dh:
су |
||||||||||
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
После сдвига в аккумуляторе будет записано число 00011011, а в су 0. Дальше проделаем эти же операции с числом 84h.
су |
||||||||||
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
После этих преобразований в су попадёт значение 1, а в конец числа пойдёт 0, хранящийся до этого в су. И в итоге в мы получим смещённый порядок 00010000, записанный в аккумуляторе и знак числа, хранящийся в су.
2. Логическое сложение второго байта числа с 80h, применяемое в 14 блоке, обязательно даст первый разряд =1. Логическое сложение 0 и 1 даёт 1 и логическое сложение 1 и 1 даёт 1. Так что полная двадцатичетырехразрядная мантисса будет записана в трех младших байтах.
3. Блоком №16 на экран выводится следующая информация:
Знак числа: (значение из ячейки 7000h)
Знак порядка: (значение из ячейки 700lh)
Модуль порядка: (значение из ячейки 7002h)
Мантисса: (значение из ячеек 7005h, 7004h, 7003h).
Листинг программы
Адрес16 |
Данные16 |
Код Ассемблера |
Комментарий |
4000 4003
4006
4007
400A
400B
400C
400F
4012
4014
4015
4018 401B
401C
401E 4021 4023
4024
4025
4026
4029 402B
402E 402F
4032
4033 4034
4037
4038
4039
403C 403F 4042 4043 4046 4049
404C 404F
4050 4051
4054 4057
405A 405D
405E 405F
4062 4065
4068 406B 406E 406F 4072 4073
4074 4077
4078
4079 407С |
31 00 80 ЗА 02 50
17
ЗА 03 50
17
4F
21 00 70
CD 00 41
FE 80
23
CD 00 41
DA 21 40 79
D6 80
C3 24 40 3E 80 91
23
77
3A 02 50
F6 80 21 05 70
77 3A 01 50
2B
77 3A 00 50
2B
77
01 0B 41
CD 4C 00 21 00 70 7E CD 61 00 CD 49 00 01 18 41
CD 4C 00 23
7E CD 61 00
CD 49 00 01 27 41
CD 4C 00 23
7E CD 61 00
CD 49 00 01 37 41
CD 4C 00 21 05 70 7E CD 61 00 2B 7E
CD 61 00 2B
7E
CD 61 00 C3 80 00 |
LXI SP, 8000h LDA 5002h
RAL
LDA 5003h
RAL
MOV C,A
LXI H,7000h
CALL 4100h
CPI 80h
INX H
CALL 4100h
JC 4021h MOV A,C
SUI 80h
JMP 4024h MVI A,80h SUB C
INX H
MOV M,A
LDA 5002h
ORI 80h LXI H,7005
MOV M,A LDA 5001h
DCX H
MOV M,A LDA 5000h
DCX H
MOV M,A
LXI B,410Bh
CALL 4Ch LXI H,7000h MOV A,M CALL 61h CALL 49h LXI B,4118h
CALL 4Ch INX H
MOV A,M CALL 61h
CALL 49h LXI B,4127h
CALL 4Ch INX H
MOV A,M CALL 61h
CALL 49h LXI B,4137h
CALL 4Ch LXI H,7005h MOV A,M CALL 61h DCX H MOV A,M
CALL 61h DCX H
MOV A,M
CALL 61h JMP 80h |
Создание стека с адреса 8000h Загрузка в аккумулятор числа из адреса 5002h Сдвиг аккумулятора влево для сохранения в су значения первого бита Загрузка в аккумулятор числа из адреса 5003h Сдвиг аккумулятора влево для сохранения знака числа и смещенного порядка Сохранение смещённого порядка в регистре С Присваивание H,L значения 7000h - адрес для сохранения Вызов подпрограммы для сохранения в ячейке 7000h знака числа - 00-«+» или 01-«-» Вычитание из аккумулятора 80h для определения знака порядка Увеличение H,L на единицу. Новое значение адреса для сохранения - 7001h Вызов подпрограммы для сохранения знака порядка Прыжок по адресу 402lh, если су=1 Запись регистра С (смещенный порядок) в аккумулятор Вычитание из аккумулятора 80h - определение модуля порядка Безусловный переход по адресу 4024h Запись в аккумулятор 80h Вычитание из 80h значения смещенного порядка - получение модуля порядка, если он меньше величины смещения Увеличение H,L на 1. Новый адрес для сохранения - 7002h Запись значения модуля порядка в ячейку с адресом 7002h Загрузка в аккумулятор Добавление старшей единицы к мантиссе Установление адреса 7005h для сохранения старшего байта мантиссы Сохранение в памяти Загрузка третьего байта числа - второго байта мантиссы в аккумулятор Установка нового значения адреса для сохранения - 7004h Сохранения второго байта Загрузка в аккумулятор Установка нового значения адреса для сохранения Сохранение младшего байта мантиссы в памяти Загрузка в В,С адреса, начиная с которого располагается текст: «Znak chisla:» Вывод текста на экран Адрес, откуда берется знак числа Загрузка в аккумулятор знака числа Печать двух чисел из аккумулятора на экране Перевод курсора на новую строку Загрузка в В,С адреса, начиная с которого
располагается текст: «Znak poryadka:» Получение адреса, в котором содержится знак порядка Загрузка в аккумулятор знака порядка Печать двух чисел из аккумулятора на экране Перевод курсора на новую строку Загрузка в В,С адреса, начиная с которого располагается текст: «Modul poryadka:» Вывод текста на экран Получение адреса, в котором содержится модуль порядка Загрузка в аккумулятор модуля порядка Печать двух чисел из аккумулятора на экране Перевод курсора на новую строку Загрузка в В,С адреса, начиная с которого располагается текст: «Mantissa:» Вывод текста на экран Получение адреса старшего байта мантиссы Запись этого значения в аккумулятор Вывод двух чисел из аккумулятора на экран Получение адреса второго байта мантиссы Запись второго байта мантиссы в аккумулятор Вывод двух чисел из аккумулятора на экран Получение адреса младшего байта мантиссы Запись второго байта мантиссы в аккумулятор Вывод двух чисел из аккумулятора на экран Завершение программы |
Расположение подпрограммы и вспомогательного текста:
Адрес16 |
Данные16 |
Код Ассемблера |
Комментарий |
4100 4103 4105 4108 410A
410B - 4140 |
DA 08 41 36 00 C3 0A 41 36 01 C9
|
JC 4108h MVI M,00h JMP 410Ah MVI M,01h RET
|
Прыжок по адресу 4108h, если су=1 Запись в память 00, если су=0 Загрузка в числа из адреса 5002h Запись в память 01, если су=1 Возврат в основную программу
Размещение данных, которые используются как вспомогательный текст |
Константы16 |
Результат работы программы |
32 E0 0C 84 |
ZNAK CHISLA:01 ZNAK PORYADKA:01 MODUL PORYADKA:78 MANTISSA:8CE032 |
Ввиду невозможности предоставления оригинальной машины СМ-1800 каждому студенту, был предложен программный продукт эмулирующие работу этой машины, как средство решения практических задач по изучаемому курсу. Эмулятор СМ-1800 разработчика Смирнова.
Программный продукт "Эмулятор СМ-1800"
Смирнова позволяет полностью