Ich habe Programm zu schreiben (für beide SIC und SIC/XE Maschine)Multiplikation von zwei Zahlen ohne Verwendung MUL-Befehl
Ich versuche es geschrieben, indem eine SHL Operation verwenden, die als die Multiplikation der angegebenen Operanden die gleiche Operation durchführt, um zwei. Das Verschieben nach links um zwei Bitpositionen multipliziert den Operanden mit vier. Das Verschieben nach links um drei Bitpositionen multipliziert den Operanden mit acht. Im Allgemeinen wird ein Operand um n Bits nach links mit 2n multipliziert. Jeder Wert kann mit einer Reihe von Verschiebungen und Additionen oder Verschiebungen und Subtraktionen mit einer bestimmten Konstante multipliziert werden. Um beispielsweise das Achsenregister mit zehn zu multiplizieren, müssen Sie es nur mit acht multiplizieren und dann den ursprünglichen Wert zweimal addieren. Das heißt, 10 * ax = 8 * ax + 2 * ax. Der Code, dies zu erreichen ist
shl ax, 1 ;Multiply AX by two
mov bx, ax ;Save 2*AX for later
shl ax, 1 ;Multiply AX by four
shl ax, 1 ;Multiply AX by eight
add ax, bx ;Add in 2*AX to get 10*AX
Nun, wie kann ich ein Programm (SIC und SIC/EX-Maschine) schreiben? Könntest du bitte jemand mir helfen?
Das ist x86-Code, aber die Logik ist gültig. Also, wo bist du stecken geblieben? – Jester
Jemand könnte Ihnen antworten, aber das ist es nicht, worum SO eigentlich geht. Um wirkliche Unterstützung zu erhalten, sollten Sie versuchen, es selbst zu schreiben und dann zu posten, wenn Sie in Schwierigkeiten geraten. Dies ist keine Sprachlehrseite, noch ist es eine Website "schreibe diesen Code für mich". –