2012-10-03 7 views
6

Nehmen wir an, x ist ein Register, dessen Wert nicht bekannt ist. Ich muss x=2a+3b machen, wo a und b unbekannte Werte haben.Wie mache ich x = 2a + 3b in 4 Instruktionen mit ONLY mov, add, sub, neg?

kann ich die 8086 asm Anweisungen mov, add, sub, neg nur verwenden. Die Verwendung der mul Anweisung ist nicht erlaubt, und es gibt auch eine Begrenzung von 4 Anweisungen.

Ist es überhaupt möglich?

Antwort

10

Rewrite Ihren Ausdruck:

2a + 3b = 2(a + b) + b = (a + b) + (a + b) + b 

Beachten Sie, dass Sie nur den Wert von (a + b) einmal berechnen müssen.

+0

Heh, das ist genial! – Earlz

+2

nur als Referenz ist dies eine häufige Sub-Expressions-Eliminierung kombiniert mit algebraischer Reduktion (Reduktion gefolgt von CSE), nur wenn das OP weitere Untersuchungen durchführen möchte. – Necrolis

+0

Danke, jetzt habe ich es herausgefunden. – Lior