Wie verwende ich Pusha/Popa in Assembly 8086 mit Tasm Compiler? Ich lese online, dass, weil Pusha und Popa in einer anderen Art von Assembly (.286) sind, ich es nicht verwenden kann, aber es gibt eine Möglichkeit, dem Compiler mitzuteilen, diese Befehle aufzunehmen.Verwenden Sie Pusha und Popa in 8086 mit TASM
Mein Code jetzt:
IDEAL
MODEL small
STACK 100h
DATASEG
CODESEG
proc OpenFile
push bp
mov bp, sp
pusha
mov dx, [bp + 6] ;Get File Name Offset
mov si, [bp + 4] ;Get File Handler
mov ah, 3Dh
xor al, al
int 21h
jc openerror
mov [word ptr si], ax
popa
pop bp
ret 4
openerror: lea dx, [ErrorMsg]
mov ah, 9h
int 21h
popa
pop bp
ret 4
endp OpenFile
Der Fehler erhalte ich:
Illegal instruction for currently selected processor(s)
Hat, wie eine Idee, jemand, das zu tun?
Umm, fügen Sie einfach ' .286' am Anfang Ihrer Datei? Eigentlich im 'IDEAL' Modus, der wahrscheinlich' P286' heißt. – Jester
Ich habe Turbo Assembler seit Jahren nicht mehr gesehen. +1 weil es (ist?) Und genialer Assembler war. 'Pusha' und' Popa' sind I386 Anweisungen IIRC. Sie können es nicht für '8086' verwenden. Ändern Sie Ihr Modell oder fügen Sie die Byte-Codes manuell hinzu. – jww
@Jester Ich kann nicht glauben, dass ich darauf reingefallen bin. Ich habe versucht, die '.286' nach dem IDEAL, nach dem Modell, in den codeseg und dataseg zu setzen, aber ich dachte nicht, dass es der Anfang der Datei sein sollte. Danke, das hat funktioniert! posten Sie eine Antwort – morha13