🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.lang.pascal.borland
Article #709

Re: What's wrong with this little TSR?

#709
From: Michael Knapp
Date: Tue, 25 Aug 1998 00:00
70 lines
3927 bytes
Horst Kraemer schrieb:
> 
> On Tue, 25 Aug 1998 18:39:59 +0200, Michael Knapp
> <michaelknapp@nol.at> wrote:
> 
> >> >         asm       { Enable INTERRUPTS again         }
> >> >         sti;
> >> >         popf;
> 
> >> ---> ???? popped the cleared I-flag here!
> 
> >POPF has *NO* effect on the I-flag !!!
> 
> Of course POPF will pop the I-flag.
> 

Let's have a look at the Intel Instruction Set Reference Manual...

POPF/POPFD�Pop Stack into EFLAGS Register

Pops a doubleword (POPFD) from the top of the stack (if the current
operand-size attribute is
32) and stores the value in the EFLAGS register or pops a word from the
top of the stack (if the
operand-size attribute is 16) and stores it in the lower 16 bits of the
EFLAGS register (that is,
the FLAGS register). (These instructions reverse the operation of the
PUSHF/PUSHFD instruc-tions.)
The POPF (pop flags) and POPFD (pop flags double) mnemonics reference
the same opcode.
The POPF instruction is intended for use when the operand-size attribute
is 16 and the POPFD
instruction for when the operand-size attribute is 32. Some assemblers
may force the operand
size to 16 when POPF is used and to 32 when POPFD is used. Others may
treat these mnemonics
as synonyms (POPF/POPFD) and use the current setting of the operand-size
attribute to deter-mine
the size of values to be popped from the stack, regardless of the
mnemonic used.
The effect of the POPF/POPFD instructions on the EFLAGS register changes
slightly,
depending on the mode of operation of the processor. When the processor
is operating in
protected mode at privilege level 0 (or in real-address mode, which is
equivalent to privilege
level 0), all the non-reserved flags in the EFLAGS register except the
VIP, VIF, and VM flags
can be modified. The VIP and VIF flags are cleared, and the VM flag is
unaffected.
When operating in protected mode, with a privilege level greater than 0,
but less than or equal
to IOPL, all the flags can be modified except the IOPL field and the
VIP, VIF, and VM flags.
Here, the IOPL flags are unaffected, the VIP and VIF flags are cleared,
and the VM flag is unaf-fected.
The interrupt flag (IF) is altered only when executing at a level at
least as privileged as
the IOPL. If a POPF/POPFD instruction is executed with insufficient
privilege, an exception
does not occur, but the privileged bits do not change.
When operating in virtual-8086 mode, the I/O privilege level (IOPL) must
be equal to 3 to use
POPF/POPFD instructions and the VM, RF, IOPL, VIP, and VIF flags are
unaffected. If the
IOPL is less than 3, the POPF/POPFD instructions cause a
general-protection exception (#GP).
See the section titled �EFLAGS Register� in Chapter 3 of the Intel
Architecture Software Devel-oper�s
Manual, Volume 1, for information about the EFLAGS registers.
Technical Details
Message-ID: <35E32A88.3305C41B@nol.at>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <35ded96b.41078299@news.rz.uni-karlsruhe.de> <35E20513.EF631A2F@hotmail.com> <35E2FD32.97351F78@eunet.at> <35E2E8DF.122B31B2@nol.at> <35e31b2f.3414235@news.snafu.de>

Show Full Headers
Complete Article Headers
X-Google-Language: ENGLISH,ASCII
X-Google-Thread: 10261c,9bcc55cc3c0b88c1
X-Google-Attributes: gid10261c,public
X-Google-Thread: 110467,9bcc55cc3c0b88c1
X-Google-Attributes: gid110467,public
X-Google-Thread: 111659,9bcc55cc3c0b88c1
X-Google-Attributes: gid111659,public
X-Google-Thread: 1006de,9bcc55cc3c0b88c1
X-Google-Attributes: gid1006de,public
X-Google-Thread: 110930,9bcc55cc3c0b88c1
X-Google-Attributes: gid110930,public
From: Michael Knapp <michaelknapp@nol.at>
Subject: Re: What's wrong with this little TSR?
Date: 1998/08/25
Message-ID: <35E32A88.3305C41B@nol.at>
X-Deja-AN: 384686311
Content-Transfer-Encoding: 8bit
References: <35ded96b.41078299@news.rz.uni-karlsruhe.de> <35E20513.EF631A2F@hotmail.com> <35E2FD32.97351F78@eunet.at> <35E2E8DF.122B31B2@nol.at> <35e31b2f.3414235@news.snafu.de>
Content-Type: text/plain; charset=iso-8859-1
Organization: NETWAY AG
Mime-Version: 1.0
Newsgroups: comp.lang.pascal.borland,comp.lang.pascal.misc,de.comp.lang.pascal.misc,fido.ger.pascal,z-netz.sprachen.pascal