Assembly for x86
Download
1 / 19

Assembly For X86 - PowerPoint PPT Presentation


  • 124 Views
  • Uploaded on

Assembly For X86. Chapter 3 פקודות בסיסיות. סוגי פקודות. פקודות להעברת מידע פקודות אריטמטיות פקודות לוגיות פקודות הסתעפות פקודות מחרוזת פקודות בקרה פקודות ל- Protected Mode. מבנה הפקודות. פקודה. אופרנד ,אופרנד. MOV AX , 56 ADD [SI] , DL CMP CX , BX. יעד. מקור.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Assembly For X86' - ziv


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Assembly for x86

Assembly For X86

Chapter 3

פקודות בסיסיות


סוגי פקודות

  • פקודות להעברת מידע

  • פקודות אריטמטיות

  • פקודות לוגיות

  • פקודות הסתעפות

  • פקודות מחרוזת

  • פקודות בקרה

  • פקודות ל- Protected Mode


מבנה הפקודות

פקודה

אופרנד ,אופרנד

MOV AX , 56

ADD [SI] , DL

CMP CX , BX

יעד

מקור

; כתיבת הערות


MOV

MOV DX,3456H

MOV AL,32H

MOV AX,11110000B

MOV AH,DL

MOV [BX+1],DL

MOV BX,1000H

MOV AL,88

MOV [BX],AL

MOV SI,819H

MOV DH,[SI]


שגיאות נפוצות

MOV [300],6

MOV [AX],DL

MOV [BX],BL

MOV [BX],[DI]

MOV [BX+AX],DL

MOV [SI+DI],BH ;[BX+SI] / [BX+DI]

MOV [SI],47H


תוכנית להחלפת שני נתונים בזיכרון

CODE SEGMENT

ASSUME CS:CODE,DS:CODE

START: MOV SI,700H

MOV DI,800H

MOV AL,[SI]

MOV AH,[DI]

MOV [SI],AH

MOV [DI],AL

CODE ENDS

END START


INC הפקודה

INC DL ;DL=DL+1

INC SI ;SI=SI+1

INC [SI] ;ERROR

DEC הפקודה

DEC DL ;DL=DL-1

DEC SI ;SI=SI-1

DEC [SI] ;ERROR


ADD

ADD CH,5 ;CH=CH+5

ADD DI,67

ADD BX,AX

ADD DL,DL

ADD AL,[BX]

ADD [DI],CL

ADD [BX],4 ;ERROR

ADD [SI],[DI]

ADD CX,DH ;ERROR 8/16 BIT

ADD AL,590H ;OVERFLOW


SUB

SUB AL,7

SUB [BX],DL

SUB DL,DH

CMP

CMP AL,7 ;AL - 7

CMP BX,CX

CMP [SI],CL

CMP [SI],[DI] ;ERROR

CMP [BX],4

CMP AL,BX ;8/16 BIT


JMP

MOV AL,3

MOV BL,88

JMP lbl

MOV DX,22 ; שורה זו לא מתבצעת

lbl: MOV DX,11

עבור התווית מותר להשתמש האותיות ספרות או התווים הבאים

$ , @ , _ , ? , .

אסור להכניס רווחים או להשתמש במילים שמורות

אסור להתחיל בספרה או בנקודה


Conditional jump
CONDITIONAL JUMP

JE - JUMP IF EQUAL

JNE - JUMP IF NOT EQUAL

JG - JUMP IF GREATER

JL - JUMP IF LESS

JGE - JUMP IF GREATER OR EQUAL

JLE - JUMP IF LESS OR EQUAL

JZ - JUMP IF ZERO

JNZ - JUMP IF NOT ZERO

JC - JUMP IF CARRY

JO - JUMP IF OVERFLOW

JP - JUMP IF PARITY


דוגמאות

CMP AL,DL

JG BYE

MOV AL,0

MOV DL,0

BYE: NOP

MOV SI,449H

MOV DL,[SI]

CMP DL,3

JNE SOF

MOV SI,800H

MOV AL,0FFH ; חייבים אפס מוביל

MOV [SI],AL

SOF: NOP


מה מבצעת התוכנית

MOV SI,500H

MOV DI,550H

MOV AL,[SI]

MOV DL,[DI]

CMP AL,DL

JZ SOF

MOV [SI],DL

MOV [DI],AL

SOF: NOP

משווה בין תאי הזיכרון 550,500 ואם הם שונים ערכיהם מוחלפים


לולאות

SEG SEGMENT

ASSUME CS:SEG,DS:SEG

BEGIN: MOV AX,SEG

MOV DS,AX

MOV AL,8 ;THE VALUE

MOV BX,400H ;THE ADDRESS

MOV CX,21H ;COUNTER

AGAIN: MOV [BX],AL

INC BX

DEC CX ;LOOP AGAIN

JNZ AGAIN ;

SEG ENDS

END BEGIN


דוגמאות

נתון מערך תווים בכתובות 140-180 יש לבדוק את מספר המופעים של האות A

CODE SEGMENT

ASSUME CS:CODE,DS:CODE

START: MOV AX,CODE

MOV DS,AX

MOV AL,0 ;THE RESULT

MOV BX,140H

MOV CX,41H

CHECK: MOV AH,[BX]

CMP AH,11H

JNE CONT

INC AL

CONT: INC BX

LOOP CHECK

CODE ENDS

END START


בדיקת מיון של בלוק נתונים

CODE SEGMENT

ASSUME CS:CODE,DS:CODE

START: MOV AX,CODE

MOV DS,AX

MOV SI,800H ;STARTING ADDRESS

MOV CX,9H ;SIZE OF ARRAY = 10

CHECK: MOV DL,[SI]

CMP DL,[SI+1]

JNL BAD

INC SI

LOOP CHECK

JMP GOOD

BAD: MOV AX,0 ;FUNCTION RETURN 0

JMP SIUM

GOOD: MOV AX,0FFH

SIUM: NOP

CODE ENDS

END START


סיכום תאי מערך

CODE SEGMENT

ASSUME CS:CODE,DS:CODE

START: MOV AX,CODE

MOV DS,AX

MOV SI,1000H ;START

MOV CX,5 ;SIZE OF ARRAY

MOV AL,0

CONT: ADD AL,[SI]

INC SI

LOOP CONT

MOV SI,1200H ;RESULT ADDRESS

MOV [SI],AL

CODE ENDS

END START


מבנה תוכנית

DATA1 segment

….

DATA1 ends

ST segment stack

ST ends

CODE1 segment

ASSUME cs:CODE1, ds:DATA1, ss:ST

Start: mov AX,DATA1

mov DS,AX

….. גוף התוכנית

….

CODE1 ENDS

END Start


גישה עדיפה

.model small

.stack 100h

.data

disp db 'hello world',13,10,'$'

.code

begin:

mov ax,@data

mov ds,ax

….גוף התוכנית

end begin


ad