Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!cs.utexas.edu!rutgers!rochester!pt.cs.cmu.edu!sei!firth From: firth@sei.cmu.edu (Robert Firth) Newsgroups: comp.arch Subject: Re: PUSH on i8088/i80x86 Message-ID: <5524@bd.sei.cmu.edu> Date: 5 Jan 90 20:02:12 GMT References: <182DAVISTD@MSU> Reply-To: firth@sei.cmu.edu (Robert Firth) Organization: Software Engineering Institute, Pittsburgh, PA Lines: 25 In article <182DAVISTD@MSU> DAVISTD@MSU.BITNET (Tom Davis) writes: >In debugging some vendor code (:-) I came across what appears to be a subtle >difference between the i8088 and i80x86. Without an i80x86 manual handy, I >wondered if someone could verify my claim... > >On the i8088, a "PUSH SP" decrements SP before pushing it onto the stack. On >the i80x86, SP is pushed onto the stack before it is decremented (somehow). Well, I just checked my manuals for the 8086, 8088, 80286 and 80386. As best I can determine, all of them agree on this . PUSH xxx should decrement SP and then push the value of xxx . PUSH SP is a legal instruction . There is no difference among the 80xxx processors in the semantics of the PUSH instruction Now, I may have missed it, or there may be a later revision I haven't got, but hope this helps anyway. [ Intel: The 8086 Family User's Manual (1979); iAPX 286 Mocroprocessor Architecture Overview (1980); 80386 architecture manual [231630] (1985); 80376 architecture manual [240182] (1988) ]