Change bold code snippets to inline code blocks
This commit is contained in:
parent
f658bfbb40
commit
3c76d884ef
185 changed files with 1772 additions and 1772 deletions
20
11-05.md
20
11-05.md
|
|
@ -12,7 +12,7 @@ pages: 220-222
|
|||
|
||||
Under ideal conditions, a 286 can access memory much, much faster than
|
||||
an 8088. A 10 MHz 286 is capable of accessing a word of system memory
|
||||
every 0.20 ms with **REP MOVSW**, dwarfing the 1 byte every 1.31 µs that
|
||||
every 0.20 ms with `REP MOVSW`, dwarfing the 1 byte every 1.31 µs that
|
||||
the 8088 in a PC can manage. However, access to display memory is
|
||||
anything but ideal for a 286. For one thing, most display adapters are
|
||||
8-bit devices, although newer adapters are 16-bit in nature. One
|
||||
|
|
@ -29,7 +29,7 @@ factors that reduce the speed with which the 286 can access display
|
|||
memory. Far more cycles are eaten by the inherent memory-access
|
||||
limitations of display adapters—that is, the limited number of display
|
||||
memory accesses that display adapters make available to the 286. Look at
|
||||
it this way: If **REP MOVSW** on a PC can use more than half of all
|
||||
it this way: If `REP MOVSW` on a PC can use more than half of all
|
||||
available accesses to display memory, then how much faster can code
|
||||
running on a 286 or 386 possibly run when accessing display memory?
|
||||
|
||||
|
|
@ -97,17 +97,17 @@ programs are still limited to 1 MB of addressable memory on the 286. In
|
|||
either mode, each segment is still limited to 64K.)
|
||||
|
||||
There are also a handful of 286-specific real-mode instructions, and
|
||||
they can be quite useful. **BOUND** checks array bounds. **ENTER** and
|
||||
**LEAVE** support compact and speedy stack frame construction and
|
||||
they can be quite useful. `BOUND` checks array bounds. `ENTER` and
|
||||
`LEAVE` support compact and speedy stack frame construction and
|
||||
removal, ideal for interfacing to high-level languages such as C and
|
||||
Pascal (although these instructions are actually relatively slow on the
|
||||
386 and its successors, and should be used with caution when performance
|
||||
matters). **INS** and **OUTS** are new string instructions that support
|
||||
efficient data transfer between memory and I/O ports. Finally, **PUSHA**
|
||||
and **POPA** push and pop all eight general-purpose registers.
|
||||
matters). `INS` and `OUTS` are new string instructions that support
|
||||
efficient data transfer between memory and I/O ports. Finally, `PUSHA`
|
||||
and `POPA` push and pop all eight general-purpose registers.
|
||||
|
||||
A couple of old instructions gain new features on the 286. For one, the
|
||||
286 version of **PUSH** is capable of pushing a constant on the stack.
|
||||
286 version of `PUSH` is capable of pushing a constant on the stack.
|
||||
For another, the 286 allows all shifts and rotates to be performed for
|
||||
not just 1 bit or the number of bits specified by CL, but for *any*
|
||||
constant number of bits.
|
||||
|
|
@ -143,5 +143,5 @@ complex 386-specific instructions are slower than equivalent sequences
|
|||
of simple instructions on the 486 and especially on the Pentium.) What's
|
||||
more, both old and new instructions support 32-bit operations on the
|
||||
386. For example, it's relatively simple to copy data in chunks of 4
|
||||
bytes on a 386, even in real mode, by using the **MOVSD** ("move string
|
||||
double") instruction, or to negate a 32-bit value with **NEG eax**.
|
||||
bytes on a 386, even in real mode, by using the `MOVSD` ("move string
|
||||
double") instruction, or to negate a 32-bit value with `NEG eax`.
|
||||
Loading…
Reference in a new issue