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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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 ...
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. ...
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 ...
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"...
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 ...
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 ...
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 ...
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 ...
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, ...
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 ...
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 ...
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 ...
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 ...
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 ...
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, ...
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 ...
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 ...
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 ...
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, ...
Only top scored, non community-wiki answers of a minimum length are eligible
Related Tags
8086 × 61assembly × 14
ms-dos × 11
8088 × 10
intel × 9
x86 × 7
instruction-set × 5
history × 4
ibm-pc × 4
emulation × 4
cpu × 4
memory-layout × 4
8080 × 3
microprocessor × 3
interrupt × 3
undocumented-opcodes × 3
io × 3
c × 2
terminology × 2
80286 × 2
debugging × 2
binary-coded-decimal × 2
segmentation × 2
hardware × 1
programming × 1