0 Daumen
779 Aufrufe
Bild Mathematik
Also ich habe die ganzen Befehle nicht verstanden jedoch werde ich aus der Aufgabe nicht schlau.Ich habe das ganze so verstanden und deswegen erscheint mir das ganze recht komisch erscheint.
Also Zeile eins schreibt den Wert eins in das Register AL heißt dort steht jetzt 0001 H (hexadezimal)jetzt beginnt das Problem. MUL DL Ich habe das so verstanden AL * DL (0000)=0000 HDekrementiere CX um also nun FFFFFFFF HJNZ (Jump if not Zero) also beginnt die schleife wieder bei 0 
Nach meinem Verständnis läuft die nun Verdammt lange nämlich solange bis für CX mal wieder null rauskommt. Den dann springt JNZ nicht mehr zu m1. 
Ich glaube ich habe irgendwas falsch gemacht denn mir erscheint das ganze etwas sehr unlogisch wenn man davon ausgeht dass das komplette Register mit 0 gefüllt ist. 
Vielen Dank für euere Hilfe
Avatar von

2 Antworten

0 Daumen

Du hast recht. So wie das programm dort steht macht es sehr wenig sinn.

mov al, 1
Schreibe 1 ins Register al
m1: mul dl
Multipliziere al mit dl und schreibe das Ergebnis nach ax (ah:al)
dec cx
erniedrige cx um 1. Wenns vorher 0 waren dann sind das jetz FFFF
jnz m1Springe wenn es nicht Null waren nach m1

Ich weiß ja nicht woher du den codeschnipsel hast, aber vermutlich sollte man mit etwas sinnvollerem anfangen.

Avatar von 487 k 🚀

Vermutlich sollst du bei dem Experiment von einer bestimmten Speicherbelegung ausgehen. Ansonsten macht das eben keinen Sinn.

0 Daumen

Der Schnipsel rechnet an aus, wobei a in DL und n in CX steht und n=0 aber nicht funktioniert.

Avatar von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community