Написать программу которая будет переводить числа из 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

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

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