23.05 18:10Николь Ричи наградили за ее родительские качества[УКРАИНСКИЙ МУЗЫКАЛЬНЫЙ ПОРТАЛ]
23.05 18:02Наоми Кэмпбелл отпраздновала 38-й день рождения[УКРАИНСКИЙ МУЗЫКАЛЬНЫЙ ПОРТАЛ]
23.05 17:25Серегу избили хулиганы[УКРАИНСКИЙ МУЗЫКАЛЬНЫЙ ПОРТАЛ]
23.05 17:24У Сергея Зверева украли стринги[УКРАИНСКИЙ МУЗЫКАЛЬНЫЙ ПОРТАЛ]
23.05 17:12Режиссер Сергей Соловьев госпитализирован[Film.Ru]
23.05 16:31Объявлены члены жюри конкурса ММКФ "Перспективы"[Film.Ru]
23.05 16:06Одесская киностудия снимает детективную мелодраму "Героиня своего романа" [УКРАИНСКИЙ МУЗЫКАЛЬНЫЙ ПОРТАЛ]
23.05 16:04Топ-50 самых красивых мужчин мира: украинец - второй[УКРАИНСКИЙ МУЗЫКАЛЬНЫЙ ПОРТАЛ]
23.05 16:03Лорак едва не осталась на "Евровидении" без платья[УКРАИНСКИЙ МУЗЫКАЛЬНЫЙ ПОРТАЛ]
23.05 16:00Ани Лорак вышла в финал "Евровидения-2008". [УКРАИНСКИЙ МУЗЫКАЛЬНЫЙ ПОРТАЛ]
Какая из вечных ценностей самая быстротечная:
Результат
Архив

Главная / Предметы / Радиоэлектроника / Микропроцессорные средства и системы


Микропроцессорные средства и системы - Радиоэлектроника - Скачать бесплатно


Министерство Образования Украины
           Кременчугский Государственный Политехнический Институт



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



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

                                 Задача № 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 – знак числа ( 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 ; Деление чисел с плавающей точкой
      MOV   B,H  ; HL=>BC
      MOV   C,L
      LHLD  1020h      ;загрузить адрес ячейки памяти для хранения Хn/N
      DCX   H    ;
      DCX   H    ;
      MOV   M,E  ;Хn/N => в память
      INX   H
      MOV   M,B
      INX   H
      MOV   M,C
      INX   H
      SHLD  1020h      ;запомнить адрес ячейки памяти для следующего Хn/N
      MOV   H,B  ;BC=>HL
      MOV   L,C
      PUSH  H    ;
      LXI   H,1022h    ;N => в ячейку С
      MOV   C,M  ;инкремент N
      INR   C
      MOV   M,C
      POP   H    ;
      LDA   1021h      ;содержимое ячейки => в аккумулятор
      CPI   15h  ;если получены все значения Хn,
      JZ    CALC5      ;переход на CALC5
      JMP   CALC4      ;иначе- в начало

CALC5:
      LXI   H,1003h    ;
      SHLD  1020h      ;
                 ;
CALC6:
      LHLD  1020h      ;загрузить адрес ячейки памяти для хранения N
      MOV   D,M  ;Хn/N => в регистры D,B,C.
      INX   H
      MOV   B,M
      INX   H
      MOV   C,M
      INX   H
      SHLD  1020h      ;запомнить адрес ячейки памяти для следующего Хn/N
                 ;
;вычисление ln(x+1)
CALC7:
      CALL  LOAD ; Загрузка Х в EHL
      CALL  SUBF ; Вычитание чисел с плавающей точкой
      CALL  CALC8      ; загрузка Хn+1/N+1 в регистры D,B,C.
      CALL  ADDF ; Сложение чисел с плавающей точкой
      CALL  CALC8      ; загрузка Хn+1/N+1 в регистры D,B,C.
      CALL  SUBF ; Вычитание чисел с плавающей точкой
      CALL  CALC8      ; загрузка Хn+1/N+1 в регистры D,B,C.
      CALL  ADDF ; Сложение чисел с плавающей точкой
      CALL  CALC8      ; загрузка Хn+1/N+1 в регистры D,B,C.
      CALL  SUBF ; Вычитание чисел с плавающей точкой
      CALL  CALC8      ; загрузка Хn+1/N+1 в регистры D,B,C.
      CALL  ADDF ; Сложение чисел с плавающей точкой
      CALL  CALC8      ; загрузка Хn+1/N+1 в регистры D,B,C.
      MVI   D,00h      ; загрузка модуля пере-
      MVI   B,2Bh      ; хода в DBC
      MVI   C,2Bh
      CALL  MULF ; Умножение ln(x+1) на модуль перехода к lg
      JMP   EXIT ; на выход
                 ;
;загрузка Хn+1/N+1 в регистры D,B,C.
CALC8:
      PUSH  H
      LHLD  1020h      ;загрузить адрес ячейки памяти для хранения N
      MOV   D,M  ;Хn/N => в регистры D,B,C.
      INX   H
      MOV   B,M
      INX   H
      MOV   C,M
      INX   H
      SHLD  1020h      ;запомнить адрес ячейки памяти для следующего Хn/N
      POP   H    ;
      RET        ;
                 ;
EXIT:
      HLT        ; Останов
                 ;
                 ;
                 ;
;Загрузка Х в EHL
LOAD:
      LXI   H,1000h    ;загрузка в HL адреса порядка Х
      MOV   E,M  ;загрузка порядка Х в Е
      LHLD  1001h      ;загрузка мантиссы в HL
      RET        ;

;Загрузка Х в DBC
LOAD1:
      PUSH  H    ;выгрузка в стек HL
      LXI   H,1000h    ;загрузка в HL адреса порядка Х
      MOV   D,M  ;загрузка порядка Х в D
      INX   H    ;
      MOV   B,M  ;
      INX   H    ;
      MOV   C,M  ;загрузка мантиссы в BC
      POP   H    ;загрузка из стека HL
      RET        ;

;Образование дополнительного кода числа в регистре HL
comp:
      mov   A,H  ;
      CMA        ;
      MOV   H,A  ;
      MOV   A,L  ;
      CMA        ;
      MOV   L,A  ;
      INX   H    ;
      RET        ;

;Проверка знака и образование дополнительного кода
NEG:
      MOV   A,E  ;
      ORA   E    ;
      JP    NOTDK      ;
      CALL  COMP ; Образование дополнительного кода числа в регистре HL
NOTDK:      RET  ;

;Сдвиг содержимого HL вправо на 1 бит:
SHIFT:
      MOV   A,H  ;
      RAR        ;
      MOV   H,A  ;
      MOV   A,L  ;
      RAR        ;
      MOV   L,A  ;
      RET        ;

;Обмен содержимого регистров EHL и DBC
SWAP:
      PUSH  B    ;
      XTHL       ;
      POP   B    ;
      MOV   A,D  ;
      MOV   D,E  ;
      MOV   E,A  ;
      RET        ;

;Восстановление числа с плавающей точкой
REC:
      MOV   A,H  ;
      ADD   A    ;
      MOV   A,E  ;
      RAL        ;
      MOV   E,A  ;
      MOV   A,H  ;
      ORI   80H  ;
      MOV   H,A  ;
      RET        ;

;Преобразование числа в стандартный формат
PACK:
      LDA   SIGN ;
      ADD   A   

назад |  1  | вперед


Назад
 


Новые поступления

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

281311062 (руководитель проекта)
401699789 (заказ работ)
© il.lusion,2007г.
Карта сайта
  
  
 
МЕТА - Украина. Рейтинг сайтов Союз образовательных сайтов