Программное обеспечение. CONTROL – основная программа работы МПС. Адрес ячейки ОЗУ для хранения состояния выходов порта вывода, страница 6

; Выходной параметр: регистр A – семисегментный код символа

;*********************************************************************

CROSSCODE:     

MVI            B, 0            

LXI             H, TABLE                     ; В паре HL – адрес TABLE

          DAD           B                                   ; (HL)        (HL)+(BC)

MOV           A, M           

RET

TABLE:                DB   3FH                      ; Код символа “0”

DB   06H                      ; Код символа “1”

DB   5BH                      ; Код символа “2”

DB   4FH                      ; Код символа “3”

DB   66H                      ; Код символа “4”

DB   6DH                      ; Код символа “5”

DB   7DH                      ; Код символа “6”

DB   07H                      ; Код символа “7”

DB   7FH                      ; Код символа “8”

DB   6FH                      ; Код символа “9”

DB   77H                      ; Код символа “A”

DB   7CH                      ; Код символа “B”

DB   39H                      ; Код символа “C”

DB   5EH                      ; Код символа “D”

DB   79H                      ; Код символа “E”

DB   71H                      ; Код символа “F”

; Адреса констант         

ADR_Q                  DW XXXXH                          

ADR_K1                DW XXXXH                   

ADR_K2                DW XXXXH                   

ADR_K3                DW XXXXH                   

ADR_K4                DW XXXXH                   

ADR_K5                DW XXXXH                   

;Подпрограмма DELAY

DELAY:

LXI   B,3300H

LOOP:

DCX  B

MOV           A,B

ORA  C

JNZ   LOOP

RET

;**************************  M16_16F********************************** *********************************************************************

; Подпрограмма умножения дробных двоичных чисел без знака с ФЗ

; формата   ,16 *  ,16 = ,16 . 

; Входные параметры: (В,С) - множитель, (D,E) - множимое.

; Выходные параметры: (В,С) - произведение.

; Используется подпрограмма M16_16.

;*********************************************************************

M16_16F:             CALL   M16_16   ; (В,С,Н,L) - произведение

; Округление СТБ,СРБ произведения

MOV   A, H          ;

RAL                      ;

JNC   PER             ;

INX   B                 ;

PER:                      RET                      ; (В,С) - произведение

;**************************  M16_16 *********************************** *********************************************************************

; Подпрограмма умножения целых двоичных чисел без знака

; формата 16*16=32.

; Входные параметры: (В,С) - множитель, (D,Е) - множимое.

; Выходные параметры: (В,С,Н,L) - произведение.

; Используется подпрограмма M16_8.  

;*********************************************************************

; Обнуление текущей суммы частичных произведений (ЧП)

M16_16:               XRA   A                ;        

MOV   H, A          ;

MOV   L, A          ;

; Умножение множимого на МЛБ множителя

MOV   A, C          ;

PUSH   B              ; Сохранение множителя

CALL  M16_8      ; (A,H,L) - произведение 1 (ПР1)

; Сохранение ПР1

XTHL                             ; Сохранение СРБ, МЛБ ПР1

; (H,L) - множитель

PUSH   PSW                   ; Сохранение СТБ ПР1

; Умножение множимого на СТБ множителя

MOV   A, H          ; (А) - СТБ множителя

CALL  M16_8      ; (A,H,L) - произведение 2 (ПР2)

; Сложение сдвинутых на 8 разрядов ПР1 и ПР2

MOV   B, A          ; (В) - СТБ ПР2

POP   PSW            ; (А) - СТБ ПР1

ADD   H               ;

MOV   C, A          ; (С) - сумма СТБ ПР1 и СТБ ПР2

JNC   PER2           ;

INR   B                 ; Учет переноса в СТБ

PER2:                             MOV   H, L           ; (Н) - МЛБ ПР2

MVI   L, 0             ;        

POP   D                 ; (D,E) - СРБ, МЛБ ПР1

DAD   D               ;

RNC                      ;

INX   B                 ; Учет переноса в СТБ

RET                      ;