2016-04-24 10 views
0

Ich untersuchte den 8086-Befehlssatz und schrieb einfache Assembler-Codes in emu8086. Ich habe alle MOV, ADD und andere Anweisungen verstanden, bis ich auf die LOOP-Anweisung stieß. Die LOOP wird in E2 umgewandelt, das ist in Ordnung. Aber um das Label zu verzweigen, wie konvertiert der Assembler es? Wenn der Code einfach ist, wird oft "Label" in FC konvertiert. Manchmal zu FA, F8 und anderen. Es wäre sehr bemerkenswert, wenn Sie den Mechanismus der Umwandlung des Markennamens in den entsprechenden Maschinencode diskutieren würden.Wie 8086 Assembler das Etikett in Opcode konvertiert?

Danke.

Antwort

2

Wie auf this page erklärt, ist das Etikett nur eine mnemonic für uns (Programmierer). Der Assembler übersetzt dieses Etikett in eine Nummer, z. ein Offset, der zu dem Befehlszeiger hinzugefügt werden soll, zu dem gesprungen werden soll, während CX nicht Null ist. In den Beispielen, die Sie zeigen, sind diese Versetzungen negative Zahlen (Vorzeichenbit ist auf eins gesetzt). Es werden also nur wenige Anweisungen zurückgespielt, wie Sie es in einer Schleife erwarten würden.