; Выходной параметр: регистр 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 ;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.