80x86 Assembly III 1 Systems Design & Programming...80x86 Assembly III CMPE 310 4 (Mar. 1, 2002)...

13
Systems Design & Programming 80x86 Assembly III CMPE 310 1 (Mar. 1, 2002) UMBC U M B C UN IV E R S IT Y O F M A R Y L A N D B A L T I M O R E C O U N T Y 1 9 6 6

Transcript of 80x86 Assembly III 1 Systems Design & Programming...80x86 Assembly III CMPE 310 4 (Mar. 1, 2002)...

Page 1: 80x86 Assembly III 1 Systems Design & Programming...80x86 Assembly III CMPE 310 4 (Mar. 1, 2002) UMBC U M B C U N I V E R S I T Y O F M A R Y L A N D B A L T I M O R E OC U N T Y 1

Syst

ems

Des

ign

& P

rogr

amm

ing

80x8

6 A

ssem

bly

III

CM

PE 3

10

1(M

ar. 1

, 200

2)U

MB

CU

M B

C

UNIVERSITY OF M

AR

YL

AN

D B

ALTIM

ORE COUNTY

1 9

6 6

Page 2: 80x86 Assembly III 1 Systems Design & Programming...80x86 Assembly III CMPE 310 4 (Mar. 1, 2002) UMBC U M B C U N I V E R S I T Y O F M A R Y L A N D B A L T I M O R E OC U N T Y 1

Syst

ems

Des

ign

& P

rogr

amm

ing

80x8

6 A

ssem

bly

III

CM

PE 3

10

2(M

ar. 1

, 200

2)U

MB

CU

M B

C

UNIVERSITY OF M

AR

YL

AN

D B

ALTIM

ORE COUNTY

1 9

6 6

Stac

k In

stru

ctio

ns

Page 3: 80x86 Assembly III 1 Systems Design & Programming...80x86 Assembly III CMPE 310 4 (Mar. 1, 2002) UMBC U M B C U N I V E R S I T Y O F M A R Y L A N D B A L T I M O R E OC U N T Y 1

Syst

ems

Des

ign

& P

rogr

amm

ing

80x8

6 A

ssem

bly

III

CM

PE 3

10

3(M

ar. 1

, 200

2)U

MB

CU

M B

C

UNIVERSITY OF M

AR

YL

AN

D B

ALTIM

ORE COUNTY

1 9

6 6

Stac

k In

stru

ctio

ns

Stack Seg

push eax

0 7 F E

AHAL

esp = esp-4

is performed

before the

PUSH

000007FA

is

new value

0 0 1 0

+Seg

Base

Paging

Trans.

FFFF6AB3

6 A B 3

F F F F

0 0 0 0

Page 4: 80x86 Assembly III 1 Systems Design & Programming...80x86 Assembly III CMPE 310 4 (Mar. 1, 2002) UMBC U M B C U N I V E R S I T Y O F M A R Y L A N D B A L T I M O R E OC U N T Y 1

Syst

ems

Des

ign

& P

rogr

amm

ing

80x8

6 A

ssem

bly

III

CM

PE 3

10

4(M

ar. 1

, 200

2)U

MB

CU

M B

C

UNIVERSITY OF M

AR

YL

AN

D B

ALTIM

ORE COUNTY

1 9

6 6

Add

ress

Loa

ding

Ins

truc

tion

s

ldsedi, LIST

;Loads edi and ds.

leaeax,[ebx+ecx*4+100];Loads eax with computed address.

lfsesi, DATA1

;Loads esi and fs.

Page 5: 80x86 Assembly III 1 Systems Design & Programming...80x86 Assembly III CMPE 310 4 (Mar. 1, 2002) UMBC U M B C U N I V E R S I T Y O F M A R Y L A N D B A L T I M O R E OC U N T Y 1

Syst

ems

Des

ign

& P

rogr

amm

ing

80x8

6 A

ssem

bly

III

CM

PE 3

10

5(M

ar. 1

, 200

2)U

MB

CU

M B

C

UNIVERSITY OF M

AR

YL

AN

D B

ALTIM

ORE COUNTY

1 9

6 6

Add

ress

Loa

ding

Ins

truc

tion

s

mov

ebx, edi

;Move the contents of edi into ebx.

leaebx, [edi]

;Load the contents of edi into ebx.

movebx, [edi]

;Load the value at edi into ebx.

Page 6: 80x86 Assembly III 1 Systems Design & Programming...80x86 Assembly III CMPE 310 4 (Mar. 1, 2002) UMBC U M B C U N I V E R S I T Y O F M A R Y L A N D B A L T I M O R E OC U N T Y 1

Syst

ems

Des

ign

& P

rogr

amm

ing

80x8

6 A

ssem

bly

III

CM

PE 3

10

6(M

ar. 1

, 200

2)U

MB

CU

M B

C

UNIVERSITY OF M

AR

YL

AN

D B

ALTIM

ORE COUNTY

1 9

6 6

Stri

ng O

pera

tion

s

Page 7: 80x86 Assembly III 1 Systems Design & Programming...80x86 Assembly III CMPE 310 4 (Mar. 1, 2002) UMBC U M B C U N I V E R S I T Y O F M A R Y L A N D B A L T I M O R E OC U N T Y 1

Syst

ems

Des

ign

& P

rogr

amm

ing

80x8

6 A

ssem

bly

III

CM

PE 3

10

7(M

ar. 1

, 200

2)U

MB

CU

M B

C

UNIVERSITY OF M

AR

YL

AN

D B

ALTIM

ORE COUNTY

1 9

6 6

Stri

ng O

pera

tion

s

lodsb

;al=ds:[esi]; esi=esi+/-1

lodsd

;eax=ds:[esi]; esi=esi+/-4

es lodsb DATA1

;Override ds.

stosb

;es:[edi]=al; edi=edi+/-1

stosd

;es:[edi]=eax; edi=edi+/-4

Page 8: 80x86 Assembly III 1 Systems Design & Programming...80x86 Assembly III CMPE 310 4 (Mar. 1, 2002) UMBC U M B C U N I V E R S I T Y O F M A R Y L A N D B A L T I M O R E OC U N T Y 1

Syst

ems

Des

ign

& P

rogr

amm

ing

80x8

6 A

ssem

bly

III

CM

PE 3

10

8(M

ar. 1

, 200

2)U

MB

CU

M B

C

UNIVERSITY OF M

AR

YL

AN

D B

ALTIM

ORE COUNTY

1 9

6 6

Stri

ng O

pera

tion

s

lodsw

Data Seg

1 0 0 0

A032

A 0 3 2

+/-

2

0 0 1 0

+Seg

Base

Paging

Trans.

0 0 0 0

Page 9: 80x86 Assembly III 1 Systems Design & Programming...80x86 Assembly III CMPE 310 4 (Mar. 1, 2002) UMBC U M B C U N I V E R S I T Y O F M A R Y L A N D B A L T I M O R E OC U N T Y 1

Syst

ems

Des

ign

& P

rogr

amm

ing

80x8

6 A

ssem

bly

III

CM

PE 3

10

9(M

ar. 1

, 200

2)U

MB

CU

M B

C

UNIVERSITY OF M

AR

YL

AN

D B

ALTIM

ORE COUNTY

1 9

6 6

Stri

ng O

pera

tion

s

movedi, 0

;Offset 0.

movecx, 25*80

;Load count.

moveax, 0720H

;Load value to write.

rep stosw

movsb

;es:[edi]=ds:[esi]; edi+/-=1; esi+/-=1

movsd

;es:[edi]=ds:[esi]; edi+/-=4; esi+/-=4

Page 10: 80x86 Assembly III 1 Systems Design & Programming...80x86 Assembly III CMPE 310 4 (Mar. 1, 2002) UMBC U M B C U N I V E R S I T Y O F M A R Y L A N D B A L T I M O R E OC U N T Y 1

Syst

ems

Des

ign

& P

rogr

amm

ing

80x8

6 A

ssem

bly

III

CM

PE 3

10

10(M

ar. 1

, 200

2)U

MB

CU

M B

C

UNIVERSITY OF M

AR

YL

AN

D B

ALTIM

ORE COUNTY

1 9

6 6

Stri

ng O

pera

tion

s

inswW1, W2

;es:[edi]=[edx]; edi+/-=2; esi+/-=2

insb

;es:[edi]=[edx]; edi+/-=1

insd

;es:[edi]=[edx]; edi+/-=4

outsb

;[edx]=ds:[esi]; esi=esi+/-1

xchgedx,

esi

;Exchange edx and esi

Page 11: 80x86 Assembly III 1 Systems Design & Programming...80x86 Assembly III CMPE 310 4 (Mar. 1, 2002) UMBC U M B C U N I V E R S I T Y O F M A R Y L A N D B A L T I M O R E OC U N T Y 1

Syst

ems

Des

ign

& P

rogr

amm

ing

80x8

6 A

ssem

bly

III

CM

PE 3

10

11(M

ar. 1

, 200

2)U

MB

CU

M B

C

UNIVERSITY OF M

AR

YL

AN

D B

ALTIM

ORE COUNTY

1 9

6 6

in

al, p8

;8-bits are saved to al from I/O port p8.

outdx,

eax

;32-bits are written to port dx from eax.

inal, 61H

oral, 3

;Read port 61H (speaker).

;Set rightmost two bits.

out 61H,al

loop L1

;Time delay.

in

al, 61H

;Read port 61H.

andal, 0FCH

;Clear rightmost two bits.

out61H,

al

;Speaker off.

;Turn on the speaker.

movcx, 1000H

;Delay count.

L1:

Page 12: 80x86 Assembly III 1 Systems Design & Programming...80x86 Assembly III CMPE 310 4 (Mar. 1, 2002) UMBC U M B C U N I V E R S I T Y O F M A R Y L A N D B A L T I M O R E OC U N T Y 1

Syst

ems

Des

ign

& P

rogr

amm

ing

80x8

6 A

ssem

bly

III

CM

PE 3

10

12(M

ar. 1

, 200

2)U

MB

CU

M B

C

UNIVERSITY OF M

AR

YL

AN

D B

ALTIM

ORE COUNTY

1 9

6 6

movsx

cx,

bl

;Sign-extends bl into cx

movzxeax, DATA2

;Zero extends word at DATA2 in eax.

bswapeax

2 2 3 3

0 0 1 1

1 1 0 0

3 3 2 2

cmovz

eax,

ebx;Move if Zero flag is set else do nothing.

Page 13: 80x86 Assembly III 1 Systems Design & Programming...80x86 Assembly III CMPE 310 4 (Mar. 1, 2002) UMBC U M B C U N I V E R S I T Y O F M A R Y L A N D B A L T I M O R E OC U N T Y 1

Syst

ems

Des

ign

& P

rogr

amm

ing

80x8

6 A

ssem

bly

III

CM

PE 3

10

13(M

ar. 1

, 200

2)U

MB

CU

M B

C

UNIVERSITY OF M

AR

YL

AN

D B

ALTIM

ORE COUNTY

1 9

6 6

es outsb

es cmpsb

section .data

;Define a data segment.

section .text

;Define a code segment.

callprocedure_name

;Call the procedure

pushargs...

;Push the arguments on stack.

addesp, #

;Restore the stack pointer.