|
;************************** C8_10 ****************************** |
||
|
; Подпрограмма преобразования двоичного целого беззнакового числа ; формата 8 в двоично-десятичное (код 8421) число формата 3*4. ; Входной параметр: (С) - двоичное число. ; Выходной параметр: (Н,L) - эквивалентное двоично-десятичное число ; (3 цифры). |
||
|
;**************************************************************** |
||
|
C8_10: |
LXI H, 0 |
; Обнуление текущей суммы |
|
MVI B, 8 |
; Счетчик циклов |
|
|
; Сдвиг двоичного числа влево |
||
|
CYCLE: |
MOV A, C |
|
|
RLC |
||
|
MOV C, A |
||
|
; Двоично-десятичное удвоение суммы с учетом переноса |
||
|
MOV A, L |
||
|
ADC L |
||
|
DAA |
||
|
MOV L, A |
||
|
MOV A, H |
||
|
ADC H |
||
|
DAA |
||
|
MOV H, A |
||
|
; Проверка конца цикла |
||
|
DCR B |
||
|
JNZ CYCLE |
; Зацикливание |
|
|
RET |
||
|
;************************** C16_10 ***************************** |
|||
|
; Подпрограмма преобразования двоичного целого беззнакового числа ; формата 16 в двоично-десятичное (код 8421) число формата 5*4. ; Входной параметр: (В,С) - двоичное число. ; Выходные параметры: (А,Н,L) - эквивалентное двоично-десятичное число ; (5 цифр). |
|||
|
;**************************************************************** |
|||
|
; Обнуление текущей суммы (С,Н,L) |
|||
|
C16_10: |
XRA A |
||
|
MOV H, A |
|||
|
MOV L, A |
|||
|
MOV D, B |
|||
|
MOV E, C |
; (D,E) - исходное число |
||
|
MOV C, A |
|||
|
MVI B, 16 |
; Счетчик циклов |
||
|
; Сдвиг двоичного числа влево |
|||
|
CYCLE: |
XCHG |
||
|
DAD H |
|||
|
XCHG |
|||
|
; Двоично-десятичное удвоение суммы с учетом переноса |
|||
|
MOV A, L |
|||
|
ADC L |
|||
|
DAA |
|||
|
MOV L, A |
|||
|
MOV A, H |
|||
|
ADC H |
|||
|
DAA |
|||
|
MOV H, A |
|||
|
MOV A, C |
|||
|
ADC C |
|||
|
DAA |
|||
|
MOV C, A |
|||
|
; Проверка конца цикла |
|||
|
DCR B |
|||
|
JNZ CYCLE |
; Зацикливание |
||
|
MOV A, C |
|||
|
RET |
|||
|
;************************** C10_8****************************** |
|||
|
; Подпрограмма преобразования целого двоично-десятичного числа ; без знака формата 2*4 в двоичное число формата 8. ; Входной параметр: (А) - двоично-десятичное число. ; Выходной параметр: (А) - эквивалентное двоичное число. |
|||
|
;**************************************************************** |
|||
|
; Выделение старшей (СТЦ) и младшей (МЛЦ) цифр числа |
|||
|
C10_8: |
MOV В, A |
||
|
ANI 0FH |
|||
|
MOV C, A |
; (С) - МЛЦ |
||
|
MOV А, B |
|||
|
ANI 0F0H |
|||
|
RRC |
|||
|
MOV В, A |
; (В) = СТЦ*8 |
||
|
; Двоичное сложение: СТЦ*(8+2)+МЛЦ |
|||
|
RRC |
|||
|
RRC |
; (А) = СТЦ*2 |
||
|
ADD B |
; (А) = СТЦ*(8+2) |
||
|
ADD C |
; (А) = СТЦ*10+МЛЦ |
||
|
RET |
|||
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.