bım404 sistem programlama ch5 cevirici yonergeleri

23
BIM404 Sistem Programlama ÇEVİRİCİ YÖNERGELERİ Yrd. Doç. Dr. Abdullah Sönmez

Upload: burakizu

Post on 17-Nov-2015

232 views

Category:

Documents


0 download

DESCRIPTION

asm

TRANSCRIPT

  • BIM404

    Sistem ProgramlamaEVRC YNERGELER

    Yrd. Do. Dr. Abdullah Snmez

  • 8086/8088 evirici Ynergeleri

    Sistem Programlama 2

    Kelime Fonksiyon FunctionALIGN Balangc ift adrese hizala starts at an even memory addressASSUME Segmentlerin nerede olduunu gsterir indicates where the segments are locatedAT Segmenti bellekte saklar stores the segment in the memoryBYTE lenenin sekizli olarak ele alnmasn salar acts as a byte operandDB Sekizliyi tanmlar (8 bit) defines a byte (8 bit)DD ift kelime tanmlar (32 bit) defines a double word (32 bits)DQ Drtl kelime tanmlar (64 bit) defines quad word (64 bits)DT 10 byte tanmlar (80 bit) defines 10 bytes (80 bits)DUP Sonra gelen karakteri oaltr duplicates the following characterDW Kelime tanmlar (16 bit) defines word (16 bits)END Listenin sonunu gsterir indicates end of listingENDP Prosedrn sonunu gsterir indicates end of procedureENDS Segmentin sonunu gsterir indicates end of segmentEQU Eitler equatesFAR Uzak bellek iaretisi olarak ele alnmasn salar (Segmentler-aras) acts as far memory pointer (inter-segment)NEAR Yakn bellek iaretisi olarak ele alnmasn salar (Segment-ii) acts as near memory pointer (intra-segment)OFFSET Greli adresi belirtir specifies the offset addressORG Segment iindeki balangc ayarlar sets origin within segmentPROC Prosedr balangcn tanmlar defines beginning of procedurePTR Bellek iaretisi olarak ele alnmasn salar acts as memory pointerSEGMENT Bir segmentin balangcn belirler designates start of a segmentSTACK Yn segmenti olduunu gsterir indicates stack segment

  • rnek

    Sistem Programlama 3

    DB, DW, DD ynergelerini kullanma :

    BIRINCI_VERI DB 1,2,3 ; 8 bit * 3:Degerleri 1,2, ve 3 olacak ekilde 3 sekizli tanmlandDB 45 H ; 8 bit: 45 hexDB 'A' ; 8 bit: ASCII ADB 11110000B ; 8 bit: ikili 111 10000DW 12,13 ; 16 bit * 2 : Degerleri 12 ve 13 olan 2 kelime tanmland

    IKINCI_VERI DW LIST ; 16 bit : LIST : greli addresDW 3456H ; 16 bit : 3456 hexDD 0000FFFFH ; 32 bit : 0000FFFF hex

  • rnek

    Sistem Programlama 4

    DUP ynergesinin kullanlmas :

    LIST_A DB ? LIST_A iin bir sekizli rezerve etLIST_B DB 10 DUP (?) LIST_B iin 10 sekizli rezerve et

    ALIGN Adresi ift yapLIST C DW 10 DUP (?) LIST_C iin 10 kelime rezerve etLIST D DD 22 DUP (?) LIST_D iin 22 ift kelime rezerve etZEROS DB 100 DUP (0) ZEROS iin 100 sekizli rezerve et ve sfrla.

  • rnek

    Sistem Programlama 5

    EQU ifadesinin kullanlmas :

    ON EQU 10 ; ON etiketini 10'a eitlerHARF_A EQU 'A' ; HARF_A etiketini A'ya eitlerSAYAC EQU 99 ; SAYAC etiketini 99'a eitlerSAYI_ON EQU ON ; SAYI_10 etiketini 10'a eitler

    YIGIN_BELLEGI DW 50 DUP (?) 50 kelimelik yer rezerve etYIGIN_BASI EQU THIS WORD Yn ban gstermektedir

    DB 10 Burada, 10 deerini saklaVERI EQU THIS BYTE VERI 10 olarak tanmlanyor

    THIS WORD, THIS BYTE kullanlmas

  • rnek

    Sistem Programlama 6

    SEGMENT, END ve ASSUME ifadelerinin kullanlmas :DATA SEGMENT ; Segmentin ismi (Veri segmenti)LIST_A DB 10 DUP(?) ; LIST_A iin 10 sekizli rezerve etLIST_B DW 12 DUP(6) ; LIST_B iin her birinin deeri 6 olan 12 kelime iin yer aDATA ENDS ; Veri segmenti ile ilem sonu

    EXTRA SEGMENT ; Segmentin ismi (Ekstra segment)STRING DB 'MERHABA' ; MERHABA'y kaydetEXTRA ENDS ; Ekstra segment ile ilem sonu

    STACK SEGMENT ; Segmentin ismi (Yn segmenti)DW 5O DUP (?) ; 50 kelimelik yer rezerve et

    STACK ENDS ; Yn segmenti ile ilem sonu

    CODE SEGMENT ; Segmentin ismi (Kod segmenti)ASSUME CS:CODE, DS:DATAASSUME ES:EXTRA, SS:STACK

    BASLA: MOV AX,DATA ; DS

  • rnek

    Sistem Programlama 7

    BLOK_1den BLOK_2 100 sekizli aktarlmas.SAYI EQU 100 ; SAYI'y 100 olarak tanmla

    DATA SEGMENT ; Segmentin ismi (Veri segmenti)BLOCK_1 DB 100 DUP(?) ; BLOK_1 iin 100 sekizli rezerve etDATA ENDS ; Veri segmenti ile ilem sonu

    EXTRA SEGMENT ; Segmentin ismi (Ekstra segment)BLOK_2 DB 100 DUP (?) ; BLOK_2 iin 100 sekizli rezerve etEXTRA ENDS ; Ekstra segment ile ilem sonu

    CODE SEGMENT ; Segmentin ismi (Kod segmenti)ASSUME CS: CODE, DS:DATA, ES.EXTRA

    BASLA: MOV AX,DATA ; DS

  • Toplama Komutlar

    Sistem Programlama 8

    Bir segment saklaycs veya bellek gzleri dorudan toplanamazlar.

    Komut AklamaADD AL,BL AL

  • kartma Komutlar

    Sistem Programlama 9

    Bir segment saklaycs veya bellek gzleri dorudan karlamazlar.

    Komut AklamaSUB CL,BL CL

  • Artrma ve Azaltma Komutlar

    Sistem Programlama 10

    Komut AklamaINC BL BL++INC SP SP++INC BYTE PTR[BX] [DS:PTR(BX)]++ (Sekizlinin deeri bir artttlr)INC WORD PTR[SI] [DS:PTR(SI)]++ (Kelimenin deeri bir artttlr)DEC BH BH--DEC BP BP--DEC BYTE PTR[Dl] [DS:PTR(DI)]-- (Sekizlinin deeri bir azaltlr)DEC WORD PTR[Sl+2] [DS:PTR(SI+2)]-- (Kelimenin deeri bir azaltlr)

  • Elde ile Toplama, dn ile kartma

    Sistem Programlama 11

    Komut AklamaADC AL,AH AL

  • Karlatrma Komutlar

    Sistem Programlama 12

    Komut AklamaCMP CL,BL CL-BL'yi hesaplar, BL ve CL'nin deeri deimezCMP AX,SP AX-SP'yi hesaplar, AX ve SP'nin deeri deimezCMP AX,OCCCCH AX-0CCCCH'yi hesaplar, AX 'in deeri deimezCMP [DI],CH [DS:DI]-CH'yi hesaplar, her ikisinin deeri de deimezCMP CH,[BP] CH-[SS:BP]'yi hesaplar, her ikisinin deeri de deimez.CMP AH,TEMP AH-[DS:TEMP]'i hesaplar, her ikisinin deeri de deimez.

    Karlatrma komutlar aslnda kartma ilemi yapar ancak operandlarndeeri deimez, sadece bayraklar deiir.

    rnek CMP AL,10HJZ ON_ISE

  • arpma Komutlar

    Sistem Programlama 13

    Komut AklamaMUL CL AX

  • Blme Komutlar

    Sistem Programlama 14

    Komut AklamaDIV CL (Blm:AL, Kalan:AH)

  • AND, OR, XOR, NOT Komutlar

    Sistem Programlama 15

    Komut AklamaAND AL,BL AL

  • Kaydrma Komutlar

    Sistem Programlama 16

    Komut AklamaSHL BL BL'deki bitler bir sola lojik olarak kaydrlrSHR AX AX'teki bitler bir saa lojik olarak kaydrlrSAL BYTE PTR[BX], CL

    BX'in gsterdii bellek gzndeki deer CL'deki deer kadar sola aritmetik olarak telenir

    SAR SI, CL SI'daki deer aritmetik olarak CL'deki deer kadar saa telenir

    SAL ve SHL ayn ilevi gryor.

    SAL

    SHR

    SAR

    0

    0

    SHL

  • Dndrme Komutlar

    Sistem Programlama 17

    Komut AklamaRCL SI SI'daki deeri bir bit sola elde zerinde dndrr.ROL BL BL'deki deeri bir bit sola dndrr.ROR AH,CL AH'deki deeri CL'deki deer kadar sola dndrr.RCR WORD PTR[BP] (SS:BP)'deki deeri bir saa elde zerinden bir saa dndrr.

  • Katar Karlatrmalar

    Sistem Programlama 18

    rnekMOV DI, OFFSET BLOCK ; Adresi ykleCLD ; Otomatik artrmay seMOV CX,100H ; Saya deerini ykleMOV AL,0 ; AL

  • Koulsuz Dallanma

    Sistem Programlama 19

    rnekSTART: MOV AX,1

    ADD AX,BX JMP NEXT

    NEXT: MOV BX,AXJMP START

    rnekMOV SI,OFFSET TABLEDEC BXADD SI,BXMOV AX, [SI]JMP AX

    TABLE: DW ONE DW TWO DW THREE

  • Koullu Dallanma

    Sistem Programlama 20

    Komut Test edilen koul Aklama CommentJA C=0 ve Z=0 Bykse dallan (aretsiz) jump aboveJAE C=0 Byk eitse dallan (aretsiz) jump above or equal toJB C=1 Kkse dallan (aretsiz) jump belowJBE C=1 ve Z=1 Kk eitse dallan (aretsiz) jump below or equal toJC C=1 Elde varsa dallan jump carry setJE or JZ Z=1 Eitse / sfrsa dallan jump equal to or jump 0JG 0=Z and S Bykse dallan (aretli) jump greater thanJGE S=0 Byk veya eitse dallan (aretli) jump greater than or equal toJL S=0 Kkse dallan (aretli) jump less thanJLE Z=1 or S=0 Kk veya eitse dallan (aretli) jump less than or equal toJNC C=0 Elde yoksa dallan jump carry clearedJNE or JNZ Z=0 Eit deilse / sfr deilse dallan jump not equal to or jump not 0JNO O=0 Tama yoksa dallan jump no overflowJNS S=0 aret yoksa dallan jump no signJNP P=0 Parite yoksa dallan jump no parityJO O=1 Tama varsa dallan jump on overflowJP P=1 Parite varsa dallan jump on parityJS S=1 aret varsa dallan jump on signJCXZ CX=0 CX = 0 ise dallan jump if register CX is 0

  • rnek - Koullu Dallanma

    Sistem Programlama 21

    100 sekizli uzunluundaki bir tabloda 0AH deeri aranyor.

    ARA: MOV DI,OFFSET TABLO; TABLO'nun adresini DI'ya ykleMOV CX,100 ; Sayac ykleMOV AL,0AH ; Aranacak numaray AL'ye ykleCLD ; Otomatik artrm seREPNE SCASB ; TABLO'da arama yapJCXZ BULUNAMADI ; Eer bulunamadysa BULUNAMADI'ya dallan

  • rnek Dng

    Sistem Programlama 22

    BLOK1 ve BLOK2deki 100 kelimeyi topluyor.

    MOV CX,100 ; Sayac ykleMOV SI,OFFSET BLOK1 ; SI'ya BLOK1'in adresini ykleMOV DI,OFFSET BLOK2 ; DI'ya BLOK2'nin adresini ykle

    TEKRAR: LODSW ; BLOK1'deki kelimeyi alSEG ES: ; Toplama iin ES'yi seADD AX,[DI] ; BLOK1'deki kelimeyi alSTOSW ; BLOK2'ye kaydetLOOP TEKRAR ; CX=0 olana kadar dn

  • rnek Altprosedr

    Sistem Programlama 23

    MOV SI,OFFSET HESAPLA ; SI'ya HESAPLA altprogramnn adresini ykleCALL SI ; SI ile adreslenen alt program ar..HESAPLA PROC NEARPUSH DXMOV DX,AXIN AX,DATAOUT PORT,AXMOV AX,DXPOP DXRETHESAPLA ENDP

    BIM404Sistem ProgramlamaEVRC YNERGELER8086/8088 evirici YnergelerirnekrnekrnekrnekrnekToplama Komutlarkartma KomutlarArtrma ve Azaltma KomutlarElde ile Toplama, dn ile kartmaKarlatrma Komutlararpma KomutlarBlme KomutlarAND, OR, XOR, NOT KomutlarKaydrma KomutlarDndrme KomutlarKatar KarlatrmalarKoulsuz DallanmaKoullu Dallanmarnek - Koullu Dallanmarnek Dngrnek Altprosedr