UMBC L A N R Y D A B M A L F T U M B C I O M 1 - - PowerPoint PPT Presentation

umbc
SMART_READER_LITE
LIVE PREVIEW

UMBC L A N R Y D A B M A L F T U M B C I O M 1 - - PowerPoint PPT Presentation

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


slide-1
SLIDE 1

Systems Design & Programming 80x86 Assembly IV CMPE 310 1 (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 C O U N T Y 1 9 6 6

Intel Assembly

slide-2
SLIDE 2

Systems Design & Programming 80x86 Assembly IV CMPE 310 2 (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 C O U N T Y 1 9 6 6

Arithmetic Operations add al, [ARRAY + esi] ;Adds 1 to any reg/mem except seg inc byte [edi] ;Adds registers + Carry flag. adc ecx, ebx ;ecx=ecx+ebx, ebx=original ecx. xadd ecx, ebx ;Used for adding 64 bit nums.

slide-3
SLIDE 3

Systems Design & Programming 80x86 Assembly IV CMPE 310 3 (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 C O U N T Y 1 9 6 6

Arithmetic Operations sub eax, ebx dec edi ;Subs registers - Carry flag. sbb ecx, ebx ;eax=eax-ebx cmp al, 10H jae LABEL1 ;Jump if equal or below. jbe LABEL2 ;if ecx==eax, eax=edx else eax=ecx cmpxchg ecx, edx ;Jump if equal or above.

slide-4
SLIDE 4

Systems Design & Programming 80x86 Assembly IV 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 C O U N T Y 1 9 6 6

Arithmetic Operations mul bl imul bx ;Special, cx=dx*12H (signed only) imul cx, dx, 12H ;edx|eax=eax*ecx mul ecx ;ax=al*bl (unsigned) ;dx|ax=ax*bx (signed) div cl ;dx|ax=(dx|ax)/cx idiv cx ;ah|al=ax/cl, unsigned quotient ; in al, remainder in ah

slide-5
SLIDE 5

Systems Design & Programming 80x86 Assembly IV CMPE 310 5 (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 C O U N T Y 1 9 6 6

Logic Operations XXXX XXXX Operand 0000 1111 Mask 0000 XXXX Result and al, bl ;al=al AND bl XXXX XXXX Operand 0000 1111 Mask XXXX 1111 Result

  • r eax, 10

;eax=eax OR 0000000AH

slide-6
SLIDE 6

Systems Design & Programming 80x86 Assembly IV CMPE 310 6 (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 C O U N T Y 1 9 6 6

Logic Operations XXXX XXXX Operand 0000 1111 Mask XXXX XXXX Result xor ah, ch ;ah=ah XOR ch test al, 4 jz LABEL ;Jump to LABEL if bit 2 is zero. ;Tests bit 2 in al -- 00000100 not ebx neg TEMP

slide-7
SLIDE 7

Systems Design & Programming 80x86 Assembly IV CMPE 310 7 (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 C O U N T Y 1 9 6 6

Logic Operations shl eax, 1 sar esi, cl ;eax is logically shifted left 1 bit pos. ;esi is arithmetically shifted right shdr eax, ebx, 12 ;eax shifted right by 12 and filled ;from the left with the right shdl ax, bx, 14 ;12 bits of ebx. rol si, 14 rcr bl, cl ;si rotated left by 14 places. ;bl rotated right cl places through carry. shl ax, 1 ;Original 48-bit number in dx, bx and ax. ;Shift ax left 1 binary place. rcl bx, 1 ;Rotate carry bit from previous shl into ;low order bit of bx. rcl dx, 1 ;Rotate carry bit from previous rcl in dx.

slide-8
SLIDE 8

Systems Design & Programming 80x86 Assembly IV CMPE 310 8 (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 C O U N T Y 1 9 6 6

Bit/String Scan bsl ebx, eax bsr bl, cl ;eax scanned from the left. ;cl scanned from the right.

slide-9
SLIDE 9

Systems Design & Programming 80x86 Assembly IV CMPE 310 9 (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 C O U N T Y 1 9 6 6

jmp short NEXT NEXT: add ax, bx ;short keyword is optional. jmp near eax ;Jump to address given by eax. jmp [eax] ;Jump to address given by [ax]. jmp far LABEL ;Jump to address given by LABEL.

slide-10
SLIDE 10

Systems Design & Programming 80x86 Assembly IV CMPE 310 10 (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 C O U N T Y 1 9 6 6

Flow-of-Control Instructions ja ;Jump if above (Z=0 and C=0) ;Jump if below or equal (Z=1 or C=1) jbe ;Jump if >= (S=O) jge ;Jump if < (S<>O) jl ;Jump if != (Z=0) jne ;Jump if ==; or jump if zero (Z=1) je or jz ;Jump if carry set (C=1) jc ;Jump if cx==0 jcxz ;Jump if ecx==0 jecxz

slide-11
SLIDE 11

Systems Design & Programming 80x86 Assembly IV CMPE 310 11 (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 C O U N T Y 1 9 6 6

Flow-of-Control Instructions ;Set al=1 if >than (test Z==0 AND S==0) setg al ;else set al to 0 ;Jump if ecx != 0 loop LABEL ;Jump if (Z = 1 AND ecx != 0) loope ;Jump if (Z = 0 AND ecx != 0) loopne