Пример: Транспортная логистика
Я ищу:
На главную  |  Добавить в избранное  

Радиоэлектроника /

Микропроцессорные средства и системы

←предыдущая  следующая→
1 2 3 4 5 



Скачать реферат


Министерство Образования Украины

Кременчугский Государственный Политехнический Институт

Контрольное задание по дисциплине

“ Микропроцессорные средства и системы ”

Вариант № 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

До начала вычислений число Х должно быть размещено в памяти по адресам 1000h-1002h.

;начало цикла вычислений

CALC1:

LXI H,1003h ; сохранение адреса первой ячейки

SHLD 1020h ; для хранения XN

CALL LOAD ; Загрузка Х в EHL

;цикл вычисления XN

CALC2: CALL LOAD1 ;Загрузка Х в DBC CALL MULF ; Умножение чисел с плавающей точкой

MOV B,H ; HL=>BC

MOV C,L

LHLD 1020h ;загрузить адрес ячейки памяти для хранения Хn

MOV M,E ;Хn => в память

INX H

MOV M,B

INX H

MOV M,C

INX H

SHLD 1020h ;запомнить адрес ячейки памяти для следующего Хn

MOV H,B ;BC=>HL

MOV L,C

LDA 1021h ;содержимое ячейки => в аккумулятор

CPI 15h ;если получены все значения Хn,

JZ CALC3 ;переход на CALC3

JMP CALC2 ;иначе- в начало

CALC3:

LXI H,1022h ;

MVI M,01h ;загрузить в ячейку 1022h делитель

LXI H,1003h ;

SHLD 1020h ;содержимое HL => в память

;цикл вычисления XN/N CALC4: MOV B,H ; HL=>BC MOV C,L LHLD 1020h ;загрузить адрес ячейки памяти для хранения N MOV E,M ;Хn => в регистры INX H MOV B,M INX H MOV C,M SHLD 1020h ;запомнить адрес ячейки памяти для следующего Хn

MOV H,B ;BC=>HL

MOV L,C

PUSH H ;

LXI H,1022h ;N => в ячейку С

MOV C,M

POP H ;

MVI D,00h

MVI B,00h

CALL DIVF ; Деление чисел

←предыдущая  следующая→
1 2 3 4 5 



Copyright © 2005—2007 «Mark5»