Presentation is loading. Please wait.

Presentation is loading. Please wait.

زبان ماشین و اسمبلی – درس ششم

Similar presentations


Presentation on theme: "زبان ماشین و اسمبلی – درس ششم"— Presentation transcript:

1 زبان ماشین و اسمبلی – درس ششم
شروع برنامه نویسی دانشگاه آزاد اسلامی واحد نیک شهر سعید آشیان

2 شروع برنامه سازی سه بخش اصلی هر برنامه stack Data Stack Code data code
2

3 data program Stacksg segment stack ‘stack’ Dw 32h dup(0) Stackseg ends
Datasg segment ‘data’ Datasg ends data Codesg segment ‘code’ Assume ss:stacksg,ds:datasg , cs:codesg Main proc far Mov ax,datasg Mov ds,ax Mov ax,4c00h Int 21h Main endp Codesg ends End main start program 3

4 Stacksg segment stack ‘stack’ Dw 32h dup(0) Stackseg ends
Datasg segment ‘data’ X db 10h Y dw 1234h Datasg ends Codesg segment ‘code’ Assume ss:stacksg,ds:datasg , cs:codesg Main proc far Mov ax,datasg Mov ds,ax ; Mov ax,x Mov bx,y Add ax,bx Mov x,ax ; Mov ax,4c00h Int 21h Main endp Codesg ends End main 4

5 تعریف انواع داده (DATA TYPE)
VARNAME D VALUE(S) نام متغیر D مقدار (ها) X1 DB 1B 2B X2 DW 4B X3 DD 8B X4 DQ 10B X5 DT 5

6 تعریف متغیر از نوع بایت X1 DB 0 X8 DB 10 DUP(100) X2 DB ?
X3 DB H X DB ‘ABCDEDFG’ X2 DB ,20,’A’,15,’COMPUTER’ X4 DB 0AFH X5 DB B X6 DB 15,100,200 X7 DB ‘A’,’B’,’C’,’D’ 6

7 تعریف متغیر از نوع WORD X1 DW 0 X8 DW 10 DUP(100) X2 DW ?
X3 DW H X DW ‘AB’ X2 DW ,20,’AC’,15 X4 DW 0A12FH X5 DW B X6 DW 15,100,200 X7 DW ‘A’,’B’,’C’,’D’ 7

8 نحوه قرار گیری داده ها در حافظه
1000 1001 c5 1002 4f 1003 1004 …. 4F C5 WORD 8

9 تعریف متغیر از نوع DOUBLE ، QUAD ، TEN BYTE
مشابه با DW فضای اشغال شده بیشتر نحوه قرار گیری در حافظه مشابه WORD مثال : X1 DD 43FAC254H 54 200 c2 201 fa 202 43 43 FA C2 54 9

10 Datasg segment ‘data’ a db B dw 1000 C dd ? D dq dup (?) Y dt 1234h
Stacksg segment stack ‘stack’ Dw 32h dup(0) Stackseg ends Datasg segment ‘data’ a db B dw C dd ? D dq dup (?) Y dt h Datasg ends Codesg segment ‘code’ Assume ss:stacksg,ds:datasg , cs:codesg Main proc far Mov ax,datasg Mov ds,ax ; ; Mov ax,4c00h Int 21h Main endp Codesg ends End main 10

11 دستورات محاسباتی جمع جمع به کمک بیت نقلی تفریق تفریق با بیت قرضی
گسترش بایت به کلمه گسترش کلمه به LONG ضرب تقسیم منفی کردن کاهش افزایش جمع BCD تفریق BCD ... 11

12 جمع (ADD) PF ADD DEST,SRC OF CF DEST←DEST+SRC SF ZF AF 12

13 جمع (ADD) ADD AX, BX AX ← AX+ BX ADD AX, M AX ← AX+ M M ← M+ AX
CORRECT M ← M+ AX ADD M,AX ADD CX,0FC25H CX ← CX+ 0FC25H ADD M,N ERROR ADD AL,CX 13

14 جمع با بیت نقلی (ADC) PF ADC DEST,SRC OF CF DEST←DEST+SRC+ CF SF ZF AF
14

15 تفریق (SUB) PF SUB DEST,SRC OF CF DEST←DEST-SRC SF ZF AF 15

16 تفریق به کمک بیت قرضی (SBB)
PF SBB DEST,SRC OF CF DEST←DEST-(SRC+CF) SF ZF AF 16

17 گسترش BYTE به WORD بیت علامت x x x x x x x x x x x x x x 17

18 گسترش byte به word بیت علامت 1 x x x x x x x 1 1 1 1 1 1 1 1 1 x x x x
18

19 دستورات گسترش داده CBW Convert Byte to Word CWD Convert Word to Byte
19

20 ضرب ( MUL) BYTE * BYTE WORD MUL BYTE * WORD DOUBLE WORD * WORD DOUBLE
20

21 MUL BYTE * BYTE WORD MUL OPERAND AX ← OPERAND * AL 21

22 در ضرب بایت در بایت همیشه یکی از اپرند ها AL است
مثال MOV AL,100 MOV BL,200 MUL BL AX=200*100=20000 MOV AL,100 MUL 55 AX=55*100=5500 در ضرب بایت در بایت همیشه یکی از اپرند ها AL است 22

23 MUL WORD * WORD DOUBLE MUL OPERAND AX DX ← OPERAND * AX 23

24 مثال MOV AX,1000 MOV CX,5000 MUL CX (AX,DX) ← AX * CX DX AX 4C 4B40 24

25 MUL MOV AL,100 MOV AX,0064H CBW MUL BX MUL BX WORD * BYTE WORD * WORD
DOUBLE CBW MOV AL,100 CBW MUL BX MOV AX,0064H MUL BX (DX,AX)←AX*BX 25

26 ضرب ضرب اعداد بی علامت (UNSIGNED) ضرب علامتدار (SIGNED) MUL IMUL
همیشه یکی از اپراند ها در AL یا AX قرار دارد ضرب اعداد بی علامت (UNSIGNED) ضرب علامتدار (SIGNED) MUL IMUL نتیجه محاسبات در AX یا در (DX,AX) قرار می گیرد 26

27 تقسیم DIVISION WORD ÷ BYTE AX ÷ byte DIV DOUBLE ÷ WORD (DX AX) ÷ word
27

28 DIV DIV OPERAND8 DIV OPERAND16 AX OPERAND8 DX,AX OPERAND16 AL AX AH DX
28

29 عملوند تقسیم نمی تواند عدد باشد
مثال MOV AX,102 MOV CL,5 DIV CL AL = AX / CL=20 AH= AX % CL = 2 (DX,AX)= H AX= (DX,AX) / BX DX=(DX,AX) % BX MOV DX,4040H MOV AX,1200H MOV BX,500H DIV BX MOV AX, 1000 DIV 120 عملوند تقسیم نمی تواند عدد باشد ERROR 29

30 تمرین برنامه ای بنویسید که مبلغ را به سکه های 1و5و10و25 تومانی خرد کند . 30

31 Stacksg segment stack ‘stack’ Dw 100h dup(0) Stackseg ends
Datasg segment ‘data’ X dw 25575 c25 db ? c10 db ? c5 db ? c1 db ? Datasg ends 31

32 Assume ss:stacksg,ds:datasg , cs:codesg Main proc far Mov ax,datasg
Codesg segment ‘code’ Assume ss:stacksg,ds:datasg , cs:codesg Main proc far Mov ax,datasg Mov ds,ax ; mov cl,25 Mov ax ,x Div cl Mov c25,al mov cl,10 Mov al ,ah Cbw Mov c10,al 32

33 ;------------------------------------------ Mov ax,4c00h Int 21h
Mov cl,5 Mov al,ah Cbw Div cl Mov c5,al Mov c1,ah ; Mov ax,4c00h Int 21h Main endp Codesg ends End main 33

34 تکلیف برنامه ای بنویسید که نمرات 5 درس را از حافظه خوانده و معدل آن را محاسبه نماید برنامه ای بنویسید که یک درجه حرارت را از سلسیوس به فارنهایت تبدیل نماید برنامه ای بنویسید که روز ماه و سال تولد و تاریخ روز را از حافظه خوانده و تعداد روزهای زندگی را محاسبه نماید برنامه ای بنویسید که تاریخ روز را خوانده و تعیین کند که امروز چند شنبه است برنامه ای بنویسید که تاریخ شمسی را به میلادی تبدیل نماید (؟؟؟) 34

35 تقسیم علامتدار بی علامت idiv div
همواره عملوند اول تقسیم در (DX,AX) یا AX قرار دارد idiv div خارج قسمت در AL یا AX قرار می گیرد و باقیمانده در AHیا DX قرار میگیرد 35

36 افزایش INCREAMENT INC OPERAND INC MEM INC X مثال INC REG8 INC AL
INC CX INC REG32 INC EBX OF SF ZF AF PF CF 36

37 کاهش DECREAMENT DEC OPERAND DEC MEM DEC X مثال DEC REG8 DEC AL
DEC CX DEC REG32 DEC EBX OF SF ZF AF PF CF 37

38 قرینه کردن معادل با مکمل دو عدد است
قرینه کردنNEGATIVE NEG REG8 NEG CL NEG OPERAND مثال NEG REG16 NEG AX NEG REG32 NEG EBX NEG MEM NEG X قرینه کردن معادل با مکمل دو عدد است OF SF ZF AF PF CF 38

39 مثال برنامه ای بنویسید که بدون استفاده از دستورالعمل ضرب دو متغیر X و Y را در هم ضرب کرده حاصل را در Z ذخیره نماید . X و Y هشت بیتی و Z شانزده بیتی است . Int x=10,y=5,sum=0; For (i=x; i>0;i--) Sum+=y; 39

40 Stacksg segment stack ‘stack’ Dw 320h dup(0) Stackseg ends
Datasg segment ‘data’ X db 10 Y db 5 Z dw 0 Datasg ends 40

41 Mov al,y Mov cx, x Loop for Codesg segment ‘code’
Assume ss:stacksg,ds:datasg , cs:codesg Main proc far Mov ax,datasg Mov ds,ax ; Mov al,0 Mov al,y Mov cx, x For : Add z, ax Loop for Mov ax,4c00h Int 21h Main endp Codesg ends End main 41

42 پایان 42


Download ppt "زبان ماشین و اسمبلی – درس ششم"

Similar presentations


Ads by Google