Написать программу которая будет переводить числа из 14-ой системы счисления в 8-ую систему счисления - Assembler
Формулировка задачи:
Помогите. очень нужно. Если можно, то как можно скорее) заранее спасибо) что-то у самой не получается(
Решение задачи: «Написать программу которая будет переводить числа из 14-ой системы счисления в 8-ую систему счисления»
textual
Листинг программы
.186 .model small .stack 100h .code osnin equ 14 ; исходная система счисления osnout equ 8 ; конечная система счисления start: mov ax, @data mov ds, ax mov es, ax nextch: mov ah,01h ; принимаем новый символ int 21h cmp al,2fH ; если нажали enter, del ,backspase, то это конец числа( проверки на неправельность ввода тут нет!) jl outchin sub al,30h ;делаем из введенного символа число xor ah,ah xchg ax,bx mov dx,osnin mul dx ; умножаем на основание исходного счисления add bx,ax ;и прибавляем новое jmp nextch outchin: mov dl,0ah mov ah,2 int 21h ;перевод строки mov cx,bx xor dx,dx l1: cmp cx,osnout*osnout*osnout*osnout ; если число больше jb l2 sub cx,osnout*osnout*osnout*osnout ; то вычитаем inc dx ;и увеличиваем счетчик cmp dl,10 jnz l1 add dx,7 jmp l1 l2: add dl,30h ; теперь в dl разряд числа, чтобы он стал символом добавляем 30h mov ah,2 int 21h ;выводим его xor dx,dx l3: cmp cx,osnout*osnout*osnout jb l4 sub cx,osnout*osnout*osnout inc dx cmp dl,10 jnz l3 add dx,7 jmp l3 l4: add dl,30h mov ah,2 int 21h xor dx,dx l5: cmp cx,osnout*osnout jb l6 sub cx,osnout*osnout inc dx cmp dl,10 jnz l5 add dx,7 jmp l5 l6: add dl,30h mov ah,2 int 21h xor dx,dx l7: cmp cx,osnout jb l8 sub cx,osnout inc dl cmp dl,10 jnz l7 add dl,7 jmp l7 l8: add dl,30h mov ah,2 int 21h mov dl,cl cmp dl,9 jl l9 add dl,7 l9: add dl,30h mov ah,2 int 21h mov ax, 4c00h int 21h end start
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д