Gibt es Montageanweisungen, um die "OF" - und "TF" -Flags im Intels 8086 16-Bit Flags-Register direkt zu setzen oder zu löschen? Wenn nicht, welchen Pseudocode sollten wir verwenden?Montageanweisung zum Setzen, Löschen von OF- und TF-Flags
Antwort
http://en.wikipedia.org/wiki/Trap_flag
Die 8086 hat keine Anweisung direkt eingestellt oder den Trap-Flag zurückgesetzt. Diese Operationen werden ausgeführt, indem das Flag-Register auf den Stapel geschoben wird, das Trap-Flag-Bit auf das geändert wird, was der Programmierer wünscht, und dann das Flag-Register wieder vom Stapel entfernt wird. Die Anweisungen, die Trap-Flag zu setzen, sind:
PUSHF ; Push flags on stack
MOV BP,SP ; Copy SP to BP for use as index
OR WORD PTR[BP+0],0100H ; Set TF flag
POPF ; Restore flag Register
die Trap-Flag zurückzusetzen, einfach ersetzen die OR-Befehl in der vorhergehenden Sequenz mit der Anweisung:
AND WORD PTR[BP+0],0FEFFH
einzustellen und löschen Sie das Überlauf-Flag, können Sie das gleiche tun, ersetzen 0100H
mit 0800H
und 0FEFFh
mit 0F7FFh
.
Achten Sie darauf, was TF
tut, bevor Sie es einstellen. Es ist eine Falle.
Was ist der Grund dafür, 'mov bp, sp' zu machen und * bp * register zu verwenden, wenn man' 'oder word [sp], 0100h' nur mit * sp * register benutzen kann? – golem
Da 8086 im 16-Bit-Real-Modus läuft, gibt es keine Möglichkeit, word [sp] zu machen, da die einzigen möglichen Basisregister in einem Speicheroperanden BX, BP, SI und DI sind. – hlide
Haben Sie die [Intel-Handbücher] (http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html) gelesen, bevor Sie diese Frage gestellt haben? – DCoder
http://en.wikipedia.org/wiki/Trap_flag –
@DCoder haben Sie jemals einen Pseudo-Code für solche Dinge in Intel-Handbüchern gefunden, bevor Sie einen Kommentar abgeben?! –