Mikroilemciler Kesmeler Interrupts 1 erik Kesmeler 2 rnek

  • Slides: 29
Download presentation
Mikroişlemciler Kesmeler (Interrupts) 1

Mikroişlemciler Kesmeler (Interrupts) 1

İçerik Kesmeler 2

İçerik Kesmeler 2

Örnek Bir odada bulunan bir kişi düşünün. Örneğin ders notu hazırlayan bir öğretim üyesi

Örnek Bir odada bulunan bir kişi düşünün. Örneğin ders notu hazırlayan bir öğretim üyesi olsun. Bu kişi, çalışırken kesmelere maruz kalabilir: Kesmelere maruz kaldığında, işi gerçekleştirecek, sonra kaldığı yerden ders notu hazırlamaya devam edecektir. Bazı kesmeleri ihmal etmeyi veya ertelemeyi seçebilir. Örneğin, bir yazılım için gelen öğrencilere sonra gelmelerini söyleyebilir. Telefon çalabilir. Eğer çok meşgul ise, cevap vermeyebilir. Bazı kesmelere mutlaka cevap verilmelidir. Yangın alarmı gibi. 3 Kesmelere, akıllı bir cevap mekanizması

Örnek: Otobüs sürücüsü, normal olarak otobüsü sürmektedir. Eğer, bir yolcu tarafından durma tuşuna basıldığında

Örnek: Otobüs sürücüsü, normal olarak otobüsü sürmektedir. Eğer, bir yolcu tarafından durma tuşuna basıldığında sürücü, a) b) c) d) e) Bir sonraki durağa doğru yaklaş ve dur Kapıyı aç Yolcuların çıkması için bekle Kapıyı kapat Devam et Sürücü, kesme geldiğinde, önceden belirlenmiş bir dizi işlemi gerçekleştirecektir. İşlemci mimarisinin önemli bir bölümü, kesmelerin karşılanması içindir. 4

8086’daki kesmeler 8086’da bir kesme, intr pin’i 0’dan 1’e geçtiğinde gerçekleşir. Bu kesme, CLI

8086’daki kesmeler 8086’da bir kesme, intr pin’i 0’dan 1’e geçtiğinde gerçekleşir. Bu kesme, CLI komutu kullanılarak Interrupt Flag kesme bayrağının temizlenmesi ile kullanım dışı bırakılır. Kesmeler, STI komutu kullanılarak tekrar kullanım içine alınır. Ayrıca, gerçek acil durumlar için NMI (Non Maskable Interrupt) de bulunur. Kesmeler, genellikle I/O aygıtları tarafından başlatılırlar. 5

6

6

 INTO Interrupt 4 if Overflow flag is 1. Algorithm: if OF = 1

INTO Interrupt 4 if Overflow flag is 1. Algorithm: if OF = 1 then INT 4 MOV AL, -5 SUB AL, 127 ; AL = 7 Ch (124) INTO ; process error. RET 8

 CLI Clear Interrupt enable flag. This disables hardware interrupts. Algorithm: IF = 0

CLI Clear Interrupt enable flag. This disables hardware interrupts. Algorithm: IF = 0 STI Set Interrupt enable flag. This enables hardware interrupts. Algorithm: IF = 1 9

 RET Algorithm: Pop from stack: IP if immediate operand is present: SP =

RET Algorithm: Pop from stack: IP if immediate operand is present: SP = SP + operand Example: ORG 100 h ; for COM file. CALL p 1 ADD AX, 1 RET ; return to OS using INT 20 h - exit to operating system. p 1 PROC ; procedure declaration. MOV AX, 1234 h RET ; return to caller. p 1 ENDP 10

 IRET Interrupt Return. Algorithm: Pop from stack: IP CS flags register 11

IRET Interrupt Return. Algorithm: Pop from stack: IP CS flags register 11

8086’daki kesmeler Bir kesme oluştuğu zaman, mikroişlemci: 1. 2. 3. Kesmenin durumu stack’e atılır.

8086’daki kesmeler Bir kesme oluştuğu zaman, mikroişlemci: 1. 2. 3. Kesmenin durumu stack’e atılır. Kesmenin gerektirdiği fonksiyon olan ISR (Interrupt Service Routine) gerçekleştirilir. Kesmeden önceki durum stack’ten IRET komutu ile geri yüklenir. ISR, özel bir fonksiyon çeşididir. 12

8086’daki kesmeler Kesme oluştuğu zaman, CPU, mevcut komutu tamamladıktan sonra: 1. 2. 3. 4.

8086’daki kesmeler Kesme oluştuğu zaman, CPU, mevcut komutu tamamladıktan sonra: 1. 2. 3. 4. 5. 13 Maskelenebilir Kesmeleri, CLI komutu ile devre dışı bırakır. Bu sayede, kesmede iken kesmeye maruz kalınmasına engel olunur. Programcı, ISR içerisinde STI komutunu çağırarak, bu özelliği kaldırabilir. IP, CS register’ları ile bayrak register’ı, stack’te saklanır. N, kesme sayısı olmak üzere 4*N hafıza adresine atlama yapılır. Bu adreste bulunan ISR çalıştırılır. ISR’nin sonunda, IRET komutu kullanılarak IP, CS ve bayrak register’larının ilk durumları geri çağrılır.

Kesme Atlama Tablosu 20 bitlik 8086 hafıza haritasının en altında Kesme Atlama Tablosu bulunur.

Kesme Atlama Tablosu 20 bitlik 8086 hafıza haritasının en altında Kesme Atlama Tablosu bulunur. Interrupt Number 2 1 0 14 Address Memory 000 B-000 A 0009 -0008 0007 -0006 0005 -0004 0003 -0002 0001 -0000 IP CS ISR’nin bulunduğu yerin tam adresi

Emülatördeki kesmeler Kesmeler, fonksiyon olarak görülebilir. Bu fonksiyonlar, programlamayı kolaylaştırır. Bir karakteri yazan bir

Emülatördeki kesmeler Kesmeler, fonksiyon olarak görülebilir. Bu fonksiyonlar, programlamayı kolaylaştırır. Bir karakteri yazan bir kod yazmaktansa, ilgili kesme kullanılabilir. 15

INT Komutu Kodun içerisinde Kesme yapmak için INT komutu kullanılır. Basit bir yapısı vardır:

INT Komutu Kodun içerisinde Kesme yapmak için INT komutu kullanılır. Basit bir yapısı vardır: INT deger Deger: 0 -255 arası (0 -0 FFh) bir sayıdır. Genellik ile heksadesimal sayılar kullanılır. 16

Alt fonksiyonlar 256 tane fonksiyondan fazla fonksiyon kullanılabilir. Her kesmenin alt fonksiyonları olabilir. Alt

Alt fonksiyonlar 256 tane fonksiyondan fazla fonksiyon kullanılabilir. Her kesmenin alt fonksiyonları olabilir. Alt fonksiyon tanımlamak için AH register’ına, kesme yapmadan önce bir değer atanır. Her kesmenin 256 tane alt fonksiyonu olabilir. Yani 256*256 = 65536 fonksiyon gerçeklenebilir. Genellikle AH register’ı kullanılır. Genellikle, diğer register’lar, alt fonksiyonlara parametre veya veri göndermek için kullanılır. Ancak bazı özel durumlarda, alt fonksiyon tanımlamak için diğer register’lar da kullanılabilir. 17

INT 10 h kesmesi: 0 Eh alt fonksiyonu, ekrana tek bir karakter yazdırmak için

INT 10 h kesmesi: 0 Eh alt fonksiyonu, ekrana tek bir karakter yazdırmak için kullanılır. Ekrana yazılacak olan karakter AL register’ında bulunur. AH register’ındaki değer değişmez. EMU 8086 Emülatörü üzerindeki kodlar hakkında bilgi verdiğimizi unutmayın. Farklı laboratuvar kitlerinde, farklı tanımlamalar yapılmış olabilir. 18

Örnek: Hello World ORG 100 h MOV AH, 0 Eh ; alt fonksiyon seç.

Örnek: Hello World ORG 100 h MOV AH, 0 Eh ; alt fonksiyon seç. MOV AL, 'H' INT 10 h ; Harfi yazdır! MOV AL, 'e' INT 10 h ; Harfi yazdır! MOV AL, 'l' INT 10 h ; Harfi yazdır! 19 MOV AL, 'l' INT 10 h ; Harfi yazdır! MOV AL, 'o' INT 10 h ; Harfi yazdır! MOV AL, '!' INT 10 h ; Harfi yazdır! RET

org 100 h ; set location counter to 100 h mov cx, 5 sub

org 100 h ; set location counter to 100 h mov cx, 5 sub cx, 5 MOV AH, 0 Eh ; alt fonksiyon seç. MOV AL, 'H' INT 10 h ; Harfi yazdir! mov bx, 0 20

21

21

Özellikler Karakter özellikleri 8 bitlik değerlerdir. Düşük olan 4 karakterde yazı rengi, yüksek olan

Özellikler Karakter özellikleri 8 bitlik değerlerdir. Düşük olan 4 karakterde yazı rengi, yüksek olan 4 bitte ise arka plan rengi tanımlıdır. 22 HEX BIN Color HE X BIN Color 0 0000 Black 8 1000 Dark Gray 1 0001 Blue 9 1001 Light Blue 2 0010 Green A 1010 Light Green 3 0011 Cyan B 1011 Light Cyan 4 0100 Red C 1100 Light Red 5 0101 Magenta D 1101 Light Magenta 6 0110 Brown E 1110 Yellow 7 0111 Light Gray F 1111 White

Öğrnek: mov al, 13 h mov ah, 0 int 10 h ; set graphics

Öğrnek: mov al, 13 h mov ah, 0 int 10 h ; set graphics video mode. mov al, 1100 b mov cx, 10 mov dx, 20 mov ah, 0 ch int 10 h ; set pixel. 23 INT 10 h / AH = 0 Ch change color for a single pixel. input: AL = pixel color CX = column. DX = row.

 INT 21 h / AH=7 - character input without echo to AL. if

INT 21 h / AH=7 - character input without echo to AL. if there is no character in the keyboard buffer, the function waits until any key is pressed. (store input in AL) example: mov ah, 7 int 21 h 24

 INT 21 h / AH=9 - output of a string at DS: DX.

INT 21 h / AH=9 - output of a string at DS: DX. String must be terminated by '$'. example: org 100 h mov dx, offset msg mov ah, 9 int 21 h Ret msg db "hello world$" 25

 INT 21 h / AH= 39 h - make directory. entry: DS: DX

INT 21 h / AH= 39 h - make directory. entry: DS: DX -> ASCIZ pathname; zero terminated string, for example: Try to do the same org 100 h program for the same path and try to do it ith mov dx, offset filepath the name “my? dir” mov ah, 39 h int 21 h ret filepath DB "C: mydir", 0 ; path to be created. end the above code creates c: emu 8086vdriveCmydir directory if run by the emulator. Return: CF clear if successful AX destroyed. CF set on error AX = error code. Note: all directories in the given path must exist except the 26 last one.

 INT 21 h / AH= 3 Ch - create or truncate file. entry:

INT 21 h / AH= 3 Ch - create or truncate file. entry: CX = file attributes: mov cx, 0 ; normal - no attributes. mov cx, 1 ; read-only. mov cx, 2 ; hidden. mov cx, 4 ; system mov cx, 7 ; hidden, system and read-only! mov cx, 16 ; archive DS: DX -> ASCIZ filename. returns: CF clear if successful, AX = file handle. CF set on error AX = error code. 27

28 org 100 h mov ah, 3 ch mov cx, 0 mov dx, offset

28 org 100 h mov ah, 3 ch mov cx, 0 mov dx, offset filename mov ah, 3 ch int 21 h jc err mov handle, ax jmp k filename db "myfile. txt", 0 handle dw ? err: ; . . k: ret

ALU Examples MOV AL, 10110001 b ; 4 biits = even pariity XOR AL,

ALU Examples MOV AL, 10110001 b ; 4 biits = even pariity XOR AL, 0 ; Pariity fllag iis set (PE) MOV AX, 64 C 1 H ; AX= 0110 01001100 0001 XOR AH, AL ___________________ MOV AL, , 55 H ; AL=0101 b AND AL, , 1 FH ; AL=15 H=00010101 b, cllear biit 7 OR AL, , C 0 H ; AL=D 5 H=11010101 b, , set biits 1, , 3, , 5, , 7, , 8 XOR AL, , 0 FH ; AL=DAH=11011010 b, , iinvert biits 1, , 2, , 3, , 4 NOT AL ; AL=25 H=00100101 b, , togglles (iinvert) allll biits 29

org 100 h ; set location counter to 100 h MOV AL, 25 ;

org 100 h ; set location counter to 100 h MOV AL, 25 ; AL’ye 25 degerini ata. MOV BL, 10 ; BL’ye 10 degerini ata. ; IF BL == 25 ? ? ? CMP AL, BL ; compare (karsilastir) AL - BL. JE equal ; AL = BL (Z = 1) ise atla. MOV CX, 1 ; Eger buraya gelmis ise AL<>BL JMP stop ; CX’i set et, ve stop’a atla. equal: ; Eger buraya gelmis ise, MOV CX, 0 ; AL = BL’dir, CX’i temizle. stop: RET 30