AMP Notes
AMP Notes
2)
Block diagram of 8086 (BIU &EU)
• The Intel 8086 microprocessor uses a segmented memory organization, which is a unique feature
of the x86 architecture. This segmented memory model divides memory into multiple segments,
each with its own size and starting address. Here are the key components of the memory
organization in the 8086:
• Segments: In the 8086, memory is divided into segments, with each segment identified by a 16-bit
segment register. The segment registers include CS (Code Segment), DS (Data Segment), SS (Stack
Segment), and ES (Extra Segment). These registers store the starting address of their respective
segments.
• Offset: Within each segment, memory is addressed using an offset. The offset is a 16-bit value that
specifies the location of data or instructions relative to the beginning of the segment. This offset is
added to the base address stored in the segment register to calculate the physical memory
address.
• Segmented Addressing: To form a complete memory address, the 8086 combines the contents of
a segment register (CS, DS, SS, or ES) with the offset. The result is a 20-bit physical address. This
allows the 8086 to access up to 1 megabyte (2^20 bytes) of memory.
• Here's a simplified formula to calculate a physical memory address in the 8086:
Physical Address = (Segment Register * 10) + Offset
• Let's look at how this works with some of the segment registers:
• CS (Code Segment): CS points to the segment where the current program's instructions are stored.
The IP (Instruction Pointer) register holds the offset within the CS segment, indicating the address
of the next instruction to be executed.
• DS (Data Segment): DS typically points to the segment where data is stored. When accessing data
in memory, you use DS to specify the segment, and the offset points to the data within that
segment.
• SS (Stack Segment): SS points to the segment used for the stack. When pushing or popping data
from the stack, SS and SP (Stack Pointer) are used in conjunction to manage the stack.
• ES (Extra Segment): ES can be used for additional data storage. It's often used when performing
string operations, like copying or comparing strings.
4) pin functions of 8086.
• The Intel 8086 microprocessor has a set of pins that serve various functions, including data
transfer, control, and power management. Below, I'll provide a brief overview of the pin functions
of the 8086 microprocessor:
• Whenever the ALE pin is high these pins works as a address bus
and when ALE is low these pins carry the data.
• Address bus (AD0 – AD 15, A16/S3 – A19/S6):
• This 20 lines are correspond to the CPU’s 20-bit address. These lines are valid only during T1
state.
• S6 : always remains at logic 0
• S5 : indicate condition of IF flag bit
• S4 and S3 indicate the segment addressed by 8086 during the current bus cycle
• BHE/ S7# (Bus High Enable/ Status Line S7#): This pin indicates whether the data bus carries the
high byte (D15-D8) or low byte (D7-D0) of a 16-bit data transfer. When BHE/ S7# is high, it
indicates a high byte transfer, and when low, it indicates a low byte transfer.
⚫ DEN/ S6# This signal indicates the availability of valid data over the
address/data lines. It is used to enable the transreceivers (
bidirectional buffers ) to separate the data from the multiplexed
address/data signal.
• RD (Read): The RD pin is used to signal a read operation to external memory or I/O devices. When
the RD signal is active (low), the microprocessor reads data from the addressed location.
• WR (Write): The WR pin is used to signal a write operation to external memory or I/O devices.
When the WR signal is active (low), the microprocessor writes data to the addressed location.
• INTR (Interrupt Request): The INTR pin is used to request an interrupt. When a peripheral device
needs the microprocessor's attention, it can assert this pin to request an interrupt. When IF = 1
and if INTR is held high the 8086 gets interrupted .When IF = 0 , INTR is disabled.
• NMI (Non-Maskable Interrupt): NMI is a non-maskable interrupt request. It is used for critical
interrupts that cannot be disabled or masked by the microprocessor.
• CLK (Clock Input): CLK is the clock input for the microprocessor. It provides the timing signal for all
internal operations.
• M/IO# (Memory/ I/O Space Select): This pin is used to differentiate between memory and I/O
operations. When M/IO# is low, it indicates an I/O operation, and when high, it indicates a
memory operation.
• DT/ R# (Data Transmit/ Receive): This pin is used to indicate the direction of data transfer on the
data bus. When DT/ R# is high, it indicates data transmission (write operation), and when low, it
indicates data reception (read operation).
• QS1, QS0 (Queue Status): These pins are used to indicate the status of the internal instruction
queue.
•S2’,S1’,S0’:indicate function of current bus cycle these signal : normally decoded by 8288 bus
controller
• VCC (Power Supply Voltage): VCC is the supply voltage pin, typically connected to +5V.
⚫ Ready:
• This input signal is used to insert wait state in to the timing cycle of
8086. if the READY pin is at logic 1, it has no effect on operation
of the microprocessor. If it is at logic 0, the 8086 enters the wait
state and remains idle. This signal is used to interface the slowly
interfacing device with the 8086.
• MN/MX:
• This pin is used to select either the minimum mode or maximum mode
operation for the 8086. this is achieved by connecting this pin to either
+5V (Minimum mode) or to the ground for maximum mode.
◼ TEST :
• This pin is an input pin that is tested by wait instruction. If this pin is at
logic 0 , the wait instruction function as NOP. This pin is often connected
to the BUSY pin of the 8087 to perform the floating point operations.
⚫ INTA (Interrupt Acknowledge): Acknowledge signal for handling external interrupts.
⚫ HOLD, HLDA-Acknowledge :
• When the HOLD line goes high, it indicates to the processor that
another master is requesting the bus access. The processor, after
receiving the HOLD request, issues the hold acknowledge signal on
HLDA pin, in the middle of the next clock cycle after completing
the current bus cycle.
•LOCK(lock output):
• lock is an output signal intended for use in a bus arbitration scheme with
another processor. Arbitration refers to the process of determining which
processor should have the control of the system buses at any given time.
The LOCK signal is output low during the execution of any instruction
with LOCK prefix. This signal is meant to be output whenever
processor wants to lock out other processor from using the bus.
These addressing modes provide flexibility in how data is accessed and manipulated in the 8086 microprocessor,
allowing programmers to work with various types of operands and memory locations efficiently.
Purpose of the 8284 Clock Generator: The 8284 clock generator serves several purposes in a microprocessor system:
Clock Generation: It generates a stable clock signal (CLK) that is essential for the proper operation of the
microprocessor.
.
Reset and Control Signals: It provides reset and control signals to the microprocessor to ensure a clean and
synchronized startup.
.
Bus Stabilization: It helps stabilize the address and data buses during power-up and reset conditions.
.
Basic Connections: The 8284 is connected to the 8086 microprocessor and the system as follows:
Clock Input (CLK IN): The external clock source, typically a crystal oscillator or an external clock signal, is connected to
this pin.
.
Clock Output (CLK OUT): This pin provides the generated clock signal (usually 5 MHz) to the 8086 microprocessor's
CLK pin.
Output Clock frequency = 1/3rd of the Input Clock frequency to produce a
33% duty cycle required by the Microprocessor.
.
RESET OUT: It provides a reset signal (RESET) to the 8086's RESET pin. During power-up or when the system is reset,
this signal is activated to clear the microprocessor's state and prepare it for operation.
.
Operation: Here's a simplified explanation of how the 8284 clock generator operates:
The external clock signal is fed into the CLK IN pin of the 8284.
.
The 8284 generates a stable clock signal (usually 5 MHz) and provides it at the CLK OUT pin. This clock signal is used as
the system clock for the 8086 microprocessor.
.
During power-up or when the system is reset, the 8284 activates the RESET OUT signal, which is connected to the
8086's RESET pin. This ensures that the microprocessor starts from a known state.
.
The 8284 also provides control signals to stabilize the address and data buses during the reset and power-up
sequence.
.
The 8288 bus controller is used in conjunction with the Intel 8086 microprocessor to manage bus
operations and provide control signals for memory and I/O devices. Here's a simple and easy-to-
understand overview of how the 8288 bus controller works with the 8086:
1. **Bus Control**: It generates and controls various bus control signals required for memory and I/O
operations.
2. **Clock Generation**: It generates the required clock signals for bus synchronization.
3. **Ready Signal**: It provides the READY signal to the microprocessor to indicate when memory or I/O
devices are ready to complete a data transfer.
**Basic Connections**:
The 8288 is connected to the 8086 microprocessor and the system as follows:
1. **Address Bus (A0-A19)**: The 8086 microprocessor's address bus is connected to the 8288 to
facilitate address decoding for memory and I/O operations.
2. **Data Bus (D0-D15)**: The 8086 microprocessor's data bus is connected to the 8288 for data
transfers.
3. **Control Lines (e.g., ALE, RD, WR)**: Various control lines from the 8086 are connected to the 8288
to signal read and write operations, as well as address latch enable (ALE).
4. **Clock Input (CLK)**: The 8288 requires an external clock source, usually derived from the
microprocessor's clock, to generate bus control signals.
5. **READY Output**: The READY signal generated by the 8288 is connected to the 8086's READY pin.
**Operation**:
Here's a simplified explanation of how the 8288 bus controller operates:
.
Bus Arbitration: The 8288 provides bus arbitration logic that enables multiple devices to request access to the system
bus. It prioritizes and grants access to devices based on their requests.
.
Demultiplexing: The 8086 uses a multiplexed address/data bus. The 8288 demultiplexes this bus into separate address
and data buses. This simplifies the interfacing of external memory and peripherals.
.
Clock Generation: The 8288 generates the necessary clock signals for the 8086, ensuring proper synchronization and
timing of operations.
.
Bus Control: It generates control signals for the system bus, including memory or I/O operations, read, and write
signals, based on the 8086's requests.
.
Bus Hold: The 8288 can request a bus hold (BR) to temporarily halt the 8086's bus activities, allowing external devices
to take control of the bus when necessary.
.
**Advantages**:
- The 8288 bus controller simplifies bus management and control in a microprocessor system.
- It ensures that data transfers between the microprocessor and external devices are properly
synchronized.
**Considerations**:
- When using the 8288 with the 8086, refer to the datasheets and documentation for both components
to ensure proper connections and configurations.
- Understand the timing requirements and READY signal interactions to avoid data transfer conflicts.
While this explanation provides a simplified overview, working with the 8288 bus controller and the 8086
microprocessor typically involves more detailed specifications and considerations based on the specific
requirements of your microprocessor system.
The Intel 8086 microprocessor, a 16-bit processor, can operate in either minimum mode or maximum
mode depending on the system's requirements. The mode of operation determines how the 8086
interacts with external devices and memory. Here, I'll provide an overview of interfacing in both
minimum and maximum modes:
1. **Minimum Mode**:
In minimum mode, the 8086 CPU is interfaced with memory and I/O devices using a minimum set of
control signals. Here are the key components and signals involved in minimum mode interfacing:
- **8086 CPU**: The CPU itself, which executes instructions and manages data processing.
- **Memory**: Usually, the memory consists of RAM (Random Access Memory) and ROM (Read-Only
Memory). The CPU generates memory addresses on the address bus (A0-A19) to access data and
instructions.
- **Bus Controller**: This unit controls bus operations, generates bus control signals like M/IO#, RD#,
WR#, and generates the status signals like S0, S1, and S2.
- **Clock Generator**: Generates the clock signals required by the CPU.
- **System Control Block**: A collection of control registers to configure the operation of the 8086,
including the Interrupt Control Register (ICR), Status Control Register (SCR), and Bus Status and Control
Register (BSC).
- **Address/Data Bus**: The CPU communicates with memory and I/O devices through the address
and data buses. The data bus is multiplexed, meaning it carries both address and data.
In minimum mode, the 8086 assumes control of the bus during its operation, and external devices are
not allowed to take control of the bus without the CPU's permission.
8282 (8 bits) latch :
The latches are buffered D FF. They are used to separate the valid address from the
multiplexed Address/data bus by using the control signal ALE, which is connected to
strobe(STB) of 8282. The ALE is active high signal. Here three such latches are required
because the address is 20 bits.
8286 (8 bits) transceivers :
They are bidirectional buffers and also known as data amplifiers. They are used to separate
the valid data from multiplexed add/data bus. Two such transceivers are needed because the
data bus is 16 bits long. 8286 is connected to DT/R’ and DEN’ signals. They are enabled
through the DEN signal .The direction of data on the data bus is controlled by the DT/R’
signal. DT/R’ is connected to T and DEN’ is connected to OE’.
2. **Maximum Mode**:
In maximum mode, the 8086 CPU is used in a more complex system with multiple processors (co-
processors) or devices that share the bus. Here are the key components and signals involved in
maximum mode interfacing:
- **8086 CPU**: Similar to minimum mode, the CPU executes instructions and manages data
processing.
- **Memory**: Like in minimum mode, memory consists of RAM and ROM. The CPU generates
memory addresses on the address bus.
- **Bus Controller**: In maximum mode, an external bus controller 8288 is used to control bus
operations. It generates control signals like MN/MX#, S0, and S1.
- **Clock Generator**: Generates the clock signals required by the CPU.
- **Co-processor**: Maximum mode is often used when a co-processor (e.g., 8087 for floating-point
math) is present in the system. The co-processor communicates with the CPU.
- **System Control Block**: Similar to minimum mode, a set of control registers configures the
operation of the 8086.
- **Address/Data Bus**: As in minimum mode, the CPU communicates with memory and I/O devices
through the address and data buses.
In maximum mode, external devices can request control of the bus for a specific period, allowing for
more complex multiprocessor systems.
10) i/o and memory read and write timing diagram in minimum mode
Opcode fetch or read timing diagram
.
Data Transfer Instructions:
.
• MOV (Move): This instruction is used to copy data from one location to another. For example, MOV AX, BX
copies the contents of the BX register into the AX register.
• XCHG (Exchange): This instruction swaps the contents of two registers or memory locations. For example,
XCHG AX, BX swaps the values of AX and BX.
• PUSH and POP: These instructions are used to push data onto the stack or pop data from the stack,
respectively. They are often used for function calls and managing the stack. For example, PUSH AX pushes
the value of AX onto the stack.
.
Arithmetic Instructions:
.
• ADD, SUB, ADC, SBB: These instructions are used for addition and subtraction, with and without carry. For
example, ADD AX, BX adds the value of BX to AX.
• MUL and DIV: These instructions are used for unsigned multiplication and division. For example, MUL CX
multiplies AX by CX and stores the result in DX:AX.
• INC and DEC: These instructions increment and decrement the value of a register or memory location. For
example, INC BX increments the value of BX by 1.
.
Logical Instructions:
.
• AND, OR, XOR, NOT: These instructions perform bitwise logical operations on data. For example, AND AX,
BX performs a bitwise AND operation between AX and BX.
• TEST: This instruction performs a bitwise AND operation and updates the flags but does not store the result.
• SHL/SHR (Shift Left/Shift Right): These instructions perform bitwise shifts on data, effectively multiplying or
dividing by powers of 2.
.
Branching Instructions:
.
• JMP (Jump): This instruction is used for unconditional branching. It transfers control to a specified memory
location. For example, JMP Label jumps to the memory address labeled "Label."
• JE, JNE, JZ, JNZ: These instructions are used for conditional branching based on the state of the flags. For
example, Jz Label jumps to the labeled address if the zero flag is set.
.
Bit Manipulation Instructions:
.
• BT, BTS, BTR, BTC: These instructions are used for bit testing, setting, resetting, and toggling. They allow you
to manipulate individual bits within registers or memory.
• ROL and ROR: These instructions perform bitwise rotation operations on data, shifting bits to the left or right.
.
String Instructions:
.
• LODSB, LODSW, LODSD: These instructions load data from a memory location pointed to by the SI (source
index) register into AL, AX, or EAX, respectively.
• STOSB, STOSW, STOSD: These instructions store data from AL, AX, or EAX into a memory location pointed to
by the DI (destination index) register.
• MOVS: These instructions move a block of data from one location to another in memory.
• CMPS: These instructions compare two blocks of data in memory.
These are some of the commonly used instructions in the 8086 microprocessor's instruction set. They allow
programmers to perform a wide range of operations, from simple data transfers to complex arithmetic and logic
operations, making the 8086 a versatile CPU for its time.
(OR)
Data Transfer Instructions
These instructions are used to transfer the data from the source operand to the destination
operand. Following are the list of instructions under this group −
• MOV − Used to copy the byte or word from the provided source to the provided
destination.
• PPUSH − Used to put a word at the top of the stack.
• POP − Used to get a word from the top of the stack to the provided location.
• PUSHA − Used to put all the registers into the stack.
• POPA − Used to get words from the stack to all registers.
• XCHG − Used to exchange the data from two locations.
• XLAT − Used to translate a byte in AL using a table in the memory.
• IN − Used to read a byte or word from the provided port to the accumulator.
• OUT − Used to send out a byte or word from the accumulator to the provided port.
• LEA − Used to load the address of operand into the provided register.
• LDS − Used to load DS register and other provided register from the memory
• LES − Used to load ES register and other provided register from the memory.
• LAHF − Used to load AH with the low byte of the flag register.
• SAHF − Used to store AH register to low byte of the flag register.
• PUSHF − Used to copy the flag register at the top of the stack.
• POPF − Used to copy a word at the top of the stack to the flag register.
Arithmetic Instructions
These instructions are used to perform arithmetic operations like addition, subtraction,
multiplication, division, etc.
Following is the list of instructions under this group −
• DIV − Used to divide the unsigned word by byte or unsigned double word by word.
• IDIV − Used to divide the signed word by byte or signed double word by word.
• AAD − Used to adjust ASCII codes after division.
• CBW − Used to fill the upper byte of the word with the copies of sign bit of the lower
byte.
• CWD − Used to fill the upper word of the double word with the sign bit of the lower
word.
These instructions are used to perform operations where data bits are involved, i.e. operations
like logical, shift, etc.
• SHL/SAL − Used to shift bits of a byte/word towards left and put zero(S) in LSBs.
• SHR − Used to shift bits of a byte/word towards the right and put zero(S) in MSBs.
• SAR − Used to shift bits of a byte/word towards the right and copy the old MSB into the
new MSB.
• ROL − Used to rotate bits of byte/word towards the left, i.e. MSB to LSB and to Carry
Flag [CF].
• ROR − Used to rotate bits of byte/word towards the right, i.e. LSB to MSB and to Carry
Flag [CF].
• RCR − Used to rotate bits of byte/word towards the right, i.e. LSB to CF and CF to MSB.
• RCL − Used to rotate bits of byte/word towards the left, i.e. MSB to CF and CF to LSB.
String Instructions
String is a group of bytes/words and their memory is always allocated in a sequential order.
These instructions are used to control the processor action by setting/resetting the flag values.
In the context of assembly language programming for the Intel 8086 microprocessor, directives
are special instructions used to provide instructions to the assembler or linker rather than being
executed by the CPU. These directives are used for various purposes such as defining data,
specifying program sections, setting memory organization, and more. Here are some commonly
used directives for the Intel 8086:
1. **ORG (Origin)**:
- Description: Sets the assembly program's current location to the specified address. It is used
to specify where the program or data will be located in memory.
- Description: Defines data elements in memory. `DB` defines a byte, `DW` defines a word (2
bytes), `DD` defines a doubleword (4 bytes), and `DQ` defines a quadword (8 bytes).
- Description: Specifies the data segment register value for the current data elements. It is
used to tell the assembler which data segment to use for data storage.
- Description: Similar to DS, this directive specifies the extra segment register value for data
storage.
- Description: Specifies the code segment register value for the program code. It tells the
assembler which segment to use for fetching instructions.
6. **SS (Stack Segment)**:
- Description: Sets the stack segment register value, indicating the segment for stack
operations.
7. **END**:
- Syntax: `END`
- Description: Marks the end of the assembly program. It is often used to signal the end of the
source code to the assembler.
8. **EQU (Equate)**:
- Description: Defines a constant value that can be used throughout the program. It is used for
symbolic representation of constants.
9. **ASSUME**:
- Description: Specifies the segment register assumptions for the current module. It defines
which segment registers correspond to code and data segments.
These directives help in organizing and controlling the assembly process, specifying memory
segments, and defining data elements in programs written for the Intel 8086 microprocessor.
The exact usage and syntax of these directives may vary depending on the assembler being
used.
1. **Assembler**:
- **Definition**: An assembler is a software tool that translates assembly language code into
machine code or binary code. It converts human-readable assembly language instructions into
the binary code that can be executed by the computer's CPU.
- **Function**: The primary function of an assembler is to take an assembly source code file
as input, process it, and generate an output file containing machine code instructions that
correspond to the assembly instructions. The output file can be executed directly by the
computer's hardware.
2. **Debugger**:
- **Definition**: A debugger is a software tool used for finding and fixing errors, bugs, and
issues in a program. It allows developers to inspect and control the execution of a program step
by step, set breakpoints, examine memory, and analyze the program's behavior during
execution.
- **Function**: Debuggers help programmers identify and correct errors in their code,
including logic errors, runtime errors, and crashes. They are instrumental in the software
development process for testing and debugging programs.
3. **Compiler**:
- **Function**: Compilers take the entire source code of a program as input, analyze it,
optimize it, and generate an executable binary file. Unlike assemblers, which work with
assembly language, compilers work with higher-level languages and produce more efficient and
complex machine code.
4. **Linker**:
- **Definition**: A linker is a tool responsible for combining multiple object files (output files
of compilers or assemblers) into a single executable program. It resolves references to
functions or variables that are defined in one file and used in another.
- **Function**: The linker ensures that all the parts of a program, including libraries and
object files, are correctly connected, and it generates a single executable file. It also resolves
addresses and establishes the final memory layout of the program.
In summary:
These tools are essential for various stages of the software development process, from writing
and translating code to testing, debugging, and producing the final executable program.
The flag register is divided into various bit fields, with each bit representing a specific flag.
Some of the important flags in the flag register include the carry flag (CF), the zero flag (ZF),
the sign flag (SF), the overflow flag (OF), the parity flag (PF), and the auxiliary carry flag (AF).
These flags are used by the processor to determine the outcome of conditional jump
instructions and other branching instructions.
Purpose Register. Depending upon the value of result after any arithmetic and logical
operation the flag bits become set (1) or reset (0). The flag register in the Intel 8086
microprocessor, also known as the FLAGS register, is a 16-bit register that plays a crucial role in
the control and operation of the CPU. It contains various individual bits (flags) that provide
information about the results of arithmetic and logical operations, as well as control the
execution of conditional branch instructions. Here are the main flags in the FLAGS register of
the 8086:
Figure – Format of flag register There are total 9 flags in 8086 and the flag register is divided
into two types: (a) Status Flags – There are 6 flag registers in 8086 microprocessor which
become set(1) or reset(0) depending upon condition after either 8-bit or 16-bit operation.
These flags are conditional/status flags. 5 of these flags are same as in case of 8085
microprocessor and their working is also same as in 8085 microprocessor. The sixth one is the
overflow flag. The 6 status flags are:
The 8086 microprocessor has several flags in its flag register (FLAGS) that are used to indicate the
status of various operations and conditions during program execution. These flags are essential for
making decisions and controlling the flow of a program. Here are the primary flags in the 8086
microprocessor:
These flags play a crucial role in controlling the flow of program execution and making decisions based
on the outcomes of various operations. Programmers can check and modify these flags using
conditional jump instructions and other control instructions in assembly language programming for
the 8086 microprocessor.
16) memory interfacing with 8086 diagram
17) register details of 8086.
1. AX = [AH:AL]
2. BX = [BH:BL]
3. CX = [CH:CL]
4. DX = [DH:DL]
2) Segment Registers
There are 4 segment registers in 8086 Microprocessor and each of them is of 16 bit. The code and instructions
are stored inside these different segments.
Microcontroller Microprocessor
S.
No. 8086 microprocessor 8088 microprocessor
In the context of the Intel 8086 microprocessor, demultiplexing refers to the process of splitting
the 16-bit data bus into two 8-bit data buses. The 8086 has a 16-bit internal data bus, but many
peripheral devices and memory chips used with the 8086, especially during the early days of
microcomputing, had 8-bit data interfaces. Therefore, demultiplexing was necessary to interface
the 8086 with these devices.
1. **Internal Data Bus**: Inside the 8086, data is processed and transferred using a 16-bit data
bus. This means that the CPU can process 16 bits of data at a time.
2. **External Data Bus**: Many external memory and peripheral devices, including RAM and I/O
devices, used 8-bit data buses. To interface with these devices, the 8086 needed to convert its 16-
bit data into two 8-bit segments.
3. **Data Demultiplexing**: The demultiplexing process involves splitting the 16-bit data bus into
two separate 8-bit data buses. This is typically done using latches or buffers.
- **High-Order Byte (HOB)**: This is sometimes referred to as the "high byte" or "most
significant byte" (MSB) and contains the upper 8 bits of the 16-bit data.
- **Low-Order Byte (LOB)**: This is sometimes referred to as the "low byte" or "least significant
byte" (LSB) and contains the lower 8 bits of the 16-bit data.
4. **Data Transfer**: When the 8086 communicates with an 8-bit device or memory location, it
places the appropriate 8-bit data on the high-order byte or low-order byte of the data bus,
depending on the required byte. The other byte is typically set to zero or remains unchanged.
5. **Timing Control**: The demultiplexing process also involves proper timing control to ensure
that data is latched correctly on the external device side.
In summary, demultiplexing in the 8086 is a crucial operation for interfacing with external devices
that use an 8-bit data bus. It allows the 8086, which has a 16-bit internal data bus, to
communicate effectively with these devices by splitting its data into high-order and low-order
bytes and transmitting them on the appropriate 8-bit data bus. This process enables compatibility
with a wide range of memory and peripheral devices in early microcomputer systems.
21) out of syllabus
22) how to find physical address of memory using 8086 registers?
In the Intel 8086 microprocessor, the physical address of memory is calculated using a
combination of segment registers and an offset address. The 8086 uses a segmented memory
model, where memory addresses are composed of a segment and an offset. The physical
address is calculated as follows:
Physical Address = (Segment Register × 10) + Offset Address
Here's how you can find the physical address of memory using 8086 registers:
- To find the physical address, multiply the segment register value by 16 (shift it left by 4 bits)
and add the offset address.
- For example, if DS contains the segment value, and BX contains the offset address:
SHL AX, 4 ; Multiply DS by 16 (shift left by 4 bits)
ADD AX, BX ; Add the offset address in BX
4. **Access Memory**:
- The physical address calculated in the previous step can be used to access memory. You can
use instructions like `MOV`, `ADD`, `SUB`, etc., to interact with memory locations.
Here's a simple example in assembly language that loads a value from a memory location
into aregister using DS as the segment register and BX as the offset register:
1. **Address Bus**:
- The 8086 features a 20-bit address bus, which allows it to address up to 2^20
(1,048,576) different memory locations.
- This address bus is used to specify the memory location or I/O port address when data
needs to be read from or written to memory or I/O devices.
2. **Data Bus**:
- The data bus in the 8086 is 16 bits wide, meaning it can transfer 16 bits (2 bytes) of data
between the CPU and memory or peripheral devices in a single operation.
- Data is transferred in parallel between the CPU and memory or I/O devices using the
data bus.
3. **Control Bus**:
- The control bus consists of various control and status signals used to manage the data
and address buses, as well as to control the operation of the microprocessor.
- Common control signals include read, write, memory request (MREQ), input/output
request (IORQ), and various clock signals.
4. **Address Multiplexing**:
- In the 8086, the address bus is multiplexed with the data bus during certain machine
cycles. This means that during the first part of a machine cycle, the address is placed on
the bus, and during the second part of the cycle, data is placed on the same bus.
- The use of multiplexing allows the 8086 to reduce the number of pins on its package.
5. **Segmentation**:
- The 8086 uses a segmented memory model, where the 1 MB address space is divided
into segments, each of which is 64 KB in size.
- Segment registers (CS, DS, SS, ES) are used to specify the base addresses of code, data,
stack, and extra segments, respectively.
- Segmentation allows for better memory management and protection.
In summary, the bus architecture of the Intel 8086 microprocessor consists of a 20-bit
address bus, a 16-bit data bus, and a control bus. The use of segmentation and
multiplexing, along with the BIU and EU, allows the 8086 to effectively address and
interact with memory and peripheral devices in a 16-bit processing environment.
DIAGRAM SAME AS ARCHITECTURE OF 8086
codes
15. Write an assembly language program to add two 16 bit numbers.
Data SEGMENT
A DW 1234H
B DW 5140H
Sum DW ?
Carry DB 00H
Data ENDS
Code SEGMENT
ASSUME CS: Code, DS: Data
MOV AX, Data
MOV DS, AX
MOV AX, A
ADD AX, B
JNC Skip
MOV Carry, 01H
Skip: MOV Sum, AX
INT3
Code ENDS
END
16. Write an assembly language program to sub two 16 bit numbers.
Data SEGMENT
A DW 1234H
B DW 5140H
Sum DW ?
Carry DB 00H
Data ENDS
Code SEGMENT
ASSUME CS: Code, DS: Data
MOV AX, Data
MOV DS, AX
MOV AX, A
SUB AX, B
JNC Skip
MOV Carry, 01H
Skip: MOV Sum, AX
INT3
Code ENDS
END
18. Write a program to count negative number from array of 5 data bytes(rare case and not found)
Wait states are introduced to account for differences in speed between the processor and other
components in a computer system. When the processor is significantly faster than other parts of the
system, such as memory or peripherals, wait states are inserted to synchronize their operations. Wait
states essentially introduce delays to ensure that the slower components can catch up with the faster
processor.
2. **Peripheral Synchronization:**
- When interfacing with slower peripherals or input/output devices.
- Wait states allow time for data transfer or response from the peripherals.
3. **System Stability:**
- To maintain overall system stability and prevent data corruption or errors caused by timing
mismatches.
2. **I/O Operations:**
- When performing input or output operations with peripherals that have slower response times.
3. **Bus Contention:**
- In situations where there is contention for the system bus due to multiple components trying to
access it simultaneously.
3. **Bus Contention:**
- Implement bus arbitration mechanisms to control access to the system bus.
- Introduce bus controllers or wait state generators to manage conflicts.
In this example, the `WAIT` instruction is used to introduce a wait state. The processor will pause
execution briefly, allowing other components in the system to catch up.
**Note:**
- The specific method for inserting wait states may vary depending on the system design, and modern
processors often have built-in mechanisms to automatically handle wait states based on dynamic
adjustments to the bus speed or system configuration.
10 Draw the circuit diagram for wait state generation between 0 and 7 wait status and draw the
corresponding timing diagram.(not useful and unable to find)
11.Describe software interrupt of 8086 microprocessor. Also discussed the sequence of interrupt
execution in 8086.
In the 8086 microprocessor, the priority of interrupts is influenced by both hardware and
software considerations. Let's explore the priority aspects from both perspectives:
Hardware Priorities:
1. Non-Maskable Interrupt (NMI):
• Priority: Highest
• Description:
• NMIs have the highest priority and are typically used for critical system events that
require immediate attention.
• They cannot be disabled by software; the NMI input is hardwired to the processor.
2. Maskable Interrupts (IRQ):
• Priority: Determined by Hardware
• Description:
• Maskable interrupts, such as those generated by external devices, have priorities
determined by the hardware design.
• Interrupt controllers like the Programmable Interrupt Controller (PIC) are often used to
manage the priorities of these interrupts.
3. Interrupt Vector Numbers (IVT):
• Priority: Lower Vector Numbers Indicate Higher Priority
• Description:
• The Interrupt Vector Table (IVT) holds the addresses of interrupt service routines (ISRs)
for each interrupt.
• Lower vector numbers in the IVT indicate higher priority.
Software Priorities:
1. Interrupt Enable Flag (IF) in FLAGS Register:
• Priority: Controlled by Software
• Description:
• The Interrupt Enable (IF) flag in the FLAGS register controls whether maskable interrupts
are serviced.
• When IF is set (1), maskable interrupts are enabled.
• When IF is cleared (0), maskable interrupts are disabled.
2. Software Management of Interrupts:
• Priority: Determined by Software Design
• Description:
• Software can influence the priority of interrupts through careful design and handling of
interrupt service routines (ISRs).
• Priority can be managed by the order in which ISRs are executed and the actions taken
within each ISR.
(SOFTWARE)
12. Under what conditions type 0 interrupt is initiated? List out the instructions that may cause
type 0 interrupt?
A Type 0 interrupt in the context of the 8086 microprocessor is often associated with an error
condition known as a "divide error." This interrupt is triggered when the processor attempts to divide
a number by zero. Let's break it down in easy-to-understand terms:
Example:
MOV AX, 100 ; Load a value into AX
MOV BX, 0 ; Attempting to divide by zero
DIV BX ; This DIV instruction may cause a Type 0 interrupt if BX is zero
In this example, the `DIV` instruction attempts to divide the value in AX by the value in BX. If BX is
zero, it will result in a divide error, and the Type 0 interrupt will be initiated.
Summary:
- Type 0 interrupts, or Divide Error interrupts, occur when attempting to divide by zero.
- The `DIV` instruction is a common cause of Type 0 interrupts.
- Handling these interrupts involves defining an appropriate ISR to manage the error condition.
3. **Enhanced Responsiveness:**
- **Multiprogramming:** While one program is waiting for I/O, the CPU can quickly switch to
another program, providing a perception of concurrent execution. This responsiveness is especially
noticeable in systems with interactive user interfaces.
- **Multitasking:** Users can interact with multiple applications or perform different tasks
concurrently, enhancing the overall responsiveness of the system.
6. **Time Sharing:**
- **Multiprogramming:** Time-sharing systems, a form of multiprogramming, allow multiple users
to share the resources of a single computer simultaneously. Each user gets a time slice for executing
their tasks.
- **Multitasking:** Time-sharing is inherent in multitasking systems, allowing users to run multiple
applications concurrently. This is particularly beneficial in environments with a large number of users.
22. Explain the protected virtual address mode of 80286 and show how 24 bit physical address is
generated.
One of its key features is the ability to operate in protected mode, which provides enhanced memory
management and protection capabilities compared to the real mode.
In protected mode, the 80286 supports a 24-bit protected virtual address space. This means that it
can address up to 2^24 or 16 megabytes (MB) of memory. Unlike real mode, where only 1 MB of
memory is accessible, protected mode provides memory protection, multitasking support, and a flat
memory model.
In protected mode, the 80286 uses a segmented memory model, similar to real mode, but with
additional features for memory protection and multitasking.
Address Generation:
In the protected virtual address mode, the 80286 uses a two-tiered approach for address generation:
1. **Segment Selector:**
- The segment selector is a 16-bit value that points to a descriptor table called the Global Descriptor
Table (GDT).
- The GDT contains entries for various memory segments, each with its own base address, limit, and
access control information.
- The segment selector is an index into the GDT, and the selected segment's base address is used in
the next step of address calculation.
2. **Offset:**
- The offset is a 16-bit value representing the actual address within the selected segment.
- The offset is added to the base address of the selected segment to obtain the final physical
address.
Example:
Let's say we have a program running in protected mode with a segment selector pointing to a code
segment in the GDT. The segment has a base address of 0x100000 (1 MB) and a limit of 0xFFFFF (1 MB
- 1 byte). The offset is 0x1234.
So, in this example, the virtual address (represented by the segment selector and offset) 0x101234
corresponds to the physical address 0x101234 in memory.
Keep in mind that this is a simplified explanation, and in real-world scenarios, additional
considerations and features, such as paging, play a role in memory management within the protected
mode of the 80286.
23. How many local and global descriptors can be defined in 80286 and explain how to access
them?
Accessing Descriptors:
To access descriptors in the GDT or LDT, the processor uses a segment selector. The segment
selector is a 16-bit value that serves as an index into the GDT or LDT. The format of the
segment selector is as follows:
The segment selector is loaded into a segment register (e.g., CS, DS, ES, SS), and the processor
uses the information from the corresponding GDT or LDT entry to determine the base address,
limit, and access control attributes of the segment.
; Load the segment selector for the desired GDT entry into a segment register
; Load the segment selector for the desired LDT entry into a segment register
In these examples, mov ds, ax and mov es, ax load the segment selector into the DS and ES
segment registers, respectively. The processor then uses the information in the GDT or LDT entry
corresponding to the loaded segment selector to perform memory accesses within the specified
segment.
24. Bring out the architectural differences between 80386 and Pentium processors.
(or)
Easy and simple differences
1. **Execution Capability:**
- **80386:** It executes one instruction at a time (scalar architecture).
- **Pentium:** It can execute multiple instructions simultaneously (superscalar architecture).
2. **Multiple Units:**
- **80386:** Typically has one unit for integer operations and one for floating-point operations.
- **Pentium:** Has multiple units for both integer and floating-point operations.
3. **Clock Speed:**
- **80386:** Operates at slower clock speeds.
- **Pentium:** Operates at higher clock speeds, providing faster performance.
4. **Cache Size:**
- **80386:** Has a small on-chip cache or no cache.
- **Pentium:** Has a larger on-chip cache for quicker access to frequently used data.
6. **Memory Addressing:**
- **80386:** Supports a 32-bit address space, limiting physical memory to 4 GB.
- **Pentium:** Also supports a 32-bit address space but introduces features like PAE for accessing
more than 4 GB of physical memory.
8. **Pipeline Depth:**
- **80386:** Has a simpler pipeline structure.
- **Pentium:** Has a deeper pipeline, allowing for more stages of instruction execution.
9. **Floating-Point Performance:**
- **80386:** Has basic floating-point performance.
- **Pentium:** Improves floating-point performance with a separate floating-point unit and
additional features.
In essence, the Pentium is a more advanced and faster processor compared to the 80386. It can
handle more tasks simultaneously, has a larger cache, operates at higher clock speeds, and supports
modern instruction set extensions for improved performance in multimedia and other applications.
1. **Virtual Memory:**
- The 80386 supports virtual memory, allowing programs to address more memory than physically
available.
- Virtual memory is divided into pages, and the processor manages the mapping of virtual pages to
physical pages in the system's RAM.
2. **Address Translation:**
- Virtual addresses generated by programs are translated to physical addresses using a paging
mechanism.
- Paging divides both virtual and physical memory into fixed-size pages. The virtual address is split
into a page number and an offset within that page.
3. **Page Tables:**
- Page tables are used for the translation of virtual addresses to physical addresses.
- The 80386 supports a two-level page table structure, consisting of a Page Directory and Page
Tables.
4. **Page Directory:**
- The Page Directory is a table that maps a virtual page number to the starting address of a Page
Table.
- It provides an additional level of indirection, allowing for efficient management of large address
spaces.
5. **Page Tables:**
- Page Tables map virtual page numbers to physical page frame numbers.
- Each process in the system has its own set of page tables, allowing for memory isolation between
processes.
6. **Page Size:**
- The 80386 supports variable page sizes. The most common page size is 4 KB, but larger pages, up to
4 MB, are also supported.
- Larger pages reduce the number of entries in the page tables, improving translation lookaside
buffer (TLB) efficiency.
7. **Segmentation:**
- While protected mode introduces virtual memory and paging, segmentation is still used to provide
memory protection and isolation.
- Each segment descriptor in the Global Descriptor Table (GDT) or Local Descriptor Table (LDT)
includes base and limit information for memory access control.
8. **Control Registers:**
- Control registers such as CR0 and CR3 are used to control and configure aspects of memory
management.
- CR0 includes flags for enabling or disabling features like paging.
- CR3 contains the physical base address of the page directory.
9. **Page Faults:**
- Page faults occur when a program attempts to access a virtual page that is not currently in physical
memory.
- The operating system handles page faults by loading the required page into physical memory from
disk.
In summary, the 80386's virtual memory and protected mode capabilities provide a more advanced
and flexible memory management system compared to its predecessors. These features are
fundamental to modern operating systems, enabling the efficient and secure execution of multiple
processes with isolated address spaces.
26. Draw memory read and write cycle minimum mode timing diagram of 8086(done above)
For instructions:-
31. Explain pipeline and paging unit concept of 80386.
The Intel 80386 microprocessor, like many modern microprocessors, employs a pipeline architecture
and includes a paging unit to enhance its performance and memory management capabilities.
1. **Pipeline Concept:**
A pipeline is a technique in computer architecture where multiple instructions are overlapped during
execution. Each stage of the pipeline performs a specific operation on an instruction, and multiple
instructions move through the pipeline concurrently. The pipeline concept helps in achieving
parallelism and improving instruction throughput.
The 80386 microprocessor has a five-stage pipeline, which includes the following stages:
3. **Execution (EX):**
- Executes the operation specified by the instruction.
Pipeline stages allow the processor to start executing a new instruction while the previous instruction
is still in the process of completing its execution. This overlap of instructions improves the overall
instruction throughput and, consequently, the processor's performance.
The paging unit in the 80386 is responsible for implementing virtual memory and translating virtual
addresses to physical addresses. The 80386 uses a paging mechanism to divide the virtual memory
into fixed-size pages, typically 4 KB in size.
- **Page Tables:**
- The 80386 uses a two-level page table structure.
- The Page Directory contains entries pointing to Page Tables.
- Page Tables contain entries mapping virtual pages to physical page frames.
- **Control Registers:**
- **CR0 (Control Register 0):**
- Contains flags to enable or disable features like paging.
- **CR2 (Control Register 2):**
- Contains the linear address that caused a page fault.
- **CR3 (Control Register 3):**
- Contains the physical base address of the Page Directory.
The paging unit allows the 80386 to provide virtual memory support, enabling the execution of
programs larger than physical memory and allowing multiple processes to run concurrently with
memory isolation.
32. Describe main features of 80186, 80286, 80386, 80486 and Pentium processor.
1. **Intel 80186:**
- **Year Released:** 1982
- **Bits:** 16-bit
- **Noteworthy Features:**
- Integrated peripherals (on-chip communication devices).
- Improved instruction set compared to its predecessor.
- Could handle more complex tasks than the earlier 8086.
2. **Intel 80286:**
- **Year Released:** 1982
- **Bits:** 16-bit
- **Noteworthy Features:**
- Introduced protected mode for better memory management.
- Supported virtual memory and multitasking.
- Enhanced instruction set compared to 80186.
- Higher clock speeds than the 80186.
3. **Intel 80386:**
- **Year Released:** 1985
- **Bits:** 32-bit
- **Noteworthy Features:**
- Moved to 32-bit architecture, allowing more data to be processed at once.
- Introduced a paging unit for better virtual memory support.
- Enhanced instruction set with new addressing modes.
- Enabled multiple protection rings for improved security.
4. **Intel 80486:**
- **Year Released:** 1989
- **Bits:** 32-bit
- **Noteworthy Features:**
- Integrated a floating-point unit (FPU) for improved mathematical processing.
- Introduced pipelined architecture for faster execution of instructions.
- Came with an integrated level 1 (L1) cache for quicker access to frequently used data.
- Featured enhanced instruction sets.
5. **Intel Pentium:**
- **Year Released:** 1993
- **Bits:** 32-bit (initially)
- **Noteworthy Features:**
- Introduced superscalar architecture with dual pipelines for parallel processing.
- Integrated floating-point unit.
- Brought in MMX technology for multimedia applications.
- Improved branch prediction and speculative execution for better overall performance.
In summary, these processors marked significant advancements in terms of bits (16-bit to 32-bit),
memory management, instruction sets, and overall processing capabilities. The progression from
80186 to Pentium saw improvements in performance, multitasking, memory handling, and support for
multimedia applications.
33. Describe the control word,tag word and status word structure of microprocessor 80386.
4/4
The Intel 80386 microprocessor uses control words, tag words, and status words as part of its
management of the Translation Lookaside Buffer (TLB) for virtual memory. TLB is a cache that
stores recently translated virtual-to-physical address mappings, improving the efficiency of
address translation. The structure of these words is as follows:
1. Control Word:
• The Control Word is used to configure and control the behavior of the Translation Lookaside Buffer
(TLB).
• It is often referred to as the CR0 register (Control Register 0).
• Key bits in the Control Word include:
• Paging Enable (PG): Enables or disables paging.
• Protection Enable (PE): Enables or disables memory protection.
• Numeric Error (NE): Enables or disables the numeric error exception.
• Write Protect (WP): Controls write protection for read-only pages.
2. Tag Word:
• The Tag Word is part of the TLB entry and holds information related to the translation of virtual
addresses.
• It includes fields such as the virtual page number, page frame number, and other control bits.
• The Tag Word is used to check whether a virtual-to-physical address translation is present in the TLB.
3. Status Word:
• The Status Word is also part of the TLB entry and provides information about the current state of the
TLB entry.
• It includes flags indicating whether the TLB entry is valid, whether it is dirty (modified), and other status
information.
• The Status Word helps in determining the validity and state of the translation stored in the TLB.
1. **Real Mode:**
- **Characteristics:**
- A 16-bit operating mode.
- Similar to the mode of the original 8086 microprocessor.
- Direct access to the first 1 MB of memory.
- Memory segmentation with 64 KB segments.
- Limited to addressing 1 MB of physical memory directly.
- No memory protection; any program can access any part of memory.
- Limited multitasking capability.
- **Usage:**
- Real Mode is commonly used during the boot process of an x86-based computer.
- MS-DOS operates in Real Mode.
- Provides compatibility with older software designed for 8086 and 8088 processors.
Key Differences:
- **Addressing:** Real Mode uses 16-bit addressing, limiting direct access to 1 MB of memory, while
Protected Mode uses 32-bit addressing, allowing access to a much larger virtual address space.
- **Memory Protection:** Real Mode lacks memory protection, making it susceptible to programs
interfering with each other. Protected Mode introduces memory protection, preventing one program
from accessing another program's memory.
- **Multitasking:** Real Mode has limited multitasking capabilities. Protected Mode supports more
advanced multitasking features, allowing multiple programs to run concurrently in separate memory
spaces.
- **Compatibility:** Real Mode is used for compatibility with older software. Protected Mode is
essential for modern operating systems and applications that require advanced features.
Real Mode is a legacy mode with limitations, while Protected Mode provides the foundation for
modern operating systems and applications, offering increased address space, memory protection,
and multitasking capabilities.
35. Explain pipelining and paging concept of 80386 microprocessor (done above)
36. Discussed operating modes of 80486 microprocessors
The Intel 80486 microprocessor has two primary operating modes: Real Mode and Protected Mode.
Let's break down these operating modes in easy-to-understand terms:
1. **Real Mode:**
- **Description:**
- Real Mode is the initial mode of operation when the 80486 starts up.
- It is designed for backward compatibility with the 8086 and 80286 processors.
- In Real Mode, the 80486 uses 16-bit addressing, similar to the earlier processors.
- **Key Features:**
- **16-Bit Addressing:** Addresses are represented using 16 bits, limiting the addressable memory
to 1 MB.
- **Segmentation:** Memory addressing involves both a segment and an offset.
- **No Memory Protection:** There is no protection between different programs or the operating
system.
- **Use Cases:**
- Real Mode is suitable for running older software designed for the 8086 or 80286 architecture.
- It is often used during the system boot-up process.
2. **Protected Mode:**
- **Description:**
- Protected Mode is a more advanced operating mode introduced with the 80486.
- It provides features not available in Real Mode, including enhanced memory management and
protection.
- **Key Features:**
- **32-Bit Addressing:** Addresses are represented using 32 bits, allowing access to a much larger
memory space (4 GB).
- **Memory Protection:** Protected Mode introduces memory protection, preventing one program
from interfering with the memory of another.
- **Virtual Memory:** It supports virtual memory, enabling the execution of programs larger than
physical RAM.
- **Multitasking:** Protected Mode supports multitasking, allowing multiple programs to run
concurrently.
- **Use Cases:**
- Protected Mode is essential for running modern operating systems like Windows, Linux, and others.
- It facilitates the execution of applications that require advanced memory management and
multitasking capabilities.
- **Transition:**
- The 80486 can transition between Real Mode and Protected Mode.
- The transition to Protected Mode is typically initiated by the operating system during system
initialization to take advantage of advanced features.
In summary, Real Mode is a backward-compatible mode suitable for running older software, while
Protected Mode is a more advanced mode that provides features like memory protection, virtual
memory, and multitasking, making it essential for modern operating systems and applications. The
ability to transition between these modes allows the 80486 to maintain compatibility with legacy
software while supporting advanced features when needed.
3. **Execution (EX):**
- **Purpose:** Executing arithmetic or logic operations.
- **Description:** The execution stage performs the actual computation or operation specified by
the instruction. This stage includes ALU (Arithmetic Logic Unit) operations for integer calculations.
7. **Branch Prediction:**
- **Purpose:** Predicting the outcome of branch instructions.
- **Description:** The Pentium uses branch prediction mechanisms to predict the outcome of
conditional branches. Predicted branches help maintain a smooth flow of instructions through the
pipeline.
These pipeline stages enable the Pentium processor to achieve high performance by executing
multiple instructions concurrently, efficiently handling branches, and utilizing advanced features like
out-of-order execution.
40. Different between Pentium processor versions, Pentium; Pentium pro; Pentium P6
1. **Pentium (P5):**
- **Release Year:** 1993
- **Main Feature:** Dual Pipeline
- **Use Case:** General consumer use
- **Cache Size:** Typically 16 KB L1 cache
- **Notable:** Introduced MMX technology in later versions
3. **Pentium (P6):**
- **Release Year:** 1996
- **Main Feature:** P6 Microarchitecture (Continuation)
- **Use Case:** Consumer market
- **Cache Size:** Varied
- **Notable:** Dynamic execution core, MMX technology
2. **Use Case:**
- Pentium: General consumer use.
- Pentium Pro: Workstations and servers.
- Pentium (P6): Consumer market.
3. **Cache Size:**
- Pentium: Typically 16 KB L1 cache.
- Pentium Pro: Larger 32 KB L1 cache.
- Pentium (P6): Varied cache sizes.
4. **Notable Features:**
- Pentium: Introduced MMX technology in later versions.
- Pentium Pro: Deeper pipeline, out-of-order execution.
- Pentium (P6): Dynamic execution core, MMX technology.
In essence, each version introduced improvements in architecture, targeted different markets, and
brought new features to enhance performance for specific purposes. The Pentium (P6) series, in
particular, continued to evolve for the consumer market with a focus on improved execution and
multimedia capabilities.
1 (A) (I)
(i) MOVSW − Used to move the word from one string to another
(ii) REP − Used to repeat the given instruction till CX ≠ 0.
(iii) LODSB − Used to store the string byte into AL or string word into AX.
(iv)CMPSB - The CMPSB instruction is a compare string bytes instruction . It compares the byte at the address
specified by the source index register (SI) to the byte at the address specified by the destination index
register (DI).
(v) REPZ − Used to repeat the given instruction until zero flag ZF = 1
5(A)
(i)AND(ii)
(iii)
(iv)AND(v)