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

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



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



                                 Вариант № 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    ;
      MOV   A,E  ;
      MOV   D,A  ;
      RAR        ;
      MOV   E,A  ;
      MOV   A,H  ;
      ANI   7FH  ;
      MOV   H,A  ;
      MOV   A,D  ;
      RRC        ;
      ANI   80H  ;
      ORA   H    ;
      MOV   H,A  ;
      RET        ;

;Сложение чисел с плавающей точкой
ADDF:
      MOV   A,D  ;
      XRA   E    ;
      JP    ADDF1      ;
      MOV   A,D  ;
      XRI   80H  ;
      MOV   D,A  ;
      JMP   SUBF ;
                 ;
ADDF1:
      MOV   A,D  ;
      ORA   B    ;
      ORA   C    ;
      JZ    ADDF8      ;
      MOV   A,E  ;
      ORA   H    ;
      ORA   L    ;
      JNZ   ADDF2      ;
      CALL  SWAP ; Обмен содержимого регистров EHL и DBC
      JMP   ADDF8      ;
                 ;
ADDF2:
      MOV   A,D  ;
      STA   SIGN ;
      CALL  REC  ;
      CALL  SWAP ; Обмен содержимого регистров EHL и DBC
      CALL  REC  ; Восстановление числа с плавающей точкой
                 ;
      MOV   A,E  ;
      SUB   D    ;
      JNC   ADDF3      ;
      CALL  SWAP ; Обмен содержимого регистров EHL и DBC
      MOV   A,E  ;
      SUB   D    ;
                 ;
; В EHL большее число, в аккумуляторе разность потенциалов
ADDF3:
      JZ    ADDF6      ;
      CPI   16   ;
      JC    ADDF4      ;
      JMP   ADDF7      ;
                 ;
;Можно сдвигать мантиссу меньшего числа
ADDF4:
      MOV   E,A  ;
      CALL  SWAP ; Обмен содержимого регистров EHL и DBC
ADDF5:
      ORA   A    ;
      CALL  SHIFT      ; Сдвиг содержимого HL вправо на 1 бит:
      INR   E    ;
      DCR   D    ;
      JNZ   ADDF5      ;
                 ;
;В регистре Е общий порядок. Можно складывать мантиссы
ADDF6:
      DAD   B    ;
      JNC   ADDF7      ;
      INR   E    ;
      JZ    ADDF8      ;
      ORA   A    ;
      CALL  SHIFT      ; Сдвиг содержимого HL вправо на 1 бит:
                 ;
ADDF7:
      CALL  PACK ; Преобразование числа в стандартный формат
                 ;
ADDF8:
      RET        ;
                 ;

;Вычитание чисел с плавающей точкой
SUBF:
      MOV   A,D  ;
      XRA   E    ;
      JP    SUBF1      ;
      MOV   A,D  ;
      XRI   80H  ;
      MOV   D,A  ;
      JMP   ADDF ; Сложение чисел с плавающей точкой
SUBF1:
      MOV   A,D  ;
      ORA   B    ;
      ORA   C    ;
      JZ    SUBFA      ;
      MOV   A,E  ;
      ORA   H    ;
      ORA   L    ;
      JNZ   SUBF2      ;
      CALL  SWAP ; Обмен содержимого регистров EHL и DBC
      MOV   A,E  ;
      XRI   80H  ;
      MOV   E,A  ;
      JMP   SUBFA      ;
SUBF2:
      MOV   A,E  ;
      STA   SIGN ;
      CALL  REC  ; Восстановление числа с плавающей точкой
      CALL  SWAP ; Обмен содержимого регистров EHL и DBC
      CALL  REC  ; Восстановление числа с плавающей точкой
      MOV   A,D  ;
      SUB   E    ;
      JNZ   SUBF3      ;
      MOV   A,B  ;
      CMP   H    ;
      JNZ   SUBF3      ;
      MOV   A,C  ;
      CMP   L    ;
      JNZ   SUBF3      ;
      MVI   E,0  ;
      LXI   H,0  ;
      JMP   SUBFA      ;
                 ;
;операнды не равны, необходимо вычитать
SUBF3:
      JNC   SUBF4      ;
      CALL  SWAP ; Обмен содержимого регистров EHL и DBC
      LDA   SIGN ;
      XRI   80H  ;
      STA   SIGN ;
                 ;
SUBF4:
      MOV   A,D  ;
      SUB   E    ;
      JZ    SUBF7      ;
      CPI   16   ;
      JC    SUBF5      ;
      CALL  SWAP ; Обмен содержимого регистров EHL и DBC
      JMP   SUBF ;
                 ;
;В регистре А разность порядков, в DBC больший операнд
SUBF5:
      MOV   E,A  ;
SUBF6:
      ORA   A    ;
      CALL  SHIFT      ; Сдвиг содержимого HL вправо на 1 бит:
      DCR   E    ;
      JNZ   SUBF6      ;
                 ;
;Вычесть мантиссы, результат в EHL
SUBF7:
      MOV   A,C  ;
      SUB   L    ;
      MOV   L,A  ;
      MOV   A,B  ;
      SBB   H    ;
      MOV   H,A  ;
      MOV   E,D  ;
                 ;
;нормализовать и проверить антипереполнение
SUBF8:
      MOV   A,H  ;
      ORA   H    ;
      JM    SUBF9      ;
      DCR   E    ;
      MOV   A,E  ;
      CPI   0FFH ;
      STC        ;
      JZ    SUBFA      ;
      DAD   H    ;
      JMP   SUBF8      ;
                 ;
SUBF9:
      CALL  PACK ; Преобразование числа в стандартный формат
SUBFA:
      RET        ;
                 ;
;Умножение чисел с плавающей точкой
MULF:
      MOV   A,E  ;
      ORA   H    ;
      ORA   L    ;
      JZ    MULF8      ;
      MOV   A,D  ;
      ORA   B    ;
      ORA   C    ;
      JNZ   MULF1      ;
      CALL  SWAP ; Обмен содержимого регистров EHL и DBC
      JMP   MULF8      ;
                 ;
;операнды ненулевые, можно умножать
MULF1:
      MOV   A,D  ;
      XRA   E    ;
      STA   SIGN ;
      CALL  REC  ; Восстановление числа с плавающей точкой
      CALL  SWAP ; Обмен содержимого регистров EHL и DBC
      CALL  REC  ; Восстановление числа с плавающей точкой
      MOV   A,D  ;
      ADD   E    ;
      JC    MULF2      ;
      SUI   127  ;
      JNC   MULF3      ;
      JMP   MULF8      ;
                 ;
MULF2:
      ADI   129  ;
      JNC   MULF3      ;
      JMP   MULF8      ;
                 ;
;в аккумуляторе А смещенный порядок произведения
MULF3:
      MOV   C,A  ;
      MOV   E,B  ;
      MVI   D,0  ;
      MOV   A,H  ;
      LXI   H,0  ;
      XCHG       ;
      DAD   H    ;
      XCHG       ;
                 ;
;начало цикла умножения
MULF4:
      ORA   A    ;
      RAR        ;
      JNC   MULF5      ;
      DAD   D    ;
                 ;
MULF5:
      JZ    MULF6      ;
      XCHG       ;
      DAD   H    ;
      XHG        ;
      JMP   MULF4      ;
                 ;
;проверить нарушение нормализации
MULF6:
      JNC   MULF7      ;
      CALL  SHIFT      ; Сдвиг содержимого HL вправо на 1 бит:
      INR   C    ;
      STC        ;
      JZ    MULF8      ;
                 ;
MULF7:
      MOV   E,C  ;
      CALL  PACK ; Преобразование числа в стандартный формат
                 ;
MULF8:
      RET        ;
                 ;
;Деление чисел с плавающей точкой
DIVF:
      MOV   A,E  ;
      ORA   H    ;
      ORA   L    ;
      JZ    DIVF7      ;
      MOV   A,D  ;
      ORA   B    ;
      ORA   C    ;
      STC        ;
      JZ    DIVF7      ;
;операнды не равны нулю
      MOV   A,D  ;
      XRA   E    ;
      STA   SIGN ;
      CALL  REC  ; Восстановление числа с плавающей точкой
      CALL  SWAP ; Обмен содержимого регистров EHL и DBC
      CALL  REC  ; Восстановление числа с плавающей точкой
      CALL  SWAP ; Обмен содержимого регистров EHL и DBC
      MOV   A,E  ;
      SUB   D    ;
      JNC   DIVF1      ;
      ADI   127  ;
      CMC        ;
      JC    DIVF7      ; возикло антипереполнение
      JMP   DIVF2      ; перейти на деление мантисс
                 ;
DIVF1:
      ADI   127  ; прибавить смещение
      JC    DIVF7      ; возникло антипереполнение
                 ;
;можно начинать деление мантисс
DIVF2:
      STA   EXP  ;
      XCHG       ;
      LXI   H,0  ;
      MVI   A,16 ; инициализировать счетчик
      PUSH  PSW  ;
      JMP   DIVF4      ; войти в цикл деления
                 ;
DIVF3:
      PUSH  PSW  ;
      DAD   H    ; сдвинуть влево
      XCHG       ; частное и остаток
      DAD   H    ;
      XCHG       ;
                 ;
DIVF4:
      PUSH  D    ; сохранить остаок в стеке
      MOV   A,E  ; вычесть делитель из остатка
      SUB   C    ;
      MOV   E,A  ;
      MOV   A,D  ;
      SBB   B    ;
      MOV   D,A  ;
      JC    DIVF5      ;
      POP   PSW  ; удалить остаток из стека
      INR   L    ;
      PUSH  D    ;
                 ;
DIVF5:
      POP   D    ; извлечь предыдущий остаток
      POP   PSW  ; извлечь счетчик
      DCR   A    ; декремент счетчика
      JNZ   DIVF3      ; повторить цикл деления
                 ; деление мантисс закончено
      LDA   EXP  ;
      MOV   E,A  ;
                 ; нормализовать частное
      MOV   A,H  ;
      ORA   A    ;
      JM    DIVF6      ;
      DAD   H    ;
      DCR   E    ;
      CPI   0FFH ; проверить антипереполнение
      STC        ;
      JZ    DIVF7      ; возникло антипереполнение
                 ;
DIVF6:
      CALL  PACK ; Преобразование числа в стандартный формат
DIVF7:
      RET        ;
                 ;



                           Контрольная работа № 3



                                 Задача № 1



      Построить модель  распределения  адресного  пространства  с  указанием
диапазонов адресов в 16-й системе счисления. В качестве дешифратора  адресов
используется  стандартный  дешифратор,  к  информационным  входам   которого
подключены линии А15, А12, А9 16-разрядной шины адреса.


|Выходы|Разряды адреса                    |Диапазоны адресов            |
|дешиф-|                                  |                             |
|ратора|                                  |                             |
|      |1|1|1|1|1|1|9|8|7|6|5|4|3|2|1|0|                             |
|      |5|4|3|2|1|0| | | | | | | | | | |                             |
|Y0    |0|X|X|0|X|X|0|X|X|X|X|X|X|X|X|X|0000h-01FFh, 0400h-05FFh,    |
|      | | | | | | | | | | | | | | | | |0800h-0DFFh                  |
|      | | | | | | | | | | | | | | | | |2000h-21FFh, 2400h-25FFh,    |
|      | | | | | | | | | | | | | | | | |2800h-2DFFh                  |
|      | | | | | | | | | | | | | | | | |4000h-41FFh, 4400h-45FFh,    |
|      | | | | | | | | | | | | | | | | |4800h-4DFFh                  |
|      | | | | | | | | | | | | | | | | |6000h-61FFh, 6400h-65FFh,    |
|      | | | | | | | | | | | | | | | | |6800h-6DFFh                  |
|Y1    |0|X|X|0|X|X|1|X|X|X|X|X|X|X|X|X|0200h-03FFh, 0600h-07FFh,    |
|      | | | | | | | | | | | | | | | | |0A00h-0FFFh                  |
|      | | | | | | | | | | | | | | | | |2200h-23FFh, 2600h-27FFh,    |
|      | | | | | | | | | | | | | | | | |2A00h-2FFFh                  |
|      | | | | | | | | | | | | | | | | |4200h-43FFh, 4600h-47FFh,    |
|      | | | | | | | | | | | | | | | | |4A00h-4FFFh                  |
|      | | | | | | | | | | | | | | | | |6200h-63FFh, 6600h-67FFh,    |
|      | | | | | | | | | | | | | | | | |6A00h-6FFFh                  |
|Y2    |0|X|X|1|X|X|0|X|X|X|X|X|X|X|X|X|1000h-11FFh, 1400h-15FFh,    |
|      | | | | | | | | | | | | | | | | |1800h-1DFFh                  |
|      | | | | | | | | | | | | | | | | |3000h-31FFh, 3400h-35FFh,    |
|      | | | | | | | | | | | | | | | | |3800h-3DFFh                  |
|      | | | | | | | | | | | | | | | | |5000h-51FFh, 5400h-55FFh,    |
|      | | | | | | | | | | | | | | | | |5800h-5DFFh                  |
|      | | | | | | | | | | | | | | | | |7000h-71FFh, 7400h-75FFh,    |
|      | | | | | | | | | | | | | | | | |7800h-7DFFh                  |
|Y3    |0|X|X|1|X|X|1|X|X|X|X|X|X|X|X|X|1200h-13FFh, 1600h-17FFh,    |
|      | | | | | | | | | | | | | | | | |1A00h-1FFFh                  |
|      | | | | | | | | | | | | | | | | |3200h-33FFh, 3600h-37FFh,    |
|      | | | | | | | | | | | | | | | | |3A00h-3FFFh                  |
|      | | | | | | | | | | | | | | | | |5200h-53FFh, 5600h-57FFh,    |
|      | | | | | | | | | | | | | | | | |5A00h-5FFFh                  |
|      | | | | | | | | | | | | | | | | |7200h-73FFh, 7600h-77FFh,    |
|      | | | | | | | | | | | | | | | | |7A00h-7FFFh                  |
|Y4    |1|X|X|0|X|X|0|X|X|X|X|X|X|X|X|X|8000h-81FFh, 8400h-85FFh,    |
|      | | | | | | | | | | | | | | | | |8800h-8DFFh                  |
|      | | | | | | | | | | | | | | | | |A000h-A1FFh, A400h-A5FFh,    |
|      | | | | | | | | | | | | | | | | |A800h-ADFFh                  |
|      | | | | | | | | | | | | | | | | |C000h-C1FFh, C400h-C5FFh,    |
|      | | | | | | | | | | | | | | | | |C800h-CDFFh                  |
|      | | | | | | | | | | | | | | | | |E000h-E1FFh, E400h-E5FFh,    |
|      | | | | | | | | | | | | | | | | |E800h-EDFFh                  |
|Y5    |1|X|X|0|X|X|1|X|X|X|X|X|X|X|X|X|8200h-83FFh, 8600h-87FFh,    |
|      | | | | | | | | | | | | | | | | |8A00h-8FFFh                  |
|      | | | | | | | | | | | | | | | | |A200h-A3FFh, A600h-A7FFh,    |
|      | | | | | | | | | | | | | | | | |AA00h-AFFFh                  |
|      | | | | | | | | | | | | | | | | |C200h-C3FFh, C600h-C7FFh,    |
|      | | | | | | | | | | | | | | | | |CA00h-CFFFh                  |
|      | | | | | | | | | | | | | | | | |E200h-E3FFh, E600h-E7FFh,    |
|      | | | | | | | | | | | | | | | | |EA00h-EFFFh                  |
|Y6    |1|X|X|1|X|X|0|X|X|X|X|X|X|X|X|X|9000h-91FFh, 9400h-95FFh,    |
|      | | | | | | | | | | | | | | | | |9800h-9DFFh                  |
|      | | | | | | | | | | | | | | | | |B000h-B1FFh, B400h-B5FFh,    |
|      | | | | | | | | | | | | | | | | |B800h-BDFFh                  |
|      | | | | | | | | | | | | | | | | |D000h-D1FFh, D400h-D5FFh,    |
|      | | | | | | | | | | | | | | | | |D800h-DDFFh                  |
|      | | | | | | | | | | | | | | | | |F000h-F1FFh, F400h-F5FFh,    |
|      | | | | | | | | | | | | | | | | |F800h-FDFFh                  |
|Y7    |1|X|X|1|X|X|1|X|X|X|X|X|X|X|X|X|9200h-93FFh, 9600h-97FFh,    |
|      | | | | | | | | | | | | | | | | |9A00h-9FFFh                  |
|      | | | | | | | | | | | | | | | | |B200h-B3FFh, B600h-B7FFh,    |
|      | | | | | | | | | | | | | | | | |BA00h-BFFFh                  |
|      | | | | | | | | | | | | | | | | |D200h-D3FFh, D600h-D7FFh,    |
|      | | | | | | | | | | | | | | | | |DA00h-DFFFh                  |
|      | | | | | | | | | | | | | | | | |F200h-F3FFh, F600h-F7FFh,    |
|      | | | | | | | | | | | | | | | | |FA00h-FFFFh                  |



       В  итоге  адресное  пространство  размером  в  64  Кбайт  разбито  на
диапазоны для 8 устройств. В каждом диапазоне выделено  8  участков  по  512
байт и 4 участка по 1536 байт.



                                 Задача № 2



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

|Наименование  |Диапазон      |Емкость       |
|устройства    |адресов       |(Кбайт)       |
|ПЗУ1          |0000h-03FFh   |1             |
|ОЗУ1          |0400h-0BFFh   |2             |
|УВВ1          |2000h-2FFFh   |4             |
|ПЗУ2          |3000h-4FFFh   |8             |
|ОЗУ2          |5000h-6FFFh   |8             |
|УВВ2          |8000h-FFFFh   |32            |



      Так  как  наименьший  блок  имеет  размер  1К  ячеек,  то  разрешающая
способность дешифратора должна обеспечивать деление  адресного  пространства
с точностью до зон размером 1К  ячеек.  Анализируя  шесть  старших  разрядов
адреса, получаем необходимую точность,  поскольку  они  делят  все  адресное
пространство обьемом 64К ячеек  на  26  =  64  части  по  1К  ячеек,  что  и
требуется.
      Выбираем за  основу ПЗУ с 10 адресными   входами  2716  (  К573РФ2  ),
имеющее  структуру 2К*8 бит  .  Выходы  00  -  05  этого  ПЗУ  подключаем  к
инверсным входам  выбора кристалла соответсвующих  микросхем.
      Разрабатываем прошивку ПЗУ.


|Устройство|Диапазон    |Адресные входы                  |Выходы        |
|          |адресов     |                                |              |
|          |            |A5  |A4  |A3  |A2  |A1  |A0  |0 1 2 3 4 5   |
|ROM 1     |0000h-03FFh |0   |0   |0   |0   |0   |0   |0 1 1 1 1 1   |
|RAM 1     |0400h-07FFh |0   |0   |0   |0   |0   |1   |1 0 1 1 1 1   |
|          |0800h-0BFFh |0   |0   |0   |0   |1   |0   |1 0 1 1 1 1   |
|-         |0C00h-0FFFh |0   |0   |0   |0   |1   |1   |1 1 1 1 1 1   |
|          |1000h-13FFh |0   |0   |0   |1   |0   |0   |1 1 1 1 1 1   |
|          |1400h-17FFh |0   |0   |0   |1   |0   |1   |1 1 1 1 1 1   |
|          |1800h-1BFFh |0   |0   |0   |1   |1   |0   |1 1 1 1 1 1   |
|          |1C00h-1FFFh |0   |0   |0   |1   |1   |1   |1 1 1 1 1 1   |
|IN-OUT 1  |2000h-23FFh |0   |0   |1   |0   |0   |0   |1 1 0 1 1 1   |
|          |2400h-27FFh |0   |0   |1   |0   |0   |1   |1 1 0 1 1 1   |
|          |2800h-2BFFh |0   |0   |1   |0   |1   |0   |1 1 0 1 1 1   |
|          |2C00h-2FFFh |0   |0   |1   |0   |1   |1   |1 1 1 1 1 1   |
|ROM 2     |3000h-33FFh |0   |0   |1   |1   |0   |0   |1 1 1 1 1 1   |
|          |3400h-37FFh |0   |0   |1   |1   |0   |1   |1 1 1 1 1 1   |
|          |3800h-3BFFh |0   |0   |1   |1   |1   |0   |1 1 1 1 1 1   |
|          |3C00h-3FFFh |0   |0   |1   |1   |1   |1   |1 1 1 1 1 1   |
|          |4000h-43FFh |0   |1   |0   |0   |0   |0   |1 1 1 1 1 1   |
|          |4400h-47FFh |0   |1   |0   |0   |0   |1   |1 1 1 1 1 1   |
|          |4800h-4BFFh |0   |1   |0   |0   |1   |0   |1 1 1 1 1 1   |
|          |4C00h-4FFFh |0   |1   |0   |0   |1   |1   |1 1 1 1 1 1   |
|RAM 2     |5000h-53FFh |0   |1   |0   |1   |0   |0   |1 1 1 1 1 1   |
|          |5400h-57FFh |0   |1   |0   |1   |0   |1   |1 1 1 1 1 1   |
|          |5800h-5BFFh |0   |1   |0   |1   |1   |0   |1 1 1 1 1 1   |
|          |5C00h-5FFFh |0   |1   |0   |1   |1   |1   |1 1 1 1 1 1   |
|          |6000h-63FFh |0   |1   |1   |0   |0   |0   |1 1 1 1 1 1   |
|          |6400h-67FFh |0   |1   |1   |0   |0   |1   |1 1 1 1 1 1   |
|          |6800h-6BFFh |0   |1   |1   |0   |1   |0   |1 1 1 1 1 1   |
|          |6C00h-6FFFh |0   |1   |1   |0   |1   |1   |1 1 1 1 1 1   |
|-         |7000h-73FFh |0   |1   |1   |1   |0   |0   |1 1 1 1 1 1   |
|          |7400h-77FFh |0   |1   |1   |1   |0   |1   |1 1 1 1 1 1   |
|          |7800h-7BFFh |0   |1   |1   |1   |1   |0   |1 1 1 1 1 1   |
|          |7C00h-7FFFh |0   |1   |1   |1   |1   |1   |1 1 1 1 1 1   |
|Устройство|Диапазон    |Адресные входы                  |Выходы        |
|          |адресов     |                                |              |
|          |            |A5  |A4  |A3  |A2  |A1  |A0  |0 1 2 3 4 5   |
|IN-OUT 2  |8000h-83FFh |1   |0   |0   |0   |0   |0   |1 1 1 1 1 1   |
|          |8400h-87FFh |1   |0   |0   |0   |0   |1   |1 1 1 1 1 1   |
|          |8800h-8BFFh |1   |0   |0   |0   |1   |0   |1 1 1 1 1 1   |
|          |8C00h-8FFFh |1   |0   |0   |0   |1   |1   |1 1 1 1 1 1   |
|          |9000h-93FFh |1   |0   |0   |1   |0   |0   |1 1 1 1 1 1   |
|          |9400h-97FFh |1   |0   |0   |1   |0   |1   |1 1 1 1 1 1   |
|          |9800h-9BFFh |1   |0   |0   |1   |1   |0   |1 1 1 1 1 1   |
|          |9C00h-9FFFh |1   |0   |0   |1   |1   |1   |1 1 1 1 1 1   |
|          |A000h-A3FFh |1   |0   |1   |0   |0   |0   |1 1 1 1 1 1   |
|          |A400h-A7FFh |1   |0   |1   |0   |0   |1   |1 1 1 1 1 1   |
|          |A800h-ABFFh |1   |0   |1   |0   |1   |0   |1 1 1 1 1 1   |
|          |AC00h-AFFFh |1   |0   |1   |0   |1   |1   |1 1 1 1 1 1   |
|          |B000h-B3FFh |1   |0   |1   |1   |0   |0   |1 1 1 1 1 1   |
|          |B400h-B7FFh |1   |0   |1   |1   |0   |1   |1 1 1 1 1 1   |
|          |B800h-BBFFh |1   |0   |1   |1   |1   |0   |1 1 1 1 1 1   |
|          |BC00h-BFFFh |1   |0   |1   |1   |1   |1   |1 1 1 1 1 1   |
|          |C000h-C3FFh |1   |1   |0   |0   |0   |0   |1 1 1 1 1 1   |
|          |C400h-C7FFh |1   |1   |0   |0   |0   |1   |1 1 1 1 1 1   |
|          |C800h-CBFFh |1   |1   |0   |0   |1   |0   |1 1 1 1 1 1   |
|          |CC00h-CFFFh |1   |1   |0   |0   |1   |1   |1 1 1 1 1 1   |
|          |D000h-D3FFh |1   |1   |0   |1   |0   |0   |1 1 1 1 1 1   |
|          |D400h-D7FFh |1   |1   |0   |1   |0   |1   |1 1 1 1 1 1   |
|          |D800h-DBFFh |1   |1   |0   |1   |1   |0   |1 1 1 1 1 1   |
|          |DC00h-DFFFh |1   |1   |0   |1   |1   |1   |1 1 1 1 1 1   |
|          |E000h-E3FFh |1   |1   |1   |0   |0   |0   |1 1 1 1 1 1   |
|          |E400h-E7FFh |1   |1   |1   |0   |0   |1   |1 1 1 1 1 1   |
|          |E800h-EBFFh |1   |1   |1   |0   |1   |0   |1 1 1 1 1 1   |
|          |EC00h-EFFFh |1   |1   |1   |0   |1   |1   |1 1 1 1 1 1   |
|          |F000h-F3FFh |1   |1   |1   |1   |0   |0   |1 1 1 1 1 1   |
|          |F400h-F7FFh |1   |1   |1   |1   |0   |1   |1 1 1 1 1 1   |
|          |F800h-FBFFh |1   |1   |1   |1   |1   |0   |1 1 1 1 1 1   |
|          |FC00h-FFFFh |1   |1   |1   |1   |1   |1   |1 1 1 1 1 1   |



                             Схема дешифратора :



                               Карта памяти :


|      |3FFh  |7FFh  |BFFh  |FFFh  |      |
|0000h |ROM 1 |RAM 1        |-     |0FFFh |
|1000h |-                           |1FFFh |
|2000h |IN-OUT 1                    |2FFFh |
|3000h |ROM 2                       |3FFFh |
|4000h |                            |4FFFh |
|5000h |RAM 2                       |5FFFh |
|6000h |                            |6FFFh |
|7000h |-                           |7FFFh |
|8000h |IN-OUT 2                    |8FFFh |
|9000h |                            |9FFFh |
|A000h |                            |AFFFh |
|B000h |                            |BFFFh |
|C000h |                            |CFFFh |
|D000h |                            |DFFFh |
|E000h |                            |EFFFh |
|F000h |                            |FFFFh |
|      |000h  |400h  |800h  |C00h  |      |



                                 Задача № 3



      Разделить адресное пространство 64 килобайта на 18 равных частей. В
качестве дешифратора адреса используется ПЛМ. Разбиение адресного
пространства показать в виде схемы и таблицы.

      Размер одной части 65536 / 18 = 3640 байт. Т.к. 3640  *  18  =  65520,
последние 16 ячеек не будут использоваться.
      Произведем разбиение 3640 байт на участки 2N :

            3640 = 2048 + 1024 + 512 + 32 + 16 + 8

      В результате получим 6 областей памяти по 18 участков в каждой :

                       0000h-8FFFh ( участки размером 2048 )
                       9000h-D7FFh ( участки размером 1024 )
                       D800h-FBFFh ( участки размером 512 )
                       FC00h-FE3Fh ( участки размером 32 )
                       FE40h-FF5Fh ( участки размером 16 )
                       FF60h-FFEFh ( участки размером 8 )



                               Прошивка ПЛМ 1

|Область  |Диапазон   |Разряды адреса                                   |
|         |адресов    |                                                 |
|         |           |1 |1 |1 |1 |1 |1 |9 |8 |7 |6 |5 |4 |3 |2 |1 |0 |
|         |           |5 |4 |3 |2 |1 |0 |  |  |  |  |  |  |  |  |  |  |
|1        |0000h-07FFh|0 |0 |0 |0 |0 |X |X |X |X |X |X |X |X |X |X |X |
|         |9000h-93FFh|1 |0 |0 |1 |0 |0 |X |X |X |X |X |X |X |X |X |X |
|         |D800h-D9FFh|1 |1 |0 |1 |1 |0 |0 |X |X |X |X |X |X |X |X |X |
|         |FC00h-FC1Fh|1 |1 |1 |1 |1 |1 |0 |0 |0 |0 |0 |X |X |X |X |X |
|         |FE40h-FE4Fh|1 |1 |1 |1 |1 |1 |1 |0 |0 |1 |0 |0 |X |X |X |X |
|         |FF60h-FF67h|1 |1 |1 |1 |1 |1 |1 |1 |0 |1 |1 |0 |0 |X |X |X |
|2        |0800h-0FFFh|0 |0 |0 |0 |1 |X |X |X |X |X |X |X |X |X |X |X |
|         |9400h-97FFh|1 |0 |0 |1 |0 |1 |X |X |X |X |X |X |X |X |X |X |
|         |DA00h-DBFFh|1 |1 |0 |1 |1 |0 |1 |X |X |X |X |X |X |X |X |X |
|         |FC20h-FC3Fh|1 |1 |1 |1 |1 |1 |0 |0 |0 |0 |1 |X |X |X |X |X |
|         |FE50h-FE5Fh|1 |1 |1 |1 |1 |1 |1 |0 |0 |1 |0 |0 |X |X |X |X |
|         |FF68h-FF6Fh|1 |1 |1 |1 |1 |1 |1 |1 |0 |1 |1 |0 |1 |X |X |X |
|3        |1000h-17FFh|0 |0 |0 |1 |0 |X |X |X |X |X |X |X |X |X |X |X |
|         |9800h-9BFFh|1 |0 |0 |1 |1 |0 |X |X |X |X |X |X |X |X |X |X |
|         |DC00h-DDFFh|1 |1 |0 |1 |1 |1 |0 |X |X |X |X |X |X |X |X |X |
|         |FC40h-FC5Fh|1 |1 |1 |1 |1 |1 |0 |0 |0 |1 |0 |X |X |X |X |X |
|         |FE60h-FE6Fh|1 |1 |1 |1 |1 |1 |1 |0 |0 |1 |1 |0 |X |X |X |X |
|         |FF70h-FF77h|1 |1 |1 |1 |1 |1 |1 |1 |0 |1 |1 |1 |0 |X |X |X |
|4        |1800h-1FFFh|0 |0 |0 |1 |1 |X |X |X |X |X |X |X |X |X |X |X |
|         |9C00h-9FFFh|1 |0 |0 |1 |1 |1 |X |X |X |X |X |X |X |X |X |X |
|         |DE00h-DFFFh|1 |1 |0 |1 |1 |1 |1 |X |X |X |X |X |X |X |X |X |
|         |FC60h-FC7Fh|1 |1 |1 |1 |1 |1 |0 |0 |0 |1 |1 |X |X |X |X |X |
|         |FE70h-FE7Fh|1 |1 |1 |1 |1 |1 |1 |0 |0 |1 |1 |1 |X |X |X |X |
|         |FF78h-FF7Fh|1 |1 |1 |1 |1 |1 |1 |1 |0 |1 |1 |0 |0 |X |X |X |
|5        |2000h-27FFh|0 |0 |1 |0 |0 |X |X |X |X |X |X |X |X |X |X |X |
|         |A000h-A3FFh|1 |0 |1 |0 |0 |0 |X |X |X |X |X |X |X |X |X |X |
|         |E000h-E1FFh|1 |1 |1 |0 |0 |1 |0 |X |X |X |X |X |X |X |X |X |
|         |FC80h-FC9Fh|1 |1 |1 |1 |1 |1 |0 |0 |1 |0 |0 |X |X |X |X |X |
|         |FE80h-FE8Fh|1 |1 |1 |1 |1 |1 |1 |0 |1 |0 |0 |0 |X |X |X |X |
|         |FF80h-FF87h|1 |1 |1 |1 |1 |1 |1 |1 |1 |0 |0 |0 |0 |X |X |X |
|6        |2800h-2FFFh|0 |0 |1 |0 |1 |X |X |X |X |X |X |X |X |X |X |X |
|         |A400h-A7FFh|1 |0 |1 |0 |0 |1 |X |X |X |X |X |X |X |X |X |X |
|         |E200h-E3FFh|1 |1 |1 |0 |0 |0 |1 |X |X |X |X |X |X |X |X |X |
|         |FCA0h-FCBFh|1 |1 |1 |1 |1 |1 |0 |0 |1 |0 |1 |X |X |X |X |X |
|         |FE90h-FE9Fh|1 |1 |1 |1 |1 |1 |1 |0 |1 |0 |0 |1 |X |X |X |X |
|         |FF88h-FF8Fh|1 |1 |1 |1 |1 |1 |1 |1 |1 |0 |0 |0 |1 |X |X |X |
|7        |3000h-37FFh|0 |0 |1 |1 |0 |X |X |X |X |X |X |X |X |X |X |X |
|         |A800h-ABFFh|1 |0 |1 |0 |1 |0 |X |X |X |X |X |X |X |X |X |X |
|         |E400h-E5FFh|1 |1 |1 |0 |0 |1 |0 |X |X |X |X |X |X |X |X |X |
|         |FCC0h-FCDFh|1 |1 |1 |1 |1 |1 |0 |0 |1 |1 |0 |X |X |X |X |X |
|         |FEA0h-FEAFh|1 |1 |1 |1 |1 |1 |1 |0 |1 |0 |1 |0 |X |X |X |X |
|         |FF90h-FF97h|1 |1 |1 |1 |1 |1 |1 |1 |1 |0 |0 |1 |X |X |X |X |
|8        |3800h-3FFFh|0 |0 |1 |1 |1 |X |X |X |X |X |X |X |X |X |X |X |
|         |AC00h-AFFFh|1 |0 |1 |0 |1 |1 |X |X |X |X |X |X |X |X |X |X |
|         |E600h-E7FFh|1 |1 |1 |0 |0 |1 |1 |X |X |X |X |X |X |X |X |X |
|         |FCEOh-FCFFh|1 |1 |1 |1 |1 |1 |0 |0 |1 |1 |1 |X |X |X |X |X |
|         |FEB0h-FEBFh|1 |1 |1 |1 |1 |1 |1 |0 |1 |0 |1 |1 |X |X |X |X |
|         |FF98h-FF9Fh|1 |1 |1 |1 |1 |1 |1 |1 |1 |0 |0 |1 |X |X |X |X |
|9        |4000h-47FFh|1 |0 |1 |1 |0 |0 |X |X |X |X |X |X |X |X |X |X |
|         |B000h-B3FFh|1 |0 |1 |1 |0 |0 |X |X |X |X |X |X |X |X |X |X |
|         |E800h-E9FFh|1 |1 |1 |0 |1 |0 |0 |X |X |X |X |X |X |X |X |X |
|         |FD00h-FD1Fh|1 |1 |1 |1 |1 |1 |0 |1 |0 |0 |0 |X |X |X |X |X |
|         |FEC0h-FECFh|1 |1 |1 |1 |1 |1 |1 |0 |1 |1 |0 |0 |X |X |X |X |
|         |FFA0h-FFA7h|1 |1 |1 |1 |1 |1 |1 |1 |1 |0 |1 |0 |X |X |X |X |


                               Прошивка ПЛМ 2

|Область  |Диапазон   |Разряды адреса                                   |
|         |адресов    |                                                 |
|         |           |1 |1 |1 |1 |1 |1 |9 |8 |7 |6 |5 |4 |3 |2 |1 |0 |
|         |           |5 |4 |3 |2 |1 |0 |  |  |  |  |  |  |  |  |  |  |
|10       |4800h-4FFFh|0 |1 |0 |0 |1 |X |X |X |X |X |X |X |X |X |X |X |
|         |B400h-B7FFh|1 |0 |1 |1 |0 |1 |X |X |X |X |X |X |X |X |X |X |
|         |EA00h-EBFFh|1 |1 |1 |0 |1 |0 |1 |X |X |X |X |X |X |X |X |X |
|         |FD20h-FD3Fh|1 |1 |1 |1 |1 |1 |0 |1 |0 |0 |1 |X |X |X |X |X |
|         |FED0h-FEDFh|1 |1 |1 |1 |1 |1 |1 |0 |1 |1 |0 |1 |X |X |X |X |
|         |FFA8h-FFAFh|1 |1 |1 |1 |1 |1 |1 |1 |1 |0 |1 |0 |1 |X |X |X |
|11       |5000h-57FFh|0 |1 |0 |1 |1 |X |X |X |X |X |X |X |X |X |X |X |
|         |B800h-BBFFh|1 |0 |1 |1 |1 |0 |X |X |X |X |X |X |X |X |X |X |
|         |EC00h-EDFFh|1 |1 |1 |0 |1 |1 |0 |X |X |X |X |X |X |X |X |X |
|         |FD40h-FD5Fh|1 |1 |1 |1 |1 |1 |0 |1 |0 |1 |0 |X |X |X |X |X |
|         |FEE0h-FEEFh|1 |1 |1 |1 |1 |1 |1 |0 |1 |1 |1 |0 |X |X |X |X |
|         |FFB0h-FFB7h|1 |1 |1 |1 |1 |1 |1 |1 |1 |0 |1 |1 |0 |X |X |X |
|12       |5800h-5FFFh|0 |1 |0 |1 |0 |X |X |X |X |X |X |X |X |X |X |X |
|         |BC00h-BFFFh|1 |0 |1 |1 |1 |1 |X |X |X |X |X |X |X |X |X |X |
|         |EE00h-EFFFh|1 |1 |1 |0 |1 |1 |1 |X |X |X |X |X |X |X |X |X |
|         |FD60h-FD7Fh|1 |1 |1 |1 |1 |1 |0 |1 |0 |1 |1 |X |X |X |X |X |
|         |FEF0h-FEFFh|1 |1 |1 |1 |1 |1 |1 |0 |1 |1 |1 |1 |X |X |X |X |
|         |FFB8h-FFBFh|1 |1 |1 |1 |1 |1 |1 |1 |1 |0 |1 |1 |1 |X |X |X |
|13       |6000h-67FFh|0 |1 |1 |0 |1 |X |X |X |X |X |X |X |X |X |X |X |
|         |C000h-C3FFh|1 |1 |0 |0 |0 |0 |X |X |X |X |X |X |X |X |X |X |
|         |F000h-F1FFh|1 |1 |1 |1 |0 |0 |0 |X |X |X |X |X |X |X |X |X |
|         |FD80h-FD9Fh|1 |1 |1 |1 |1 |1 |0 |1 |1 |0 |0 |X |X |X |X |X |
|         |FF00h-FFOFh|1 |1 |1 |1 |1 |1 |1 |1 |0 |0 |0 |0 |X |X |X |X |
|         |FFC0h-FFC7h|1 |1 |1 |1 |1 |1 |1 |1 |1 |1 |0 |0 |0 |X |X |X |
|14       |6800h-6FFFh|0 |1 |1 |0 |0 |X |X |X |X |X |X |X |X |X |X |X |
|         |C400h-C7FFh|1 |1 |0 |0 |0 |1 |X |X |X |X |X |X |X |X |X |X |
|         |F200h-F3FFh|1 |1 |1 |1 |0 |0 |1 |X |X |X |X |X |X |X |X |X |
|         |FDA0h-FDBFh|1 |1 |1 |1 |1 |1 |0 |1 |1 |0 |1 |X |X |X |X |X |
|         |FF10h-FF1Fh|1 |1 |1 |1 |1 |1 |1 |1 |0 |0 |0 |1 |X |X |X |X |
|         |FFC8h-FFCFh|1 |1 |1 |1 |1 |1 |1 |1 |1 |1 |0 |0 |1 |X |X |X |
|15       |7000h-77FFh|0 |1 |1 |1 |1 |X |X |X |X |X |X |X |X |X |X |X |
|         |C800h-CBFFh|1 |1 |0 |0 |1 |0 |X |X |X |X |X |X |X |X |X |X |
|         |F400h-F5FFh|1 |1 |1 |1 |0 |1 |0 |X |X |X |X |X |X |X |X |X |
|         |FDC0h-FDDFh|1 |1 |1 |1 |1 |1 |0 |1 |1 |1 |0 |X |X |X |X |X |
|         |FF20h-FF2Fh|1 |1 |1 |1 |1 |1 |1 |1 |0 |0 |1 |0 |X |X |X |X |
|         |FFD0h-FFD7h|1 |1 |1 |1 |1 |1 |1 |1 |1 |1 |0 |1 |0 |X |X |X |
|16       |7800h-7FFFh|0 |1 |1 |1 |0 |X |X |X |X |X |X |X |X |X |X |X |
|         |CC00h-CFFFh|1 |1 |0 |0 |1 |1 |X |X |X |X |X |X |X |X |X |X |
|         |F600h-F7FFh|1 |1 |1 |1 |0 |1 |1 |X |X |X |X |X |X |X |X |X |
|         |FDE0h-FDFFh|1 |1 |1 |1 |1 |1 |0 |1 |1 |1 |1 |X |X |X |X |X |
|         |FF30h-FF3Fh|1 |1 |1 |1 |1 |1 |1 |1 |0 |0 |1 |1 |X |X |X |X |
|         |FFD8h-FFDFh|1 |1 |1 |1 |1 |1 |1 |1 |1 |1 |0 |1 |X |X |X |X |
|17       |8000h-87FFh|1 |0 |0 |0 |1 |X |X |X |X |X |X |X |X |X |X |X |
|         |D000h-D3FFh|1 |1 |0 |1 |0 |0 |X |X |X |X |X |X |X |X |X |X |
|         |F800h-F9FFh|1 |1 |1 |1 |1 |0 |0 |X |X |X |X |X |X |X |X |X |
|         |FE00h-FE1Fh|1 |1 |1 |1 |1 |1 |1 |0 |0 |0 |0 |X |X |X |X |X |
|         |FF40h-FF4Fh|1 |1 |1 |1 |1 |1 |1 |1 |0 |1 |0 |0 |X |X |X |X |
|         |FFE0h-FFE7h|1 |1 |1 |1 |1 |1 |1 |1 |1 |1 |1 |0 |X |X |X |X |
|18       |8800h-8FFFh|1 |0 |0 |0 |0 |X |X |X |X |X |X |X |X |X |X |X |
|         |D400h-D7FFh|1 |1 |0 |1 |0 |1 |X |X |X |X |X |X |X |X |X |X |
|         |FA00h-EBFFh|1 |1 |1 |1 |1 |0 |1 |X |X |X |X |X |X |X |X |X |
|         |FE20h-FE3Fh|1 |1 |1 |1 |1 |1 |1 |0 |0 |0 |1 |X |X |X |X |X |
|         |FF50h-FF5Fh|1 |1 |1 |1 |1 |1 |1 |1 |0 |1 |0 |1 |X |X |X |X |
|         |FFE8h-FFEFh|1 |1 |1 |1 |1 |1 |1 |1 |1 |1 |1 |0 |X |X |X |X |


      В результате получена таблица прошивки ПЛМ  для  разделения  адресного
пространства 64 кБ на 18 несплошных равных частей.
      Исходя из требуемого количества произведений (  18  *  6  =  108  )  и
количества выходных  функций  (18),  выбираем  в  качестве  элементной  базы
выпускаемую фирмой ADVANCED  MICRO  DEVICES  микросхему  ПЛМ  PLS30S16.  Эта
микросхема позволяет за счет мультиплексирования четырех адресных  входов  с
выходами иметь от 12 до 17 входов и  от  8  до  12  выходов  при  количестве
произведений до 64.
      Для решения поставленной задачи берем две ПЛМ,  запараллеленные  входы
которых подключены к шине адреса, а  выходы  –  к  входам  выбора  кристалла
соответствующих микросхем.



               Технические данные на ПЛМ PLS30S16 фирмы AMD :



                            - IC MASTER/Windows -



          (Title)            :PLD|BIP||OTPRC
          Section            :PROGRAMMABLE LOGIC DEVICES
          CAT0               :PLD
          Category           :Bipolar
          CAT1               :BIP
          MinorA             :One-Time
          Programmable~Registered/Combinatorial Outputs
          CAT3               :OTPRC
          MDD Code           :AMD
          Manufacturer's Name:ADVANCED MICRO DEVICES
          Device Number      :PLS30S16-40
          Disc               :*93
          Date               :10/26/92
          Oper               :BAC
          Transcode          :E
          RBASE              :30S16
          MBase              :PLS30S16
          Data Book          :DATASHEET
          Propagation Delay (:40
          Maximum Clock (MHz):22.2
          Product Terms      :64
          Flip-Flops         :12
          Dedicated Inputs   :12-17
          Bidirectional I/Os :8-12
          Standby Current (mA:225
          Active Current (mA):225
          Pins               :28
          Has Image          :N



-----------------------
[pic]