0% found this document useful (0 votes)
31 views9 pages

DEAM ASSIGNMENT 3 Microprocessor

Digital electronics assignment no 3

Uploaded by

samikshac1001
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
31 views9 pages

DEAM ASSIGNMENT 3 Microprocessor

Digital electronics assignment no 3

Uploaded by

samikshac1001
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 9

DEAM ASSIGNMENT NO 3

Name : Samiksha channawar


Roll No: SEDA36

Q) STUDY OF 8086 ARCHITECTURE, INSTURCTION SETS ,MEMORY


MODELS/SEGMENTATION AND ASSEMBLY LANGUAGE PROGRAMMING

STUDY OF 8086 ARCHITECTURE:

The 8086 microprocessor, designed by Intel in the late 1970s, is the first member of the x86
family. It's a 16-bit processor with a 20-bit address bus, capable of addressing up to 1 MB of
memory. The 8086 uses a CISC architecture, supporting a wide range of instructions.

It features a segmented memory architecture, dividing memory into segments addressed by a


combination of a segment register and an offset. The processor has two main execution units: the
Execution Unit (EU) for executing instructions and the Bus Interface Unit (BIU) for fetching and
decoding instructions and managing data transfers.

The 8086 includes various registers: general-purpose registers for data storage and operations,
segment registers for memory addressing, and special registers like the flags register and the
instruction pointer (IP).
INSTRUCTION SETS:

The 8086 microprocessor supports 8 types of instructions −

Data Transfer Instructions Arithmetic Instructions


Bit Manipulation Instructions String Instructions
Program Execution Transfer Instructions (Branch & Loop Instructions) Processor Control
Instructions
Iteration Control Instructions Interrupt Instructions

1) 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

memoryLES − 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.

2) 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 −

Instructions to perform addition:

ADD − Used to add the provided byte to byte/word to word. ADC − Used to add with carry.
INC − Used to increment the provided byte/word by 1. AAA − Used to adjust ASCII after
addition.
DAA − Used to adjust the decimal after the addition/subtraction operation.

Instructions to perform subtraction:


SUB − Used to subtract the byte from byte/word from word. SBB − Used to perform subtraction
with borrow.
DEC − Used to decrement the provided byte/word by 1.

NPG − Used to negate each bit of the provided byte/word and add 1/2’s complement. CMP − Usedto
compare 2 provided byte/word.
AAS − Used to adjust ASCII codes after subtraction. DAS − Used to adjust decimal after subtraction.

Instruction to perform multiplication:

MUL − Used to multiply unsigned byte by byte/word by word. IMUL − Used to multiply signed
byte by byte/word by word. AAM − Used to adjust ASCII codes after multiplication.

Instructions to perform division:

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.

3) Bit Manipulation Instructions

These instructions are used to perform operations where data bits are involved, i.e. operations
likelogical, shift, etc.

Following is the list of instructions under this group −

Instructions to perform logical operation:


NOT − Used to invert each bit of a byte or word.

AND − Used for adding each bit in a byte/word with the corresponding bit in another byte/word.

OR − Used to multiply each bit in a byte/word with the corresponding bit in another byte/word.

XOR − Used to perform Exclusive-OR operation over each bit in a byte/word with
thecorresponding bit in another byte/word.

TEST − Used to add operands to update flags, without affecting operands.

Instructions to perform shift operations:

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.

Instructions to perform rotate operations:

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.

4) String Instructions

String is a group of bytes/words and their memory is always allocated in a sequential

order.Following is the list of instructions under this group −

REP − Used to repeat the given instruction till CX ≠ 0.

REPE/REPZ − Used to repeat the given instruction until CX = 0 or zero flag ZF =

1. REPNE/REPNZ − Used to repeat the given instruction until CX = 0 or zero flag

ZF = 1.MOVS/MOVSB/MOVSW − Used to move the byte/word from one string


to another.

COMS/COMPSB/COMPSW − Used to compare two string bytes/words.

INS/INSB/INSW − Used as an input string/byte/word from the I/O port to the provided
memorylocation.

OUTS/OUTSB/OUTSW − Used as an output string/byte/word from the provided memory


locationto the I/O port.

5) Program Execution Transfer Instructions (Branch and Loop Instructions)

These instructions are used to transfer/branch the instructions during an execution. It includes the
following instructions −

Instructions to transfer the instruction during an execution without any condition

−CALL − Used to call a procedure and save their return address to the stack.

RET − Used to return from the procedure to the main program.

JMP − Used to jump to the provided address to proceed to the next instruction.

Instructions to transfer the instruction during an execution with some conditions

−JA/JNBE − Used to jump if above/not below/equal instruction satisfies.

JAE/JNB − Used to jump if above/not below instruction satisfies.

JBE/JNA − Used to jump if below/equal/ not above instruction satisfies. JC − Used to jump ifcarry
flag CF = 1
JE/JZ − Used to jump if equal/zero flag ZF = 1

JG/JNLE − Used to jump if greater/not less than/equal instruction satisfies. JGE/JNL − Used to
jump if greater than/equal/not less than instruction satisfies. JL/JNGE − Used to jump if less
than/not greater than/equal instruction satisfies. JLE/JNG − Used to jump if less than/equal/if not
greater than instruction satisfies. JNC − Used to jump if no carry flag (CF = 0)
JNE/JNZ − Used to jump if not equal/zero flag ZF = 0 JNO − Used to jump if no overflow flag OF
=0
JNP/JPO − Used to jump if not parity/parity odd PF = 0 JNS − Used to jump if not sign SF = 0
JO − Used to jump if overflow flag OF = 1

JP/JPE − Used to jump if parity/parity even PF = 1 JS − Used to jump if sign flag SF = 1

1)Processor Control Instructions

These instructions are used to control the processor action by setting/resetting the flag

values.Following are the instructions under this group −

STC − Used to set carry flag CF to 1

CLC − Used to clear/reset carry flag CF to 0

CMC − Used to put complement at the state of carry flag

CF.STD − Used to set the direction flag DF to 1

CLD − Used to clear/reset the direction flag DF to 0

STI − Used to set the interrupt enable flag to 1, i.e., enable INTR input.

CLI − Used to clear the interrupt enable flag to 0, i.e., disable INTR input.

MEMORY MODEL

Segmentation in the 8086 microprocessor divides the main memory into logical segments, each
with its own base address. This enhances execution speed by allowing the processor to efficiently
fetch and execute data.

The Bus Interface Unit (BIU) includes four 16-bit segment registers:
- Code Segment (CS):* Addresses the memory location where the executable program is stored.

- Data Segment (DS):* Points to the memory segment where data is stored.

- Extra Segment (ES):* Refers to another data segment in memory.

- Stack Segment (SS):* Addresses the memory segment used for stack data.

Types Of Segmentation –
Overlapping Segment – A segment starts at a particular address and its maximum size can go up to
64kilobytes. But if another segment starts along with this 64kilobytes location of the first segment,
then the two are said to be Overlapping Segment.

Non-Overlapped Segment – A segment starts at a particular address and its maximum size can go
up to 64kilobytes. But if another segment starts before this 64kilobytes location of the first
segment, then the two segments are said to be Non-Overlapped Segment.

Rules of Segmentation Segmentation process follows some rules as follows:

The starting address of a segment should be such that it can be evenly divided by 16. Minimum
size of a segment can be 16 bytes and the maximum can be 64 kB.
B] Write ALP to display HELLO using 09h function of INT 21 interrupt

.model small ; 64kbyte of CS and DS each

.data

msg db"HELLO$"

.code

mov ax,@data ; initialization of DS mov ds,ax

mov ah,09h

LEA dx,msg ; load effective addr int 21h

mov al,02h mov bl,05h

add al,bl

mov ah,4Ch int 21h

end

You might also like