RSS    

   Курсовая работа: Микропроцессорные средства и системы

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-разрядной шины адреса.

Выходы дешиф-ратора Разряды адреса Диапазоны адресов
15 14 13 12 11 10 9 8 7 6 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

Страницы: 1, 2, 3, 4, 5, 6, 7


Новости


Быстрый поиск

Группа вКонтакте: новости

Пока нет

Новости в Twitter и Facebook

                   

Новости

© 2010.