You are on page 1of 29

Microprocessor And Microcontroller Question Solve

(Midterm-2021)
1.(a) Explain the internal Architecture of the 8086 microprocessor using a block
diagram.
Ans.
Internal Architecture of 8086:
Fig. 6.2 shows a block diagram of Internal Architecture of 8086. It is internally
divided into two separate functional units. These are the Bus Interface Unit
(BIU) and the Execution Unit (EU). These two functional units can work
simultaneously to increase system speed and hence the throughput. Throughput is
a measure of number of instructions executed per unit time.

i.Bus Interface Unit:


The bus interface unit is the Internal Architecture of 8086 to the outside world. It
provides a full 16-bit bi-directional data bus and 20-bit address bus. The bus
interface unit is responsible for performing all external bus operations, as listed
below.

Functions of Bus Interface Unit

1. It sends address of the memory or I/O.


2. It fetches instruction from memory.
3. It reads data from port/memory.
4. It Writes data into port/memory.
5. It supports instruction queuing.
6. It provides the address relocation facility.
To implement these functions the BIU contains the instruction queue, segment
registers instruction pointer, address summer and bus control logic.

ii.Execution Unit [EU]:

The execution unit of Internal Architecture of 8086 tells the BIU from where to
fetch instructions or data, decodes instructions and executes instructions. It
contains

 Control Circuitry
 Instruction Decoder
 Arithmetic Logic Unit (ALU)
 Flag Register
 General Purpose Registers
 Pointers and Index Registers

(b) What does addressing mode mean? Discuss the several addressing modes
used by 8086 microprocessor.
Ans.
Addressing mode:
The way of specifying data to be operated by an instruction is known
as addressing modes. This specifies that the given data is an immediate data or an
address. It also specifies whether the given operand is register or register pair.
Types of addressing modes:
i.Register mode – In this type of addressing mode both the operands are
registers.
Example:
MOV AX, BX
XOR AX, DX
ADD AL, BL
ii.Immediate mode – In this type of addressing mode the source operand is a 8 bit
or 16 bit data. Destination operand can never be immediate data.
Example:
MOV AX, 2000
MOV CL, 0A
ADD AL, 45
AND AX, 0000
Note that to initialize the value of segment register an register is required.
MOV AX, 2000
MOV CS, AX
iii.Displacement or direct mode – In this type of addressing mode the effective
address is directly given in the instruction as displacement.
Example:
MOV AX, [DISP]
MOV AX, [0500]
iv.Register indirect mode – In this addressing mode the effective address is in SI,
DI or BX.
Example: Physical Address = Segment Address + Effective Address
MOV AX, [DI]
ADD AL, [BX]
MOV AX, [SI]
v.Based indexed mode – In this the effective address is sum of base register and
index register.
Base register: BX, BP
Index register: SI, DI
The physical memory address is calculated according to the base register.
Example:
MOV AL, [BP+SI]
MOV AX, [BX+DI]
vi.Indexed mode – In this type of addressing mode the effective address is sum of
index register and displacement.
Example:
MOV AX, [SI+2000]
MOV AL, [DI+3000]
vii.Based mode – In this the effective address is the sum of base register and
displacement.
Example:
MOV AL, [BP+ 0100]
viii.Based indexed displacement mode – In this type of addressing mode the
effective address is the sum of index register, base register and displacement.
Example:
MOV AL, [SI+BP+2000]
ix.String mode – This addressing mode is related to string instructions. In this the
value of SI and DI are auto incremented and decremented depending upon the
value of directional flag.
Example:
MOVS B
MOVS W
x.Input/Output mode – This addressing mode is related with input output
operations.
Example:
IN A, 45
OUT A, 50
xi.Relative mode –
In this the effective address is calculated with reference to instruction pointer.
Example:
JNZ 8 bit address
IP=IP+8 bit address

(c) What are machine language and High level Language?


Ans.
Machine Language:
Machine language is the language understood by a computer. All programs and
programming languages eventually generate or run programs in machine
language.
High level Language:
A high-level language does not require addressing hardware constraints when
developing a program. However, every single program written in a high-level
language must be interpreted into machine language before being executed by
the computer. BASIC, C/C++ and Java are popular examples of high-level
languages.

(b) Draw the block diagram of 8086 microprocessor system overview and
Explain how data is transferred with in the 8086 microcomputer system.
Ans.
The architecture of 8086 microprocessor is composed of 2 major units, the BIU
i.e., Bus Interface Unit and EU i.e., Execution Unit. The figure below shows the
block diagram of the architectural representation of the 8086 microprocessor:
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 −

Instruction to transfer a word


 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.
Instructions for input and output port transfer
 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.

Instructions to transfer the address


 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.

Instructions to transfer flag registers


 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.

(c ) What is memory segmentation? How different memory segments are


accessed in 8086 microprocessor?
Ans.
Memory segmentation:
Memory segmentation is nothing which is the methods where whole memory is
divided into the smaller parts. In 8086 microprocessor memory are divided into
four parts which is known as the segments. These segments are data segment,
code segment, stack segment and extra segment.
Different memory segments are accessed in 8086 microprocessor:
In the 8086 microprocessor, memory is divided into different segments, and each
segment has a unique starting address. The 8086 architecture supports four types
of memory segments: code segment (CS), data segment (DS), stack segment (SS),
and extra segment (ES). These segments are accessed using segment registers and
offsets. Let's discuss how different memory segments are accessed in the 8086
microprocessor:

Code Segment (CS):


The code segment contains the instructions of the program to be executed. The
CS register holds the starting address of the code segment. To access memory
within the code segment, the instruction pointer (IP) register is used as an offset.
The effective address is formed by combining the CS value with the IP value. For
example:

MOV AX, CS ; Move the value of CS register to AX


MOV BX, [BX] ; Access memory within the code segment using BX as an offset

Data Segment (DS):


The data segment is used to store data elements, variables, and constants. The DS
register holds the starting address of the data segment. To access memory within
the data segment, an offset value is added to the DS register. The effective
address is formed by combining the DS value with the offset. For example:

MOV AX, DS ; Move the value of DS register to AX


MOV BX, [BX] ; Access memory within the data segment using BX as an offset

Stack Segment (SS):


The stack segment is used to store the stack data, including subroutine return
addresses and local variables. The SS register holds the starting address of the
stack segment. To access memory within the stack segment, an offset value is
added to the SS register. The effective address is formed by combining the SS
value with the offset. For example:

MOV AX, SS ; Move the value of SS register to AX


MOV BX, [BX] ; Access memory within the stack segment using BX as an offset

Extra Segment (ES):


The extra segment is an additional data segment that can be used for additional
data storage. The ES register holds the starting address of the extra segment. To
access memory within the extra segment, an offset value is added to the ES
register. The effective address is formed by combining the ES value with the
offset. For example:

MOV AX, ES ; Move the value of ES register to AX


MOV BX, [BX] ; Access memory within the extra segment using BX as an offset

In summary, the 8086 microprocessor accesses different memory segments by


combining the values of segment registers (CS, DS, SS, ES) with appropriate offsets
to form effective addresses. These effective addresses are used to access specific
locations within the corresponding memory segments.

Final Exam-2021
1.(a) What are the functions of microprocessors? Differentiate microprocessor
and microcontroller.
Ans.
Difference between microprocessor and microcontroller:

(b) Draw the block diagram of 8086 microprocessor.


Ans.

(c) Explain different addressing modes with examples.


Ans.
Addressing Modes– The term addressing modes refers to the way in which the
operand of an instruction is specified. The addressing mode specifies a rule for
interpreting or modifying the address field of the instruction before the operand
is actually executed.
Let's discuss some common addressing modes with examples:
i.Immediate Addressing:
In immediate addressing, the operand is a constant value or immediate data
that is directly specified within the instruction. The data is embedded in the
instruction itself. For example:
MOV AX, 42 ; Move the immediate value 42 to the AX register
ADD BX, 10 ; Add the immediate value 10 to the BX register
ii.Register Addressing:
In register addressing, the operand is stored in a register. The instruction
directly operates on the data stored within the specified register. For example:
MOV AX, BX ; Move the value of the BX register to the AX register
ADD AX, CX ; Add the value of the CX register to the AX register
iii.Direct Addressing:
In direct addressing, the memory address of the operand is explicitly specified in
the instruction. The instruction directly accesses the data stored at the specified
memory address. For example:
MOV AX, [1000] ; Move the data stored at memory location 1000 to the AX
register
ADD [2000], BX ; Add the value of the BX register to the data stored at memory
location 2000.
2. (a) What do you mean by 8 bit and 16 bit microprocessor?
Ans.

8 bit microprocessor:-
8-bit is an early computer hardware device or software program that is capable of
transferring eight bits of data at the same time
The Intel 8085 is an 8-bit microprocessor. Its data bus is 8-bit wide and hence, 8 bits of
data can be transmitted in parallel from or to the microprocessor.
16 bit microprocessor:-
The 16 bit Microprocessor means that it has 16 address lines.
A 16 bit microprocessor is having 16bit register set. It have 16 address and data lines to
transfer address and data both. Hence it is 16 address lines. The maximum addresses
are 2^16 means 65536.

(b) Describe the general purpose register.


Ans.
General purpose registers are extra registers that are present in the CPU and are
utilized anytime data or a memory location is required. These registers are used
for storing operands and pointers. These are mainly used for holding the
following:
 Operands for logical and arithmetic operations
 Operands for address calculation
 Memory pointers
There are 3 types of General-purpose data registers they are:
i.Data registers: Data registers consists of four 32-bit data registers, which are
used for arithmetic, logical and other operations. Data registers are again
classified into 4 types they are:
 AX.
 BX.
 CX.
 DX.
ii.Pointer registers: The pointer registers consist of 16-bit left sections (SP, and
BP) and 32-bit ESP and EBP registers.
 SP.
 BP.
iii.Index registers: The 16-bit rightmost bits of the 32-bit ESI and EDI index
registers. SI and DI are sometimes employed in addition and sometimes in
subtraction as well as for indexed addressing.
 SI.
 DI.

(c) what happens when the microprocessor is powered up?


Ans.
The microcontroller boot process starts by simply applying power to the system.
Once the voltage rails stabilize, the microcontroller looks to the reset vector for
the location in flash where the start-up instruction can be found. The reset
vector is a special location within the flash memory map.
3.
a)What is the Flag register? Discuss the role of five flag registers in an ALU
operation using an example.
Ans.
Flag register:
The flag register is a special register. It is an 8-bit, 16-bit, or 32-bit register and
does not make any sense as a unit. Instead, each bit has the same meaning. The
flag register bits operate independently; their combined value has no meaning.
Step 1: Add A and B using the ALU:

11011011

+ 10010101

--------------------

101100100

Step 2: Analyze the flags:


Zero Flag (ZF): The result is not zero; therefore, ZF is cleared.

Sign Flag (SF): The MSB of the result is 1 (indicating a negative value); therefore,
SF is set.

Carry Flag (CF): There is no carry from the most significant bit; thus, CF is cleared.

Overflow Flag (OF): In unsigned addition, there is no overflow; hence, OF is


cleared.

Parity Flag (PF): The result, 101100100, has four set bits (1s), which is an even
count. Thus, PF is set.

b) Draw pin diagram of 8086 microcomputer system overview and explain how
data is transferred with in the 8086 microcomputer system.
Ans.

Following is the table showing the list of data transfer instructions:


OPCODE OPERAND EXPLANATION EXAMPLE

MOV D, S D=S MOV AX, [SI]

PUSH D pushes D to the stack PUSH DX

POP D pops the stack to D POP AS

PUSHA none put all the registers into the stack PUSHA

POPA none gets words from the stack to all registers POPA

XCHG [2050],
XCHG D, S exchanges contents of D and S
AX

IN D, S copies a byte or word from S to D IN AX, DX

OUT D, S copies a byte or word from D to S OUT 05, AL

translates a byte in AL using a table in the


XLAT none XLAT
memory

LAHF none loads AH with the lower byte of the flag register LAHF

stores AH register to lower byte of the flag


SAHF none SAHF
register

PUSHF none copies the flag register at the top of the stack PUSHF

copies a word at the top of the stack to the flag


POPF none POPF
register
c) What is memory segmentation? How different memory segments are
accessed in 8086 microprocessor?
Ans.
Memory Segmentation is the process in which the main memory of the
computer is logically divided into different segments and each segment has its
own base address. It is basically used to enhance the speed of execution of the
computer system, so that the processor is able to fetch and execute the data
from the memory easily and fast.

In the 8086 microprocessor, memory segments are accessed using segment


registers and effective addresses. The four segment registers are CS (Code
Segment), DS (Data Segment), SS (Stack Segment), and ES (Extra Segment).

i. Code Segment (CS): It holds the base address of the code


segment where the program instructions are stored.
ii. Data Segment (DS): It holds the base address of the data segment
where variables and constants are stored.
iii. Stack Segment (SS): It holds the base address of the stack
segment, used for storing function call information and local
variables.
iv. Extra Segment (ES): It holds the base address of an additional
data segment used for certain string operations.

4.
a)Give the main tasks of AX and IP registers for 8086 μ-processor.
Ans.
Here are the main tasks of the AX (Accumulator) and IP (Instruction Pointer)
registers in the 8086 microprocessor:

AX register (Accumulator):
 Arithmetic operations: Used for various arithmetic operations like addition,
subtraction, multiplication, and division.
 Data manipulation: Serves as a general-purpose register to hold
intermediate data during computations and data manipulation.
 Data transfer: Facilitates the transfer of data between the CPU and
memory or I/O devices.

IP register (Instruction Pointer):

 Instruction sequencing: Points to the memory address of the next


instruction to be fetched and executed in the code segment (CS).
 Sequential execution: Works in conjunction with the CS register to
determine the memory location of the next instruction during program
execution.
 Automatically incremented: After fetching an instruction, the IP is
automatically incremented, allowing the CPU to fetch the next sequential
instruction. This enables the CPU to execute the program sequentially.

b) Find the memory address of the next instruction executed by the μ-processor,
when operated in the real mode, for the following CS:IP -
i) CS= 2301 Hand IP 75FDH ii) CS 3476H and IP= IA00H
Ans.

In real mode of the 8086 microprocessor, the physical memory address of the
next instruction executed is calculated by combining the segment address (CS)
and the offset address (IP).
To find the memory address of the next instruction, we combine the CS and IP
values, and the result is the physical memory address.

i) CS=2301H and IP=75FDH:

Next instruction memory address = (CS * 16) + IP

= (2301H * 16) + 75FDH

= 36816H + 30717H

= 67533H

So, the memory address of the next instruction is 67533H.

ii) CS=3476H and IP=IA00H (IA00H can be read as 0A00H since IA is just a
representation of the hex value 0A):

Next instruction memory address = (CS * 16) + IP

= (3476H * 16) + 0A00H

= 55616H + 0A00H

= 56616H

So, the memory address of the next instruction is 56616H.

c) Why we need to initialize data segment?


Ans.
Here are some reasons why data segment initialization is essential:

 Deterministic Initialization: Without initializing the data segment, the


values of global and static variables would be indeterminate, as they would
depend on whatever data was previously present in that memory location.
By initializing the data segment, you can guarantee that these variables
start with known and predictable values.
 Avoiding Bugs and Errors: If variables are not initialized before they are
used, it can lead to bugs and unexpected behavior in the program.
Uninitialized variables might contain garbage values, leading to unintended
results, crashes, or security vulnerabilities.
 Consistency: Initialization ensures that the program starts in a consistent
state. This is particularly crucial in multi-threaded applications, where
variables are accessed and modified concurrently. Proper initialization
helps prevent data races and other concurrency-related issues.
 Default Values: Initializing variables to their default values can save
programmers from explicitly setting them to specific values when not
necessary. For instance, variables representing counters could start at zero,
booleans at false, etc.
 Security: In some cases, uninitialized data can be exploited by attackers for
security purposes, such as bypassing security checks or obtaining sensitive
information. By initializing variables, you can mitigate certain types of
security vulnerabilities.
 Language and Compiler Requirements: Some programming languages and
compilers have rules that expect certain variables to be initialized before
use. Failing to comply with these rules may result in compiler warnings or
errors.
 Efficiency: Initializing data at the beginning of the program can be more
efficient than initializing variables individually as they are declared or at
runtime. Bulk initialization allows the program to set data quickly.

5.
a) What is interrupt? Discuss maskable and non maskable interrupt.
Ans.
Interrupt:
An interrupt is a signal from a device attached to a computer or from a program
within the computer that requires the operating system to stop and figure out
what to do next.

Maskable Interrupt:

A maskable interrupt is an interrupt that can be enabled or disabled by the CPU.


The CPU has control over whether it responds to a particular maskable interrupt
request. These interrupts can be prioritized and controlled using interrupt masks,
allowing the system to handle them according to their importance.

Non-Maskable Interrupt (NMI):

A non-maskable interrupt is an interrupt that cannot be disabled or masked by


the CPU. NMIs are designed to be used for critical events that require immediate
attention, such as hardware failures or system-level emergencies. They take
precedence over other interrupts and are not subject to regular interrupt masking
mechanisms.

b) Distinguishes between Logical address and Physical address.


Ans.
c) Write short notes on following terms:
i) LEA
ii) MOV
iii) PUSH
iv) POP
Ans.

i) LEA (Load Effective Address):

LEA is an assembly language instruction used to load the effective address of a


memory operand into a register without actually accessing the memory. It
calculates the memory address where the operand is located and stores that
address in the specified register. LEA is often used to perform arithmetic
calculations or to generate memory addresses for indirect memory access.

ii) MOV (Move):

MOV is an assembly language instruction used to copy data between registers,


memory locations, or immediate values. It is one of the most fundamental
instructions in assembly language programming and is used for data manipulation
and transfer operations.

iii) PUSH:

PUSH is an assembly language instruction used to push (store) data onto the
stack. It decrements the stack pointer and copies the value from a register or a
memory location onto the top of the stack. PUSH is commonly used to save the
context of a program before calling a subroutine or handling interrupts.

iv) POP:
POP is an assembly language instruction used to pop (retrieve) data from the
stack. It copies the value from the top of the stack into a register or a memory
location and then increments the stack pointer. POP is often used to restore the
context of a program after returning from a subroutine or an interrupt handler.

6. a) Explain synchronous and asynchronous data transfer.


Ans.

Synchronous Transmission:

Synchronous data transmision is a type of data transfer that carries a frequent


stream of data in the form of signals along with timing signals generated by an
electric clock that ensures the synchronization of the sender and receiver.
Synchronous transmission allows data to be transmitted in fixed intervals in the
form of frames or blocks.

Asynchronous Transmission:

Asynchronous transmission is a type of data transmission which works on start


and stop bits. In Asynchronous transmission, each character contains its start and
stop bit and irregular interval of time between them.

b) Draw and discuss block diagrams of microcontrollers.


Ans.
The block diagram of a microcontroller typically includes the following key
components:

 Central Processing Unit (CPU): The core that executes instructions and
performs data processing.
 Memory: Program memory (Flash/ROM) holds the firmware, and data
memory (RAM) stores variables during execution.
 Input/Output Ports (I/O): Interfaces with external devices for data
exchange.
 Timer/Counters: Provides timing-related functions for accurate delays and
measurements.
 Analog-to-Digital Converter (ADC): Converts analog signals from sensors to
digital values.
 Serial Communication Interfaces: Enables communication with other
devices using UART, SPI, or I2C.
 Interrupt Controller: Manages rapid response to external events.
 Clock and Power Management: Provides timing and power-saving features.

These components work together to control and interact with external devices
and execute the program's instructions.

c) How do you use a microcontroller to design a project traffic signal control?


Ans.
To design a traffic signal control project using a microcontroller, follow these
steps:

 Select the Microcontroller.


 Traffic Light Configuration.
 Interfacing Sensors
 Programming.
 Interrupt Handling.
 Serial Communication (Optional).
 Testing and Calibration.
 Safety Considerations.
 Power Management.
 Enclosure and Installation.

7.
a) Sub AX, BX, where AX contains 8000h and BX contains 0001h and calculate
Status flag, Parity flag, Zero flag, Carry flag and Overflow flag.
Ans.

8000h 1000 0000 0000 0000

– 0001h – 0000 0000 0000 0001

7FFFh 0111 1111 1111 1111 AX = 7FFFh

SF = 0 because the msb is 0.

PF = 1 because there are 8 (even number) one bits in the low byte of

the result.

ZF = 0 because the result is nonzero.

CF = 0 because a smaller unsigned number is being subtracted from

a larger one.

OF = 1 because in a signed sense we are subtracting a positive number

from a negative one, which is like adding two negatives but

the result is positive (the wrong sign).

c) What do you mean by Stack 100h in assembly language?


Ans.
In assembly language, "Stack 100h" means allocating 256 bytes (100h in
hexadecimal) of memory for use as a stack. The stack is a region of memory used
for temporary storage during program execution. Allocating the stack is typically
done by adjusting the stack pointer to reserve the required memory space.
To allocate the stack of size 100h, you would reserve 256 bytes of memory to be
used as a stack. In x86 assembly, you would typically use the SUB instruction to
adjust the stack pointer accordingly, like this:

; Assuming SP (stack pointer) points to the top of the stack already

SUB SP, 100h ; Allocate 256 bytes (100h in hexadecimal) for the stack

8.
a) Write pseudo-code divide -1250 by 7
Ans.
INPUT number1=-1250
INPUT number2=7
COMPUTE quotient1 := number1 // number2
COMPUTE quotient2 := number2 // number1
PRINT quotient1
PRINT quotient2

b) Describe the general format of 16 machine instruction with explanation of


each component.
Ans.

The general format of a 16-bit move (MOV) machine instruction varies depending
on the architecture and instruction set of the processor. However, in a typical 16-
bit architecture, the MOV instruction format consists of two main components:
the opcode and the operands. Let's break down the format and explain each
component:

General Format of 16-bit MOV Instruction:

Opcode Destination Operand, Source Operand

Explanation:
Opcode: The opcode is a binary code that specifies the operation to be performed
by the instruction. In the case of the MOV instruction, the opcode is used to
indicate that data should be moved from the source operand to the destination
operand. Different opcodes may be used for specific variants of the MOV
instruction, such as MOV immediate (MOV with a constant value) or MOV register
to register (MOV between two registers).

Destination Operand: This component specifies where the data will be moved to.
It could be a register, memory location, or other data storage location. The
destination operand is often represented by a register symbol or a memory
address.

Source Operand: This component specifies where the data will be moved from.
Like the destination operand, it can also be a register, memory location, or
constant value. The source operand is typically represented by a register symbol,
memory address, or an immediate value.

Example:

Suppose we have a 16-bit architecture where the opcode for the MOV instruction
is represented by 0010 in binary. We want to move the value stored in register AX
to register BX. The format of the MOV instruction would look like this:

0010 BX, AX

In this example:

The opcode is 0010, indicating that it is a MOV instruction.

The destination operand is BX, specifying that the data will be moved to register
BX.

The source operand is AX, indicating that the data will be moved from register AX.

When the processor executes this instruction, the value stored in register AX will
be moved to register BX.

Please note that the actual binary representation of the opcode and operands
may differ based on the specific processor architecture, and the number of bits
used for each component may vary. Always refer to the processor's instruction
set documentation for the precise format and opcode values.

c) Describe how following instructions works in 8086 microprocessor-


i) ADD
ii) SUB
iii) MUL
iv) DIV
Ans.
Here's a very short description of how each instruction works in the 8086
microprocessor:
i) ADD (Addition): This instruction performs the addition of two operands and
stores the result in the destination operand. It sets the flags based on the result,
including the carry flag for overflow.
ii) SUB (Subtraction): This instruction performs the subtraction of the second
operand from the first operand and stores the result in the destination operand.
It sets the flags based on the result, including the borrow flag for borrow-out.
iii) MUL (Multiplication): This instruction multiplies the unsigned value of the
first operand with the unsigned value in the accumulator (AX) and stores the
result in AX (16-bit multiplication). It may set flags based on the result, including
the overflow flag.
iv) DIV (Division): This instruction performs unsigned division of the 32-bit value
formed by the DX:AX pair by the second operand. The quotient is stored in AX,
and the remainder is stored in DX. It may set flags based on the result, including
the divide-by-zero flag.

You might also like