Assembler - prosty program podnoszacy liczbe do potegi

Assembler - prosty program podnoszacy liczbe do potegi
R9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 41
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:

Kopiuj
 ; 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

RE
  • Rejestracja: dni
  • Ostatnio: dni
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.

Kopiuj
	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.

R9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 41
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

RE
  • Rejestracja: dni
  • Ostatnio: dni
0

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

R9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 41
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.