Assembler - prosty program podnoszacy liczbe do potegi

0

Witam mam problem z napisaniem prostego programu w assemblerze który podnosi liczbę całkowitą cx do potęgi bx a wynik zapisujący w ax

napisałem coś takiego:

 ; prog.asm
;================================================
.model tiny
.code
;================================================
prog segment
    assume cs: prog
start:
    mov ax, 1
    cmp bx, 0
    je koniec
    mov dx, 1
petla:      
    cmp bx, dx
    je koniec
    imul cx
    inc dx
    jmp petla
koniec:
    int 3
;================================================
.stack
;================================================
prog ends
    end start

program się kompiluje i uruchamia ale pętla chyba działa w nieskonczoność i się po chwili zawiesza
Proszę o pomoc w znalezieniu błędu. Dodam że kompiluje za pomocą MASM

0

Do pętli masz prostą instrukcję loop. Ilość powtórzeń dajesz w cx, a procesor sam sprawdzi czy cx jest większe od zera i jeżeli tak to zmniejszy go o 1 i skoczy tam gdzie chcesz.

    mov ax, podstawa
    mov bx, podstawa
    mov cx, wykładnik
petla:
    mul bx
    loop petla

Tylko delikatnie trzeba zmienić rejestry, żeby można było sterować pętlą przez cx.

0

rozumiem że podałeś mi jak to zrobić w przypadku żeby program działał jako funkcja a ja chciałem aby "użytkownik" podał podstawe i potęge

0

No i? Jaki masz konkretny problem z wczytaniem? Bo wiesz, dział praca jest niżej ;).

0

ok już wszystko zakumałem i mi działa dzięki bardzo bo na początku nie skumałem tej funkcji loop jeszcze raz dzięki

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0