Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 37

MNEMONIC SEGMENT FOR SYMBOLIC DESCRIPTION

MEMORY ACCESS REPRESENTATION

MOV AX,BX

MOV AH,BL

MOV AX,[1000]

MOV AL,[1002]

MOV [1000],BX
MNEMONIC SEGMENT FOR SYMBOLIC DESCRIPTION
MEMORY ACCESS REPRESENTATION

MOV AX,BX Within the CPU

MOV AH,BL Within the CPU

MOV AX,[1000] Data

MOV AL,[1002] Data

MOV [1000],BX Data


MNEMONIC SEGMENT FOR SYMBOLIC DESCRIPTION
MEMORY ACCESS REPRESENTATION

MOV AX,BX Within the CPU REGISTER TO


REGISTER

MOV AH,BL Within the CPU REGISTER TO


REGISTER

MOV AX,[1000] Data MEMORY TO


REGISTER

MOV AL,[1002] Data MEMORY TO


REGISTER

MOV [1000],BX Data REGISTER TO


MEMORY
MNEMONIC SEGMENT FOR SYMBOLIC DESCRIPTION
MEMORY ACCESS REPRESENTATION

MOV AX,BX Within the CPU Ax<=BX REGISTER TO


REGISTER

MOV AH,BL Within the CPU AH<=BL REGISTER TO


REGISTER

MOV AX,[1000] Data AL <=[1000] MEMORY TO


AH<=[1001] REGISTER

MOV AL,[1002] Data AL<=[1002] MEMORY TO


REGISTER

MOV [1000],BX Data BL=>[1000] REGISTER TO


BH=>[1001] MEMORY
MNEMONIC SEGMENT FOR SYMBOLIC DESCRIPTION
MEMORY ACCESS REPRESENTATION

MOV [1002],BL

MOV [1000],1234

MOV [1002],34

MOV AL,10

MOV AX,1000
MNEMONIC SEGMENT FOR SYMBOLIC DESCRIPTION
MEMORY ACCESS REPRESENTATION

MOV [1002],BL Data

MOV [1000],1234 Data

MOV [1002],34 Data

MOV AL,10 Code

MOV AX,1000 Code


MNEMONIC SEGMENT FOR SYMBOLIC DESCRIPTION
MEMORY ACCESS REPRESENTATION

MOV [1002],BL Data REGISTER TO


MEMORY

MOV [1000],1234 Data IMM. DATA TO


MEMORY

MOV [1002],34 Data IMM. DATA TO


MEMORY

MOV AL,10 Code IMM.DATA TO


REGISTER

MOV AX,1000 Code IMM.DATA TO


REGISTER
MNEMONIC SEGMENT FOR SYMBOLIC DESCRIPTION
MEMORY ACCESS REPRESENTATION

MOV [1002],BL Data BL=>[1002] REGISTER TO


MEMORY

MOV [1000],1234 Data 12=>[1000] IMM. DATA TO


34=>[1001] MEMORY

MOV [1002],34 Data 34=>[1002] IMM. DATA TO


MEMORY

MOV AL,10 Code 10=>AL IMM.DATA TO


REGISTER

MOV AX,1000 Code 00 =>AL IMM.DATA TO


10 => AH REGISTER
MNEMONIC SEGMENT FOR SYMBOLIC DESCRIPTION
MEMORY ACCESS REPRESENTATION

MOV DS,AX

MOV DX,ES

MOV ES,[1000]

MOV [1000],DS
MNEMONIC SEGMENT FOR SYMBOLIC DESCRIPTION
MEMORY ACCESS REPRESENTATION

MOV DS,AX Within the CPU

MOV DX,ES Within the CPU

MOV ES,[1000] Data

MOV [1000],DS Data


MNEMONIC SEGMENT FOR SYMBOLIC DESCRIPTION
MEMORY ACCESS REPRESENTATION

MOV DS,AX Within the CPU GENERAL REGISTER


TO SEGMENT
REGISTER
MOV DX,ES Within the CPU SEGMENT REGISTER
TO GENERAL
REGISTER
MOV ES,[1000] Data MEMORY TO
SEGMENT REGISTER

MOV [1000],DS Data SEGMENT REGISTER


TO MEMORY
MNEMONIC SEGMENT FOR SYMBOLIC DESCRIPTION
MEMORY ACCESS REPRESENTATION

MOV DS,AX Within the CPU AX=>DS GENERAL REGISTER


TO SEGMENT
REGISTER
MOV DX,ES Within the CPU ES=>DX SEGMENT REGISTER
TO GENERAL
REGISTER
MOV ES,[1000] Data {[1001][1000]}=>ES MEMORY TO
SEGMENT REGISTER

MOV [1000],DS Data {[1001][1000]}<= DS SEGMENT REGISTER


TO MEMORY
MNEMONIC SEGMENT FOR SYMBOLIC
MEMORY ACCESS REPRESENTATION

XCHG AX,BX WITHIN THE CPU AX BX

XCHG AL,BH WITHIN THE CPU AL BH

XCHG [SI],DX DATA [SI] DL


[SI+1]  DH

LAHF WITHIN THE CPU FLAGL => AH

SAHF WITHIN THE CPU FLAGL<=AH


LAHF
AND AH, 01

If the result is zero means carry flag = 0


If the result is non – zero means carry flag = 1
LAHF
PUSH AX

PUSH PSW OF 8085


MNEMONIC SEGMENT FOR SYMBOLIC
MEMORY ACCESS REPRESENTATION

IN AL,26 NA AL<= PORT 26

IN AX,26 NA AL<= PORT 26


AH<= PORT 27

IN AL,DX NA AL <= PORT DX

IN AX,DX NA AL <= PORT DX


AH <=PORT DX+1
MNEMONIC SEGMENT FOR SYMBOLIC
MEMORY ACCESS REPRESENTATION

OUT 26,AL NA AL=> PORT 26

OUT 26,AX NA AL= >PORT 26


AH=> PORT 27

OUT DX,AL NA AL => PORT DX

OUT DX,AX NA AL =>PORT DX


AH =>PORT DX+1
Write the 8086 program required to output the
word in BX to I/o PORTS 8004H AND 8005H

MOV DX, 8004


MOV AX,BX
OUT DX,AX
MNEMONIC SEGMENT FOR SYMBOLIC
MEMORY ACCESS REPRESENTATION

XLAT DATA AL <=[BX+AL]

MOV BX, 1000


MOV AL,05
XLAT
CODE CONVERSION

Contents Memory
(ASCII)

41h At the
MOV BX,1000
offset of MOV AL, EBCDIC CODE(C1H)
C1 h
XLAT
. .
. .
. .

Start of
the table,
BX
Initializing pointers
MOV BX,1000
MEMWDS(this is a label and it can be anyword)
is assumed to point at the word beginning at
location 1000h in the data segment
MOV BX, MEMWDS
BL <= [1000]
BH <=[1001]
LEA BX, MEMWDS
BX<= 1000
MNEMONIC SEGMENT FOR SYMBOLIC REPRESENTATION
MEMORY ACCESS

LEA BX, MEMWDS DATA BX <= 1000

LDS BX,DWORDPTR[SI] DATA BL<=[SI], BH<=[SI+1]


DS<=[SI+3,SI+2]

LES BX,DWORDPTR[SI] DATA BL<=[SI], BH<=[SI+1]


ES<=[SI+3,SI+2]
LEA SI, MEMWDS
LDS BX, DWORDPTR[SI]
MOV AL, [BX]
MEMORY LOCATION CONTENTS
1003 E0
1002 00
1001 80
1000(LABELLED AS MEMWDS) 10

BX = 8010
DS = E000
AL = [E8010]
MOV AX,5000 H MEMORY CONTENT MEMORY CONTENT
SOURCE DEST
MOV DS,AX
52500 42 62500 98
MOV SI,2500H
MOV AX,6000H 52501 45 62501 34
MOV ES,AX
52502 34 62502 34
MOV DI,2500H
CLD 52503 23 62503 23
MOV CX,0004H
REPNE CMPSB DS:[SI] - ES:[DI] and increment DI
and SI (REPNE)
HLT
(CX=0004h) (DS=5000h)(SI=2500h)(DI=2500h)
(ES=6000h)
• 1st time REPNE CMPSB
DS:[SI] - ES:[DI] i.e. [52500]-[62500] i.e. 42-98(NE)
SI =2501 and DI = 2501
CX=0003h(this is cos of REP prefix)
• 2ND time REP CMPSB
DS:[SI] - ES:[DI] i.e. [52501]-[62501] i.e. 45-34(NE)
SI =2502 and DI = 2502
CX=0002h(this is cos of REP prefix)
• 3rd Time REPNE CMPSB
DS:[SI] - ES:[DI] i.e. [52502]-[62502] i.e. 34-34(E)
SI =2503 and DI = 2503
CX=0001h(this is cos of REP prefix)
• 4TH Time REPNE CMPSB will not happen cos locations are no
longer NE
STOSB AL=>ES:[DI]
After string opr, if DF = 0, then DI is Incremented by 1
and viceversa

STOSW
AX=>ES:[DI]
TO BE SPECIFIC
AL=>ES:[DI]
AH=>ES:[DI+1]
IF DF = 0, then DI is incremented by ??
2
If DF = 1, then DI is decremented by 2
BYTE WISE STRING INSTRUCTION WORD WISE STRING INSTRUCTION

STOSB STOSW

LODSB LODSW

MOVSB MOVSW

SCASB SCASW

CMPSB CMPSW
REP
String instructions can handle at a time one byte or one word, but to
handle large block of data, REP prefix is used with CX as a counter

Types
REP
dec CX by 1 and repeat that string
instruction if CX is non zero. Otherwise control continues sequentially

REPNE/REPNZ
dec CX by 1 and repeat that string instruction if CX is non zero AND if that string inst.
Produced non – zero result. Otherwise control continues sequentially

REPE/REPZ
dec CX by 1 and repeat that string instruction if CX is non zero AND if that string inst.
Produced zero result. Otherwise control continues sequentially
LOOP
It is used to execute series of instructions for a given number of times and that
number of times is stored in CX
Types
LOOP AGAIN
dec CX by 1 and transfer control to the instruction having label AGAIN if CX is non zero.
Otherwise control continues sequentially

LOOPNE/LOOPNZ
dec CX by 1 and transfer control to the instruction having label AGAIN if CX is non zero
AND if previous instruction produced non zero result. Otherwise control continues
sequentially

LOOPE/LOOPZ
dec CX by 1 and transfer control to the instruction having label AGAIN if CX is non zero
AND if previous instruction produced zero result. Otherwise control continues
sequentially
8086 sample programs
When both the numbers are positive
(+03)h x (+02)h = (+06)h
MOV AL,03H
MOV BL,02H
IMUL BL / MUL BL
Result: (+0006)h => AX
8086 sample programs
When both the numbers are not positive
(+03)h x (-02)h = (-06)h
2’s complement of 02
= 1’s complement of 00000010 + 1
=11111110 = FEh
MOV AL,03H
MOV BL,FEH
IMUL BL
Result: (FFFA)h => AX
(FFFA)h is actually –(0006)h
BUT IF MUL BL WAS USED IT WUD GIVE RESULT AS 02FA
8086 sample programs
(+09)h / (-02)h
MOV AX,0009H
MOV BL,FEH
IDIV BL
Result: (01FC)h => AX
01 =>AH is the remainder
FC =>AL is the quotient (-04)h
8086 sample programs
(-09)h / (+02)h
MOV AX,FFF7H
MOV BL,02H
IDIV BL
Result: (FFFC)h => AX
FF =>AH is the remainder (-01)h
FC =>AL is the quotient (-04)h
-1234/0002
1234 = 0001001000110100
1’s complement of 1234 = 1110110111001011
2’s complement of 1234 = 1110110111001100 = EDCC
MOV AX, EDCC
MOV BX,0002 CWD COPIES THE SIGN BIT OF A WORD
IDIV BX (DXAX/BX) IN AX TO ALL THE BITS IN DX
HENCE
MOV AX,EDCC
CWD (DX = FFFF, AX=EDCC)
MOV BX,0002
IDIV BX (DXAX/BX)
1 0 0 0 1 0 D W

MOD MOD REG REG REG R/M R/M R/M

LOW DISPLACEMENT OR LOWER ORDER ADDRESS

HIGH DISPLACEMENT OR HIGHER ORDER ADDRESS


W=0 W=1 CODE
AL AX 000
BL BX 011
D defines the direction
CL CX 001
to / from the register
DL DX 010 D=0 mean from
AH SP 100 D=1 means to
BH DI 111
CH BP 101
BH SI 110
09 = 00001001
1’s complement of 09 = 11110110
2’s complement of 09 = 11110111 = F7
MOV AL, F7H
MOV BL,02
CBW COPIES THE SIGN BIT OF A BYTE
IDIV BL (AX/BL) IN AL TO ALL THE BITS IN AH
Hence
MOV AL,F7
CBW (AH = FF, AL=F7)
MOV BL,02
IDIV BL
MOV SP,BX
1000101111100011
MOV CL,[BX]
1000101000001111
MOV [SI+43],DH
1000100001110100 01000011
MOV CX,[437A]
1000101100001110
0111101001000011

You might also like