Перевод из десятичной в восьмеричную систему счисления - Assembler

Узнай цену своей работы

Формулировка задачи:

Есть программка которая переводит из 10 в 8 систему счисления
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
Она выдает просто в восьмеричной системе как сделать чтоб она сначала выводила в 10 и через тире в восьмеричной!

Решение задачи: «Перевод из десятичной в восьмеричную систему счисления»

textual
Листинг программы
; masm dos exe #...end start

Объяснение кода листинга программы

  1. Переменная A содержит десятичное число, которое необходимо преобразовать в восьмеричную систему счисления.
  2. Переменная B инициализируется значением 0. Она будет использоваться для хранения результата преобразования.
  3. Используя цикл, проходящий от 0 до 7, происходит деление числа A на 8 с последующим сохранением частного в переменной B.
  4. После завершения цикла, в переменной B будет храниться результат преобразования числа A в восьмеричную систему счисления.
  5. Переменная C содержит строку, которая будет выведена на экран после выполнения преобразования.
  6. Используя цикл, проходящий от 0 до 7, происходит конкатенация (объединение) строк C и числа B.
  7. После завершения цикла, на экран будет выведена строка, представляющая результат преобразования числа A в восьмеричную систему счисления.

Оцени полезность:

11   голосов , оценка 4.364 из 5
Похожие ответы