2016-10-07 2 views
-1

und wir bekamen eine Aufgabe, die ich nicht herausfinden kann, wie zu tun ist. Die Aufgabe etwas geht:Berechnen Sie Potenzen nur mit Zusatz

Um eine Schleife zu machen, die von CX gezählt wird und die Leistung von 2^CX zum Beispiel zu berechnen: Wenn ich 5 in CX setzen bekomme ich 2^5.

Die Anweisung war es nur mit Addition zu tun und das Ergebnis in AL zu speichern, während nur LOOP,ADD,MOV verwendet wurde.

Ich konnte nur zur 2-Multiplikation kommen.

Hier ist, was ich versucht habe,

MOV AL,2 MOV CX,5 CALC: ADD AL,AL LOOP CALC

+1

Also, was haben Sie versucht? Weißt du was Power von 2 ist? Was ist 2^5? Was ist das Ergebnis für cx = 0? cx = 1? cx = 2? Irgendein Muster? – Ped7g

+2

Hinweis: Wenn Sie 'a = a + a', dann ist das Ergebnis' 2^1 * a'. Wenn du es nochmal machst, hast du '2^2 * a'. etc. Ich bin mir sicher, dass die meisten hier eine Antwort kennen würden, aber Sie sollten zuerst zeigen, was Sie versucht haben (bearbeiten Sie Ihre Frage und fügen Sie den Code ein). Sonst wirst du nichts lernen. –

+0

Nested Loops sind dein Freund. – Johan

Antwort

1

OK, jetzt können Sie einen Code haben, aber es hat nicht den richtigen Wert geben noch (es wahrscheinlich gibt Ihnen 64). Sie sollten mit 1, so AL + AL = 2, dann 4 usw.

Um genauer zu sein zu starten:

 MOV  AL,1 
     MOV  CX,5 
CALC: 
     ADD  AL,AL  ; 1+1=2, 2+2=4, 4+4=8, 8+8=16, 16+16=32=2^5 
     LOOP CALC 
+0

Oh, ich sehe, bei dem Code, den ich oben gepostet habe, war das Ergebnis 40h, was 64 Dezimalstellen bedeutet. Gibt es eine logische Erklärung, warum AL mit einem beginnen sollte? – user6219654

+0

@ user6219654: Ja, da ist. Ihre erste Schleife sollte 2 ergeben, und das ist 1 + 1, nicht 2 + 2. Mit anderen Worten, Sie beginnen mit 2^0 = 1. –

+0

oh, ok ich verstehe jetzt, danke! – user6219654