Микропроцессорные средства и системы
Министерство Образования Украины
Кременчугский Государственный Политехнический Институт
Контрольное задание по дисциплине
“ Микропроцессорные средства и системы ”
Вариант № 7
Группа Э-41-З, студент **********
Преподаватель : Михальчук В.Н
Кременчуг 1998
Контрольная работа № 1
Преобразовать числа из десятичной системы счисления в двоичную и шестнадцатеричную: 5 ; 38 ; 93 ; 175 ; 264.
Десятичная система | Двоичная система | Шестнадцатеричная система | ||||||||||
5 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 5 | ||
38 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 26 | ||
93 | 0 | 0 | 1 | 0 | 1 | 1 | 1 | 0 | 1 | 5D | ||
175 | 0 | 1 | 0 | 1 | 0 | 1 | 1 | 1 | 1 | AF | ||
264 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 108 |
Задача № 2
Преобразовать числа, записанные в прямом двоичном коде в десятичный и шестнадцатеричный код : 0011 ; 1000010 ; 00011011000 .
Прямой двоичный код | Десятичный код | Шестнадцатеричный код | ||||||||||||
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 3 | 3 | ||
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 66 | 42 | ||
0 | 0 | 0 | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 216 | D8 |
Задача № 3
Выполнить следующие арифметические действия с двоичными числами, заданными в прямом коде : 0011 + 1000110 ; 10000001 - 1000110
+ | 0 | 0 | 1 | 1 | + | 3 | - | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | - | 1 | 2 | 9 | ||||||||||
1 | 0 | 0 | 0 | 1 | 1 | 0 | 7 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 7 | 0 | ||||||||||||
1 | 0 | 0 | 1 | 0 | 0 | 1 | 7 | 3 | 0 | 0 | 1 | 1 | 1 | 0 | 1 | 1 | 5 | 9 | |||||||||||
Задача № 4
Выполнить следующее арифметическое действие в 8-ми разрядной сетке ( старший бит содержит знак числа ) : 5 х 25
х | 0 | . | 0 | 0 | 1 | 1 | 0 | 0 | 1 | х | 2 | 5 | |||||||||||||||||
0 | . | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 5 | ||||||||||||||||||||
0 | 0 | 1 | 1 | 0 | 0 | 1 | |||||||||||||||||||||||
0 | 0 | 0 | 0 | 0 | 0 | 0 | |||||||||||||||||||||||
0 | 0 | 1 | 1 | 0 | 0 | 1 | |||||||||||||||||||||||
0 | . | 1 | 1 | 1 | 1 | 1 | 0 | 1 | 1 | 2 | 5 |
Контрольная работа № 2
Задача № 1
Определить размер памяти в килобайтах ( байтах ), если данная память адресуется с адреса A0EDH по адрес EF34H. Одна ячейка памяти занимает 8 бит
Для решения определим вначале кол-во ячеек памяти, адресуемых одним разрядом при 16- теричной системе адресации.
4-й разряд 3-й разряд 2-й разряд 1-й разряд H
4096
256
16
1
H
Таким образом, начальный и конечный адреса в десятичной системе будут :
A0EDH = 4096 * 10 + 256 * 0 + 16 * 14 + 1 * 13 + 1= 41198 ;
EF34H = 4096 * 14 + 256 * 15 + 16 * 3 + 1 * 4 +1 = 61237 .
61237 - 41198 = 20039.
20039 = 19 * 1024 + 583.
Итак, размер памяти будет 20039 байт или 19 кБ. 583 байт
Задача № 2
Символьная строка расположена в ОЗУ начиная с адреса 0006H. Известно, что под каждый символ отводится одна ячейка памяти. Число символов в строке = 731. Определить адрес для обращения к последнему символу строки.
Порядковый номер последней ячейки памяти в десятичной системе будет 731 + 6 = 737. Переведем 738 из десятичной системы в двоичную :
73710 = 0010111000012
Теперь переводим в 16 - теричную : 0010111000012 = 02E116
Ответ : адрес последнего символа 02E1H
Задача № 3
Составить программу на Ассемблере с комментариями :
Подсчитать число символов в строке, расположенной в области начиная с адреса 1000H и заканчивая адресом 2000H без учета пробелов, если известно, что каждый символ занимает одну ячейку памяти и пробел кодируется как 01H.
Максимальное число символов в строке 2000h -1000h=1000h=409610
После выполнения программы результат будет помещен в HL.
LXI SP,3000h ; указание вершины стека
LXI H,1000h ; адрес 1-го элемента => в HL
LXI D,1000h ; загрузка счетчика в D,E
XRA A ; обнуление аккумулятора
STA 2001h ; обнуление счетчика количества символов
STA 2002h ; обнуление счетчика количества символов
MVI B,01h ; код пробела => в В
LOOP:
MOV A,M ; загрузить символ из ячейки М в аккумулятор
CMP B ; проверка на код пробела
JNZ COUNT ; если не совпадает, переход к COUNT, иначе - дальше
INX H ; адрес следующего символа
DCX D ; уменьшить счетчик
JZ EXIT ; если счетчик = 0, на выход
JMP LOOP ; в начало цикла
COUNT:
PUSH H ; выгрузить содержимое HL в стек
LHLD 2001h ; загрузить HL содержимым счетчика количества символов
INX H ; увеличить счетчик на 1
SHLD 2001h ; сохранить счетчик количества символов в 2001h, 2002h
POP H ; восстановить в HL сохраненный адрес
RET ; возврат из подпрограммы
EXIT:
LHLD 2001h ; загрузить HL содержимым счетчика количества символов
END
Задача № 4
Составить программу на Ассемблере, направленную на решение математической функции :
Z = lg(x+1)
Натуральный и десятичный логарифмы одного и того же числа (в данном случае - выражения) связаны простым соотношением, позволяющим переходить от одного к другому :
lg x = Mlnx , где M = 1/ln10 = 0,434294481903252…
т.е., десятичный логарифм числа x = натуральному логарифму этого же числа, умноженному на постоянный множитель M = 0,434294481903252…, называемый модулем перехода от натуральных логарифмов к десятичным.
В соответствии с вышесказанным, lg (x+1) = 0,434294481903252…* ln(x+1)
Для вычисления ln(x+1) используем разложение в ряд :
ln(x+1) = x-x2/2+x3/3-x4/4+x5/5-x6/6+x7/7-x8/8+…
В результате алгоритм решения сводится к четырем арифметическим действиям : + ; - ; * ; /.
Перед выполнением арифметических действий над числами с плавающей запятой условимся первое число размещать в регистрах EHL, второе – в регистрах DBC; результат операции оставлять в EHL.
Формат представления чисел с плавающей запятой :
S
P
P
P
P
P
P
P
P
M
M
M
M
M
M
M
M
M
M
M
M
M
M
M
7
6
5
4
3
2
1
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1-й байт
2-й байт
3-й байт
Где : S – знак числа ( 1-отрицательный, 0-положительный ), P0…P7 – 8-битный смещенный порядок, M1 … M15 – мантисса . Скрытый бит целой части мантиссы в нормализованных числах содержит 1
1000h | X |
1001h | |
1003h | |
1003h | X2 |
1004h | |
1005h | |
1006h | X3 |
1007h | |
1008h | |
1009h | X4 |
100Ah | |
100Bh | |
100Ch | X5 |
100Dh | |
100Eh | |
100Fh | X6 |
1010h | |
1011h | |
1012h | X7 |
1013h | |
1014h | |
1020h | Адрес ячейки с текущим XN |
1021h | |
1022h | Текущий N |
Подобные работы: