Skip to main content
100 votes
Accepted

Why didn't the 8086 use linear addressing?

For once, I do have a direct source for a "Why didn't they ...?" question. Eric Isaacson, back in the late '80s and '90s, wrote a commercial assembler for the 8086, called A86. (His ...
Davislor's user avatar
  • 8,973
88 votes

Were there 8086 coprocessors other than the 8087?

Not all of the original co-processors were for floating point math. Intel itself offered an I/O coprocessor for the 8088 and 8086 called the 8089. Part of the reason it didn't do as well as the 8087 ...
mschaef's user avatar
  • 4,906
77 votes
Accepted

Why did the MS-DOS API choose software interrupts for its interface?

TL;DR; Using INT comes not only natural due the way the 8086 is designed, but was as well intended by Intel as OS entry point, much like a Supervisor Call (SVC) on /360 type mainframes: (Excerpt from ...
Raffzahn's user avatar
  • 236k
64 votes

Why is the Intel 8086 CPU called a 16-bit CPU?

Generally, the "bitness" of a CPU is determined by the usual or common size of its data registers (or, the width of its data bus), rather than the width of the address bus. There are exceptions, for ...
Greg Hewgill's user avatar
  • 7,049
58 votes
Accepted

What did the 8086 (and 8088) do upon encountering an illegal instruction?

Illegal opcodes were just instructions that hadn't been fully defined by the chip designers – a little like Undefined Behaviour in C, but much more predictable. Many people called these "undocumented ...
wizzwizz4's user avatar
  • 18.8k
57 votes
Accepted

Why are first four x86 General Purpose Registers named in such unintuitive order?

There are no technical reasons, as any order would work and result in the same amount of gates. More likely it originated in the process by which the 8086 was developed. A main goal was to allow easy ...
Raffzahn's user avatar
  • 236k
56 votes
Accepted

The start of x86: Intel 8080 vs Intel 8086?

8086 was designed to make asm source porting from 8080 easy (not the other direction). It is not binary compatible with 8080, and not source-compatible either. 8080 is not an x86 CPU. 8080 is a ...
Peter Cordes's user avatar
  • 3,567
49 votes
Accepted

How did the 8086 interface with the 8087 FPU coprocessor?

The opcodes in your list are all only 16 bits (plus the extra bytes for address calculation) and you'll notice that they all begin (in hex) with Dx where x >= 8. This is because, to the 8086, any ...
JeremyP's user avatar
  • 11.8k
46 votes

What did the 8086 (and 8088) do upon encountering an illegal instruction?

It might be better to think about it this way: On the 80186 and above, a new thing was defined called an "illegal instruction", and this new thing came with a new behavior -- a #UD exception that was ...
Ken Gober's user avatar
  • 11.5k
46 votes
Accepted

What were the actual memory model definitions in MS-DOS?

The memory models all had to do with how much code and/or data your program was using. First some background. The 8086(1) was based on earlier Intel chips where their address space was strictly 64K ...
paxdiablo's user avatar
  • 5,047
44 votes
Accepted

What conventions and language extensions did people use to program the 8086 and 80286?

What it boils down to is that, unlike in a flat addressing model, there are multiple types of pointers: near - 16-bit (16-bit offset only.) far - 32-bit (16-bit offset + 16-bit segment) huge - The ...
mschaef's user avatar
  • 4,906
40 votes

8080 vs. 8086 - Are 16 Bit CPUs bloaty by nature?

[Preface: This is neither about discussing programming tricks nor how some changes could squeeze out a byte or two. Code can often be optimized by narrowing down the environment. The examples are ...
Raffzahn's user avatar
  • 236k
40 votes
Accepted

What 8086 instructions accept REP?

All of them. But it will only have an effect with a select few. Contrary to what the question implies, the rep prefix is not an orthogonal looping construct that can be combined with any instruction. ...
user3840170's user avatar
  • 25.2k
34 votes
Accepted

What was the IBM PC cost saving for using the 8088 vs 8086?

According to Wikipedia, a number of reasons contributed to IBM’s using the 8088 instead of the 8086: Intel offered them a better price for the 8088 and was able to supply more of the chips; the 8-bit ...
Stephen Kitt's user avatar
33 votes

Why is the Intel 8086 CPU called a 16-bit CPU?

But why the Intel 8086 CPU is called a 16-bit CPU even though its address bus is 20-bit, shouldn't it be called a 20-bit CPU? Address bus size is probably the least used method to determine CPU "size"...
manassehkatz-Moving 2 Codidact's user avatar
31 votes

Does the Intel 8086 CPU have user mode and kernel mode?

No. There is no mechanism for any privilege levels or protection in 8086. As a consequence, there is nothing special about OS code, and thus user applications are allowed to do everything, including ...
tuomas's user avatar
  • 2,813
28 votes

Were there 8086 coprocessors other than the 8087?

Alan Cox mentions in this post (original link) having seen a hard drive interface that plugged into the 8087 socket (for computers with no expansion slots). I've checked various issues of Amstrad PC ...
john_e's user avatar
  • 8,735
27 votes

What was the IBM PC cost saving for using the 8088 vs 8086?

This is not a complete answer because it doesn't answer what the exact cost savings were, but I think it's worthwhile to have an informed primary source for the claim that there were cost-savings and ...
Cody Gray's user avatar
  • 1,572
27 votes

Why didn't the 8086 use linear addressing?

The 8086 used a segmented memory architecture where the linear address was computed from a 16-bit segment number and a 16-bit offset. This greatly complicated things from a programming perspective. I ...
Raffzahn's user avatar
  • 236k
27 votes

Can one isolate processes on a 8086?

The short answer would be "No", since there is no way to prevent a user process from accessing privileged address space (of the OS or other processes) without some form of memory protection. Usually, ...
Brian H's user avatar
  • 61.5k
27 votes

Why are these DOS console drivers wasting precious bytes?

As Michael Karcher already points out in a comment, the shown sequences are quite typical for a compiler at the time. I'd say most likely C. That or use of a standardized macro set. This is not only ...
Raffzahn's user avatar
  • 236k
27 votes
Accepted

What happens when the segment plus offset overflows 20 bits?

On an 8086, yes, the address space wraps around. Thus a segment address of F001h and an offset of FFF0h, producing an address of F0010h + FFF0h = 100000h, wraps around to 00000h. The 8088, 8086, 80188 ...
Stephen Kitt's user avatar
26 votes

Were there 8086 coprocessors other than the 8087?

I don't think there ever were any incompatible co-processors which used the same sockets and I/O mechanisms as the Intel co-processors. There were other incompatible co-processors, at least for the ...
Stephen Kitt's user avatar
25 votes

Executable ASCII files before x86?

If you go back a lot before the x86, this technique wasn't unusual at all. In fact, writing programs using printable letters and symbols was pretty much the norm for early computers, except that there ...
dirkt's user avatar
  • 30.5k
25 votes

The start of x86: Intel 8080 vs Intel 8086?

To supplement @PeterCordes's excellent answer, I thought it would be worth going into the details of exactly how close to source code compatible the two processors are -- for example, how easy would ...
Jules's user avatar
  • 13k
25 votes

Why is the Intel 8086 CPU called a 16-bit CPU?

Why is the Intel 8086 CPU called a 16-bit CPU? Because that’s how Intel marketed it. The 8086 is part of “the range of 16-bit processors from Intel” (see for example Introduction to the iAPX 286, ...
Stephen Kitt's user avatar
24 votes
Accepted

Did the Intel 8086/8088 not guarantee the value of SS:SP immediately after RESET?

Your reading is correct, SP is undefined after a reset and the stack has to be set up appropriately by the initialisation code before it can be used. Interrupts are disabled after reset so there’s no ...
Stephen Kitt's user avatar
24 votes
Accepted

Z80 to x86 asm translator?

I'm going to say "No" simply because the 8086 doesn't support the alternate registers of the Z80. That was a fairly important concept that you can not directly mimic on the 8086. Mind, if ...
Will Hartung's user avatar
  • 12.5k
23 votes

Is there a cycle-exact 8086 emulator?

PCem aims to be an accurate emulator, and its 8086/8088 timings are accurate. It can emulate a wide variety of hardware, and can model specific PCs with their ROMs (such as the original IBM PC, the ...
Stephen Kitt's user avatar
23 votes
Accepted

How does the BIOS distinguish Interrupt(08h-12h) from INT instructions, vs. actual exceptions inside the CPU?

As mentioned in the 8086/8088 manuals, even if first 32 interrupt vectors were marked reserved for future use, only the first 5 were actually used by CPU exceptions (Divide Error, Single Step, NMI, ...
Justme's user avatar
  • 37.2k

Only top scored, non community-wiki answers of a minimum length are eligible