8086 Microprocesser Instructions

Post on 16-Oct-2014

651 views 1 download

Transcript of 8086 Microprocesser Instructions

…..Multiplicative….. ..Instructions..

o An Integrated chip with the multi programmable capability.o It is a general purpose chip with some integrated memory as

well processing unit.o The normal computers have a microprocessor with some

external central processing units. It is

called microcomputer.o Speed of the microprocessor

decided by the number of clock

cycles passed for an instruction

execution.

Microprocessor Just an intro

i8086

o The purpose of microcontroller is a specific.o Normally the embedded system applications developed by

using microcontroller.

Microcontroller Just an intro

o The macro instructions introduced to increase the flexibility of the programmer and to reduce the code size.

o The macro instructions will be converted as micro instructions. That will only understandable by the machine.

o The micro instructions will have the micro level operation with the control function. Such as register movement, fetch, memory read.

Macro instructions/Micro instructions

o Arithmetic instructions (ADD, SUB, MUL, DIV)o Logical Instructions (AND, OR, XOR)o Register transfer instructions (MOV, XCHG)o Shift instructions (SHL, SHR)o Rotate Instructions (ROR, ROL, RCL, RCR)o The Bit operation (TEST)o I/O instructions (IN, OUT)o String instructions (MOVS, LODS)o Program flow control instructions (JMP, CALL, RET, HLT)

The Instructions type in 8086

MUL (unsigned Multiplication)

o This MUL instruction used to multiply the unsigned number.o The Multiplication is manually can be done by repeated

addition.

Syntax : MUL operand

Operand may be reg/mem : 8/16

for 8bit (byte multiplication)

AX := AL*operand; AL is a silent operand

opcode : F6

for 16bits operands (byte multiplication)

AX :DX = AX*operand; AX is a silent operand

opcode : F7

cntd.....

The basic principle is,

for n-bit multiplication the result range must exceed the limit of n-bits. So, 2*n bits allotted to store the result.

Flags affected : CF ,OF

Operand Clock cycles Instruction size(bytes)

8-bit Reg 70 – 77 2

16-bit Reg 118 – 133 2

8-bit Mem (76 – 83) + EA 2-4

16-bit Mem (124 – 139) + EA 2-4

Instruction code format : 1111011w mod100r/m

Example …

MOV AL,100MOV BL,10SUB AH,AHMUL BL ;AXAL*BL AX 03 E8h(100010)

;opcode : F6 E3 ;11 100 011---------------------------------------------------------------------------MOV AX,2048MOV BX,90MUL BX ;CF & OF flags set to 1 ; 184320

; AL00 AHD0 DL02 DX 002^17=131072 AX=184320-131072=53248 (D0 00 h);opcode : F7 E3 ;11 100 011

IMUL (signed Multiplication)

o IMUL instruction used for the signed multiplication.o Syntax : IMUL operand

Operand may be reg/mem : 8/16

for 8bit (byte multiplication)

AX := AL*operand; AL is a silent operand

opcode : F6

for 16 bits (Word multiplication)

AX:DX = AX*operand ;AX is a silent operand

opcode : F7

cntd…..

Flags affected : CF ,OF

Operand Clock cycles Instruction size(bytes)

8-bit Reg 80-98 2

16-bit Reg 128 – 154 2

8-bit Mem (86 – 104) + EA 2-4

16-bit Mem (134 – 160) + EA 2-4

Instruction format : 1111011w mod101r/m

Example

MOV AL,-100MOV BL,10SUB AH,AHIMUL BL ;AXAL*BL AX F6 18h(-100010);MUL BL ; AX 06 18h(156010)

; Opcode : F6 EB ; 11 101 011--------------------------------------------------------------------------------B DB 23H,-03HMOV AX,00E2H ;-30MOV BX,OFFSET B MOV CL,[BX+1]IMUL BYTEPTR[BX+1] ;AX=AL*(-3); AX 5A ;(90)

;opcode : F6 6F 01 ;01 10 1 111

DIV (unsigned Division)

o DIV instruction performs the unsigned division.o The division may be done by repeated subtraction.

Syntax : DIV operand; Operand may be reg/mem : 8/16

for 8bit (byte Manipulation)

AL = AX / operand; AX is a silent operand

AH = remainder (modulus)

opcode : F6

cntd…..

for 16 bits (Word multiplication)

AX = (DX AX) / operand; AX:DX is a silent operand

DX = remainder (modulus)

opcode : F7

AX must contain the dividend, DX be should be cleared before DIV instruction.

Flags Affected : CF ,OF ,SF ,PF

But the affection of the flags don’t have any valid usage.

Operand Clock cycles Instruction size(bytes)

8-bit Reg 80 - 90 2

16-bit Reg 144 - 162 2

8-bit Mem (86 – 96) + EA 2-4

16-bit Mem (150 – 168) + EA 2-4

Instruction format : 1111011w mod110r/m

Example

MOV AL,100MOV BL,11SUB AH,AHDIV BL ;ALAX/BL AHAX%BL

;AL 09 h AH 01 h

---------------------------------------------------------------------B DB 03HMOV AX,00E2H ;-30DIV B

;opcode : F6 36 00 00 ; 00 110 110

IDIV (signed Division)

o IDIV instruction performs the signed division.o The sign of the remainder is always same as the sign of the

dividend

Syntax : IDIV operand; Operand may be reg/mem : 8/16

for 8bit (byte manipulation)

AL = AX / operand; AX is a silent operand

AH = remainder (modulus)

opcode : F6

cntd…..

for 16 bits (Word multiplication)

AX = (DX AX) / operand; AX:DX is a silent operand

DX = remainder (modulus)

opcode : F7

Flags Affected : CF ,OF ,SF ,PF

Operand Clock cycles Instruction size(bytes)

8-bit Reg 101 – 112 2

16-bit Reg 165 – 184 2

8-bit Mem (107 – 118) + EA 2-4

16-bit Mem (171 – 190) + EA 2-4

Instruction code format : 1111011w mod111r/m

Example

MOV BL,-10 ;DIVISORMOV AX,101 ;DIVIDENDIDIV BL ; AH01 ALF6(-1010)

;opcode : F6 FB ;11 111 011;DIV BL ; AH65 AL00------------------------------------------------------------------------------------B DB 23H,-03HMOV AX,00E2H ;-30IDIV B

;opcode : F6 3E 00 00 ;00 11 1 110

Some extension…

Addressing mode mode bits

Register Addressing mode 11

Direct/register indirect/Based Index/Relative Based index 00

Register relative 01

This is for MUL , IMUL, DIV, IDIV Instructions….

Can not use those….

Immediate data

As Far our studies in i8086

Register The last 3 bits (m/r)

Accumulator Register (AX) 000

Count Register (CX) 001

Data register (DX) 010

Base Register (BX) 011

Stack pointer (SP) 100

Base pointer (BP) 101

Source Index (SI) 110

Destination index (DI) 111

Bibliography

• http://www.arl.wustl.edu/%7Elockwood/class/cs306/books/artofasm/toc.html

• Intel 8086 Microprocessor Datasheet• Richard C.Detmer, “Essentials of 80x86 Assembly

Language”.• Yu-Cheng Liu, Glenn A. Gibson, “Microcomputer

Systems : The 8086/8088 Family”

Thank you…..!!!!!