;************************** 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).
Ссылка на скачивание - внизу страницы.