bım404 sistem programlama ch4 makine dili

20
BIM404 Sistem Programlama MAKİNE DİLİ Yrd. Doç. Dr. Abdullah Sönmez

Upload: burakizu

Post on 17-Jan-2016

25 views

Category:

Documents


1 download

DESCRIPTION

ders

TRANSCRIPT

Page 1: Bım404 Sistem Programlama Ch4 Makine Dili

BIM404

Sistem ProgramlamaMAKİNE DİLİ

Yrd. Doç. Dr. Abdullah Sönmez

Page 2: Bım404 Sistem Programlama Ch4 Makine Dili

Makine Dili

Sistem Programlama 2

1. sekizli 2. sekizli

Komut kodu (Opcode) MOD REG R/M

D Anlamı1 Hedef, saklayıcı0 Kaynak, saklayıcı

W Anlamı

1Komut kodu kelime

üzerinde işlem yapıyor

0Komut kodu sekizli

üzerinde işlem yapıyor

MOD İşlem00 Yer değiştirme yok01 8 bitlik işaret genişletmeli yer değiştirme10 16 bitlik yer değiştirme11 Bir saklayıcı

Page 3: Bım404 Sistem Programlama Ch4 Makine Dili

Makine Dili (Devam)

Sistem Programlama 3

REG ve R/M Atamaları (MOD=11 iken)

Kod W=0 W=1000 AL AX001 CL CX010 DL DX011 BL BX100 AH SP101 CH BP110 DH SI111 BH DI

R/M bellek adresleme modlarıKod İşlev000 [BX+SI]001 [BX+DI]010 [BP+SI]011 [BP+DI]100 [SI]101 [DI]110 [BP]* MOD 00 ise 16 bit gösterir.111 [BX]

Page 4: Bım404 Sistem Programlama Ch4 Makine Dili

Makine Dili (Devam)

Sistem Programlama 4

1. sekizli 2. sekizli

Komut kodu (Opcode) MOD REG R/MD W

Komut Kodu MOVD Hedef, saklayıcıW KelimeMOD R/M bir saklayıcıREG BPR/M SP

Örnek: MOV BP, SP

Page 5: Bım404 Sistem Programlama Ch4 Makine Dili

Makine Dili (Devam)

Sistem Programlama 5

1. sekizli 2. sekizli

Komut kodu (Opcode) MOD REG R/MD W

Komut Kodu MOVD Hedef, saklayıcıW SekizliMOD Yer değiştirme yokREG DLR/M [DI]

Örnek: MOV DL, [DI]

Page 6: Bım404 Sistem Programlama Ch4 Makine Dili

Makine Dili (Devam)

Sistem Programlama 6

1. sekizli 2. sekizli

Komut kodu (Opcode) MOD REG R/MD W

Komut Kodu MOVD Kaynak, saklayıcıW SekizliMOD Yer değiştirme yokREG DLR/M [BP] (MOD=0 => 16 bit DS)

Örnek: MOV [1000H], DL

Yer değiştirme Düşük anlamlı Yer değiştirme Yüksek anlamlı

Page 7: Bım404 Sistem Programlama Ch4 Makine Dili

Makine Dili (Devam)

Sistem Programlama 7

1. sekizli 2. sekizli

Komut kodu (Opcode) MOD REG R/MD W

Komut Kodu MOVD Kaynak, saklayıcıW SekizliMOD 8 bitlik yer değiştirmeREG DLR/M [BP] (MOD=1 => 8 bit DS)

Örnek: MOV [BP], DL

8 bit yer değiştirme

Page 8: Bım404 Sistem Programlama Ch4 Makine Dili

Makine Dili (Devam)

Sistem Programlama 8

1. sekizli 2. sekizli

Komut kodu (Opcode) MOD REG R/MD W

Örnek: MOV [AX+1000H], 1234H

Yer değiştirme / Düşük anlamlı Yer değiştirme / Yüksek anlamlı

Veri / Düşük anlamlı Veri / Yüksek anlamlı

Page 9: Bım404 Sistem Programlama Ch4 Makine Dili

PUSH (Yığın Segmenti)

Sistem Programlama 9

Sembolik 1. sekizli 2. sekizli ÖrnekPUSH sak 01010sss PUSH BX PUSH bel 11111111 bb110aaa PUSH [BX]PUSH seg 000ss110 PUSH DS

PUSHF 10011100 PUSHF

Page 10: Bım404 Sistem Programlama Ch4 Makine Dili

POP (Yığın Segmenti)

Sistem Programlama 10

Sembolik 1. sekizli 2. sekizli ÖrnekPOP sak 01011sss POP DI POP bel 10001111 bb000aaa POP [DI+2]POP seg 000ss111 POP ES

POPF 10011101 POPF

Page 11: Bım404 Sistem Programlama Ch4 Makine Dili

Adresleri YüklemeLEA: Etkin Adresi Yükle (Load Effective Address)LEA AX, DATA AX’e DATA’daki adres ile yüklenir.LEA BX, [DI] BX saklayıcısına DI tarafından belirtilen adres yüklenir, MOV BX,[DI]

ise DI tarafından belirtilen adresteki veriyi yükler.LEA BX, LIST = MOV BX, OFFSET LIST

LDS: Veri Segmentini Yükle (Load Data Segment)

LES: Ekstra Segmenti Yükle (Load Extra Segment)

Bu komutlar DS veya ES’ye 16 bitlik yeni bir segment başlangıç adresini yükler.

LDS DI,LIST DI ve DS LIST’te belirtilen adresle yüklenir.

LES BX,CAT BX ve ES CAT’te belirtilen adresle yüklenir.

Sistem Programlama 11

Page 12: Bım404 Sistem Programlama Ch4 Makine Dili

LDS Örnek

Sistem Programlama 12

Page 13: Bım404 Sistem Programlama Ch4 Makine Dili

Katar Veri Transferleri

▪ Direction Flag (D):

▪ D=0 ise otomatik-artırım seçilidir.

▪ D=1 ise otomatik-azaltım seçilidir.

▪ CLD komutu D bayrağını sıfırlar, dolayısıyla otomatik-artırımı seçer.

▪ STD komutu D bayrağını birler, dolayısıyla otomatik-azaltımı seçer.

▪ D bayrağının değerine bağlı olarak DI veya SI (hangisi kullanılıyorsa) daki değer her sekizli ya da kelime transferi ardından bir arttırılır ya da azaltılır.

▪ DI’nın göreli adresi ES’de, SI’nın göreli adresi ise DS’dedir. SI saklayıcısının birlikte kullanılacağı segment değiştirilebilir. Buna karşın DI sürekli olarak ES ile birlikte kullanılmalıdır.

Sistem Programlama 13

Page 14: Bım404 Sistem Programlama Ch4 Makine Dili

Katar Veri Transferi Komutları

Sistem Programlama 14

Sembolik FonksiyonLODSB [DI]=AL, sekizli aktarımıLODSW [DI]=AX, kelime aktarımıLODS BYTE AL=[SI], eğer BYTE sekizli olarak tanımlanmışsaLODS WORD AX=[SI], eğer WORD kelime olarak tanımlanmışsa

STOSB AL=[SI], sekizli aktarımıSTOSW AX=[SI], kelime aktarımıSTOS BYTE [DI]=AL, eğer BYTE sekizli olarak tanımlanmışsaSTOS WORD [DI]=AX, eğer WORD kelime olarak tanımlanmışsa

MOVSB [DI]=[SI], sekizli aktarımıMOVSW [DI]=[SI], kelime aktarımıMOVS BYTE1,BYTE2 [DI]=[SI], eğer BYTE1 ve BYTE2 sekizli olarak tanımlanmışsaMOVS WORD1,WORD2 [DI]=[SI], eğer WORD1 ve WORD2 sekizli olarak tanımlanmışsa

Page 15: Bım404 Sistem Programlama Ch4 Makine Dili

LODSW

Sistem Programlama 15

Page 16: Bım404 Sistem Programlama Ch4 Makine Dili

Katar Aktarım İşlemi ÖrnekleriÖrnek 1:▪ STOS komutu kullanılarak bir bellek bloğunu temizleme.LES DI,BUFFER ; BUFFER’ın etkin adresini ES ve DI’ya yükle.MOV CX,10 ; sayacı yükleCLD ; otomatik-artırmayı seç MOV AL,0 ; AL’yi temizleREP STOSB ;[DI] = AL =>BUFFER’ı temizle.

Örnek 2:▪ Bir bellek bloğunu MOVS ile aktarma.LES DI,LIST1 ; LIST1’ın etkin adresini ES ve DI’ya yükleLDS SI,LIST2 ; LIST2’nin etkin adresini DS ve SI’ya yükleCLD ; otomatik-artırmayı seç MOV CX,100 ; sayacı yükleREP MOVSB ; 100 sekizliyi LIST2’den L1ST1’e aktar

Sistem Programlama 16

Page 17: Bım404 Sistem Programlama Ch4 Makine Dili

Diğer Veri Aktarım KomutlarıXCHG: ▪ Herhangi bir saklayıcının içeriğini başka bir saklayıcı ile ya da bellek konumu ile segment

saklayıcıları ve bellekten belleğe işlemler hariç olma üzere değiş tokuş eder.

LAHF ve SAHF: ▪ En düşük anlamlı bayrak sekizlisini AH saklayıcısına ve AH saklayıcısından aktar.

XLAT:▪ AL saklayıcısının içeriğini tabloda saklanan bir sayıya dönüştürür. Öncelikle BX

saklayıcısının içeriği ile AL’nin içeriğini toplayarak veri segmentinde bir bellek adresi oluşturur. Daha sonra bu adreste saklanan veriyi AL’ye yükler.

Sistem Programlama 17

Page 18: Bım404 Sistem Programlama Ch4 Makine Dili

Diğer Veri Aktarım Komutları

Sistem Programlama 18

IN ve OUT :

▪ IN komutu G/Ç cihazından AL veya AX saklayıcısına veri aktarımını gerçekleştirir. OUT komutu ise AL veya AX saklayıcısından G/Ç cihazına veri aktarımını gerçekleştirir.

IN AL,pp 8 bit veri pp portundan AL saklayıcısına aktarılır.IN AX,pp 16 bit veri pp portundan AX saklayıcısına aktarılır. (SABİT PORT ADRESLEME)IN AL,DX 8 bit veri DX portundan AL'ye aktarılır. (Portun adresi DX'te)

IN AX.DX 16 bit veri DX portundan AX'e aktarılır. (Portun adresi DX'te) (DEĞİŞKEN PORT ADRESLEME)

OUT pp,AL 8 bit veri AL'den pp portuna gönderilir.OUT pp,AX 16 bit veri AX'ten pp portuna gönderilir.OUT DX,AL 8 bit veri AL'den DX'te belirtilen porta gönderilir.OUT DX,AX 16 bit veri AX'ten DX portuna gönderilir.

Page 19: Bım404 Sistem Programlama Ch4 Makine Dili

Segment Geçersiz Kılma Önekleri

Sistem Programlama 19

Sembolik Erişilen segment Normal segmentMOV AX,DS:[BP] Veri segmenti Yığın segmentiMOV AX,ES:[BP] Ekstra segment Yığın segmentiMOV AX.SS:[DI] Yığın segmenti Veri segmentiMOV AX,CS:[SI] Kod segmenti Veri segmentiMOV AX,ES:LIST Ekstra segment Veri segmenti

Page 20: Bım404 Sistem Programlama Ch4 Makine Dili

8086/8088 Çevirici Yönergeleri

Sistem Programlama 20

Kelime Fonksiyon FunctionALIGN Başlangıcı çift adrese hizala starts at an even memory addressASSUME Segmentlerin nerede olduğunu gösterir indicates where the segments are locatedAT Segmenti bellekte saklar stores the segment in the memoryBYTE İşlenenin sekizli olarak ele alınmasını sağlar acts as a byte operandDB Sekizliyi tanımlar (8 bit) defines a byte (8 bit)DD Çift kelime tanımlar (32 bit) defines a double word (32 bits)DQ Dörtlü kelime tanımlar (64 bit) defines quad word (64 bits)DT 10 byte tanımlar (80 bit) defines 10 bytes (80 bits)DUP Sonra gelen karakteri çoğaltır duplicates the following characterDW Kelime tanımlar (16 bit) defines word (16 bits)END Listenin sonunu gösterir indicates end of listingENDP Prosedürün sonunu gösterir indicates end of procedureENDS Segmentin sonunu gösterir indicates end of segmentEQU Eşitler equatesFAR Uzak bellek işaretçisi olarak ele alınmasını sağlar (Segmentler-arası) acts as far memory pointer (inter-segment)NEAR Yakın bellek işaretçisi olarak ele alınmasını sağlar (Segment-içi) acts as near memory pointer (intra-segment)OFFSET Göreli adresi belirtir specifies the offset addressORG Segment içindeki başlangıcı ayarlar sets origin within segmentPROC Prosedür başlangıcını tanımlar defines beginning of procedurePTR Bellek işaretçisi olarak ele alınmasını sağlar acts as memory pointerSEGMENT Bir segmentin başlangıcını belirler designates start of a segmentSTACK Yığın segmenti olduğunu gösterir indicates stack segment