0
|
0
|
0
|
0
|
0
|
1
|
1
|
1
|
1
|
1
|
0
|
1
|
0
|
1
|
1
|
0
|
Итак, чтобы получить внутреннее представление целого числа
без знака А, хранящегося в n-разрядном машинном слове, необходимо:
) перевести число А в двоичную систему счисления;
) полученный результат дополнить слева незначащими нулями до n разрядов.
Целые числа со знаком: прямой, обратный и
дополнительный коды. Целые числа со знаком обычно занимают в памяти компьютера
один, два или четыре байта. Для хранения целых чисел со знаком старший (левый)
разряд в машинном слове отводится под знак числа (если число положительное, то
в знаковый разряд записывается ноль, если число отрицательное - единица). Ровно
половина из всех 2n чисел будут
отрицательными; учитывая необходимость нулевого значения, положительных будет
на единицу меньше.
Максимальное положительное число (с учетом выделения одного
разряда на знак) для целых чисел со знаком в n-разрядном представлении
равно . Минимальное
отрицательное число (с учетом выделения одного разряда на знак) для целых чисел
со знаком в n-разрядном
представлении равно - .
Диапазоны значений целых чисел со знаком:
в 8-разрядной ячейке: от - 128 до 127;
в 16-разрядной ячейке: от - 32 768 до 32 767;
в 32-разрядной ячейке: от - 2 147 483 648 до 2 147 483 647.
Для представления отрицательного числа используется дополнительный
код. Дополнительный код положительного числа совпадает с его прямым кодом.
Прямой код целого положительного числа может быть
получен следующим образом: число переводится в двоичную систему счисления, а
затем его двоичную запись слева дополняют необходимым количеством нулей в
соответствии с разрядностью машинного слова. Например, прямой код числа 3710=1001012
в 16-разрядной ячейке будет иметь вид 0000000000100101.
Для записи внутреннего представления целого число со знаком
(-А) необходимо:
) модуль числа записать в прямом коде в n двоичных разрядах;
) получить обратный код числа, для этого
значения всех бит инвертировать - все единицы заменить на нули и все нули
заменить на единицы);
) к полученному обратному коду прибавить единицу. Получим дополнительный
код целого числа со знаком.
Например, внутреннее представление целого отрицательного
числа - 1607 в 16-разрядной ячейке запишется следующим образом: 1111 1001 1011
1001. Так как:
) а) ½-1607½=160710=110010001112
б) прямой код в 16-разрядной ячейке:
0110 0100 0111
) обратный код:
1001 1011 1000
) дополнительный код (результат прибавления 1):
1001 1011 1001 - это внутренне двоичное представление числа
(-1607).
эмулятор массив плавающая точка
2.
Практическая разработка
2.1 Блок-схема
алгоритма с поясняющим текстом
2.2
Распределение памяти и листинг программы с комментарием
SP-двухбайтный регистр стека
H,L - пара регистров, занятых массивом исходных чисел
D,E - пара регистров, занятых результирующего массива.
В, С - пара регистров, используемых для хранения временных
данных
С - регистр, используемый как счетчик
адрес
|
данные
|
Код ассемблера
|
Комментарии
|
4000
|
31
00 80
|
LXI
SP, 8000h
|
Создание стека
программы по адресу 8000h
|
4003
|
21
05 50
|
LXI
H, 5001h
|
Помещение в
пару H,L адреса исходного массива
|
4006
|
11
01 70
|
LXI
D, 7001h
|
Помещение в
пару D,E адреса массива результатов
|
4009
|
01
00 60
|
LXI
B, 6000h
|
Помещение в
пару В, С ячейку памяти 6000h
|
400C
|
AF
|
XRA
A
|
Обнуление
аккумулятора
|
400D
|
02
|
STAX
B
|
Запись
содержимого в ячейку памяти 6000h
|
400E
|
0E
0A
|
MVI
C,0Ah
|
Создание
счетчика на 10 шагов
|
4010
|
C5
|
M1:
PUSH B
|
Засылка
содержимого регистров В, С в стек
|
4011
|
7E
|
MOV
A,M
|
Копирование
содержимого регистров в аккумулятор
|
4012
|
17
|
RAL
|
Циклический
сдвиг содержимого аккумулятора влево на один разряд
|
4013
|
DA
50 40
|
JC
OTR
|
Если число
отрицательное (CY=1), то прыгнуть на метку OTR
|
4016
|
7E
|
MOV
A,M
|
Копирование
содержимого ячейки памяти в аккумулятор
|
4017
|
12
|
STAX
D
|
Запись в массив
результатов старшего байта числа
|
4018
|
2B
|
DCX
H
|
Переход к
младшему байту числа в исходном массиве
|
4019
|
1B
|
DCX
D
|
Переход к
младшему байту числа в массиве результатов
|
401A
|
MOV
A,M
|
Копирование
содержимого ячейки памяти в аккумулятор
|
401B
|
12
|
STAX
D
|
Запись в массив
результатов младшего байта числа
|
401C
|
23
|
INX
H
|
С адреса 401С
по 4021 - продвижение адресов на следующую пару чисел в исходном массиве и в
массиве результатов
|
401D
|
13
|
INX
D
|
|
401E
|
23
|
M2:
INX H
|
|
401F
|
13
|
INX
D
|
|
4020
|
23
|
INX
H
|
|
4021
|
13
|
INX
D
|
|
4022
|
C1
|
POP
B
|
Извлечение
содержимого В, С из стека
|
4023
|
0D
|
DCR
C
|
Уменьшение
счетчика на 1
|
4024
|
C2
10 40
|
JNZ
M1
|
Возврат на М1
до исчерпания счетчика
|
4027
|
CD
80 40
|
CALL
PODS
|
Вызов
подпрограммы PODS
|
402A
|
CD
49 00
|
CALL
49h
|
Перевод курсора
на новую строку
|
402D
|
CD
90 40
|
CALL
VISX
|
Вызов программы
VISX
|
4030
|
CD
49 00
|
CALL
49 h
|
Перевод курсора
на новую строку
|
4033
|
CD
B0 40
|
CALL
VREZ
|
Вызов
подпрограммы VREZ
|
4036
|
C3
40 00
|
JMP
40h
|
Выход в
программу Монитор
|
Подпрограмма обработки отрицательных чисел
4080
|
0A
|
PODS:
LDAX B
|
Загрузка в
аккумулятор содержимого ячейки 6000h
|
4081
|
01
20 41
|
LXI
B,4120h
|
Помещение в
пару регистров В, С адреса 4120h
|
CD
4C 00
|
CALL
4Ch
|
Вывод строки
текста, начиная с адреса, записанного в В, С до нулевого байта
|
4087
|
CD
61 00
|
CALL
61h
|
Вывод двух
шестнадцатеричных цифр и аккумулятора
|
408A
|
C9
|
RET
|
Безусловный
возврат к команде, с адресом 402А
|
Подпрограмма вывода на экран исходного массива
409011
14 00VISX: LXI D, 0014hСоздание
счетчика на 20 шагов
|
|
|
|
4093
|
21
00 50
|
LXI
H, 5000h
|
Помещение в
пару H,L адреса исходного массива
|
4096
|
01
20 42
|
LXI
B,4220h
|
Помещение в
пару регистров В, С адреса 4220h
|
4099
|
CD
4C 00
|
CALL
4Ch
|
Вывод строки
текста, начиная с адреса, записанного в В, С до нулевого байта
|
409С
|
01
20 43
|
LXI
B,4320h
|
Помещение в
пару регистров В, С адреса 4320h
|
409F
|
7E
|
MOV
A,M
|
Копирование
содержимого ячейки памяти в аккумулятор
|
40A0
|
CD
61 00
|
CALL
61h
|
Вывод двух
шестнадцатеричных цифр и аккумулятора
|
40A3
|
23
|
INX
H
|
Продвижение
адреса на следующую пару чисел
|
40A4
|
CD
4C 00
|
CALL
4Ch
|
Вывод строки
текста, начиная с адреса, записанного в В, С до нулевого байта
|
40A7
|
1D
|
DCR
E
|
Уменьшение
счетчика на 1
|
40A8
|
C2
9F 40
|
JNZ
409F
|
Возврат в 409F
до исчерпания счетчика
|
40AB
|
C9
|
RET
|
Безусловный
возврат к команде, адресом 4030
|
Подпрограмма вывода на экран массива результатов
40B011
14 00VREZ: LXI D,0014hСоздание
счетчика на 20 шагов
|
|
|
|
40B3
|
21
00 70
|
LXI
H, 7000h
|
Помещение в
пару H,L адреса массива результатов
|
40B6
|
01
20 44
|
LXI
B, 4420h
|
Помещение в
пару регистров В, С адреса 4420h
|
40B9
|
CD
4C 00
|
CALL
4Ch
|
40BC
|
01
20 43
|
LXI
B, 4320h
|
Помещение в
пару регистров В, С адреса 4320h
|
40BF
|
7E
|
MOV
A,M
|
Копирование
содержимого ячейки памяти в аккумулятор
|
40C0
|
CD
61 00
|
CALL
61h
|
Вывод двух
шестнадцатеричных цифр и аккумулятора
|
40C3
|
23
|
INX
H
|
Продвижение
адреса на следующую пару чисел
|
40C4
|
CD
4C 00
|
CALL
4Ch
|
Вывод строки
текста, начиная с адреса, записанного в В, С до нулевого байта
|
40C7
|
1D
|
DCR
E
|
Уменьшение
счетчика на 1
|
40C8
|
C2
BF 40
|
JNZ
40BF
|
Возврат в 40BF
до исчерпания счетчика
|
40CB
|
C9
|
RET
|
Безусловный
возврат к команде, с адресом 4036
|
·
Результаты
тестирования программы
При запуске программы, на экране Монитора выводятся следующие
данные:
3.
Описание средств вычислительной техники
Программный продукт "Эмулятор СМ-1800" позволяет
полностью эмулировать работу микроЭВМ СМ-1800 на персональном компьютере. Сразу
после запуска на экране появляются четыре основных окна: видеотерминал
алфавитно-цифровой (ВТА 2000-30), пульт контроля и управления (ПКУ), клавиатура
и главное меню. При необходимости можно не отображать ненужные окна.
Центральный процессор и шины СМ-1800 работают на частоте 2
МГц.
ЦП имеет 8 внутренних 8-битных регистров, понимает около 250
различных команд, может адресовать 65536 байт оперативной памяти и 256 портов
ввода-вывода, имеет 8-уровневую систему приоритетных прерываний.
К внешней шине подключены устройства: дисковод (8 дюймов,
ёмкость дискеты 160 Кб:), печатающее устройство (на бесконечной бумаге), и
другие.
Вся информация выводится на видеотерминал ВТА в текстовом
виде (чёрно-зелёный шрифт, 127 знаков, размер экрана 80х24 символа).
Терминал "общается" с системой через интерфейс И41
(7-битный).
Основной орган управления - стандартная клавиатура СМ-1800 -
имеет несколько режимов работы, поддерживает 2 кодировки (JCUKEN/ЙЦУКЕН).
Еще один орган управления - это выносной пульт ПКУ с
элементами коммутации и индикации. Он позволяет выполнять ЛЮБЫЕ операции с
памятью, портами ввода-вывода, позволяет управлять работой центрального
процессора (останавливать, трассировать шины адреса и данных, выполнять
машинные инструкции с остановами между циклами ЦП, и т.д.).
Все остальные модули скрыты внутри системного блока СМ-1800 и
доступны программно, а именно:
Модуль программируемого таймера (минимальный фиксируемый
интервал - 1 МГц) Модуль системного контроля, Модуль оперативной памяти 64Кб
(МОЗ), Модуль теневой оперативной памяти 3Кб + системное ПЗУ 2Кб, Порты ввода
00h, 01h, и другие, Порты вывода 00h, 01h, 03h, и другие, Система обработки
приоритетных прерываний, В ПЗУ СМ-1800 зашита операционная система СПО МОНИТОР
1.3 (MONID 1.3).
Именно она получает управление после запуска СМ-1800.
При разработке программы был использован персональный
компьютер со следующими техническими характеристиками:
Тип процессора:® Core™ I3CPU
M370 @ 2.4GHZ
Скорость процессора:
,02 ГГЦ
Объем оперативной памяти:
8 ГБ
Видеокарта:GeForce GT 415M
Память видеокарты:
ГБ
Стандартное программное обеспечение:
Операционная система:2.6.2.9200 (Windows 8.1)Office 2013
Практическая разработка данного курсового проекта выполнялась
на эмуляторе микро-ЭВМ СМ-1800 v3.02.
Вывод
Данный курсовой проект выполнен полностью в соответствии с
заданием. Проект состоит из двух основных частей: аналитической и практической.
Обе части были подробно рассмотрены. Все поставленные задачи были полностью
разобраны и реализованы. Была составлена программа формирования массива модулей
чисел исходного массива (с адреса 5000h), формирующая массив результатов с адреса 7000h. Так же было подсчитано
количество отрицательных чисел в исходном массиве, результат которого записан в
ячейки 4000h.
Список
литературы
1.
Гиляров В.Н. Организация ЭВМ и систем. Курсовое проектирование: методические
указания к выполнению курсового проектирования / В.Н. Гиляров-СПб.: СПбГИ (ТУ),
2010. - 76 с.
.
Гиляров В.Н. Организация ЭВМ и систем: учебное пособие / В.Н. Гиляров-СПб.:
СПбГИ (ТУ), 2010. - 80 с.
.
Информационно-поисковые системы Интернет: Yandex, Rambler.
.
Лекции по дисциплине "Организация ЭВМ и систем".
.
МикроЭВМ СМ-1800 и ее эмулятор на ПК: Методические указания. - СПб.: СПбГТИ
(ТУ), 2006. - 21с.