Перевод из десятичной в восьмеричную систему счисления - Assembler
Формулировка задачи:
Есть программка которая переводит из 10 в 8 систему счисления
Она выдает просто в восьмеричной системе как сделать чтоб она сначала выводила в 10 и через тире в восьмеричной!
stkseg segment stack db 256 dup (?) stkseg ends data segment mes1 db 'Vvedite chislo v 10-sisteme (0..65535):',0ah,0dh,'$' mes2 db 0ah,0dh,'Chislo v 8-sisteme:',0ah,0dh,'$' input db 6,0,7 dup ('$'),'$' outbx db 5 dup (8),'0','$' reslen db 0 data ends code segment assume cs: code, ds: data, ss: stkseg start: xor AX,data mov DS,AX mov ES,AX ;ввод числа mov AH,09h lea DX,mes1 int 21h mov AH, 0AH lea DX, input int 21H ;преобразование текста в число xor DX, DX xor DI, DI mov CL, input+1 lea SI, input+1 add SI, CX mov BP, 10 mov BX, 1 texttodigit: xor AH, AH mov AL, [SI] sub AL, 48 mul BX add DI, AX dec SI mov AX, BX mul BP mov BX, AX loop texttodigit p8: mov AX, DI push DI mov CX, 6 ;максимальная длина xor DX, DX mov BP, 8 ;основание div8: ;последовательное деление cmp AX,0 je done inc reslen div BP mov DI, CX dec DI add DL, 48 mov [outbx+DI], DL xor DX, DX loop div8 done: ;вывод результата mov AH, 09H lea DX, mes2 int 21H lea DX, outbx int 21H ;нормальный выход mov AH, 4CH int 21H code ends end start
Решение задачи: «Перевод из десятичной в восьмеричную систему счисления»
textual
Листинг программы
; masm dos exe #...end start
Объяснение кода листинга программы
- Переменная
A
содержит десятичное число, которое необходимо преобразовать в восьмеричную систему счисления. - Переменная
B
инициализируется значением 0. Она будет использоваться для хранения результата преобразования. - Используя цикл, проходящий от 0 до 7, происходит деление числа
A
на 8 с последующим сохранением частного в переменнойB
. - После завершения цикла, в переменной
B
будет храниться результат преобразования числаA
в восьмеричную систему счисления. - Переменная
C
содержит строку, которая будет выведена на экран после выполнения преобразования. - Используя цикл, проходящий от 0 до 7, происходит конкатенация (объединение) строк
C
и числаB
. - После завершения цикла, на экран будет выведена строка, представляющая результат преобразования числа
A
в восьмеричную систему счисления.