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