testalfa makrosu di nin gösterdiği karaktere bakarak alfabetikse (bh=0, bl=1) değilse (bh=1, bl=0) döndürür. (a) Veri bölütünde MSG1 etiketli

Benzer belgeler
MTM 305 MĠKROĠġLEMCĠLER

8086 Mikroişlemcisi Komut Seti

MTM 305 MİKROİŞLEMCİLER

Özet DERS 5. Şu ana kadar bilmeniz gerekenler... İşaretsiz Çarpma. Bayraklardaki Durumlar. İşaretli Çarpma

JZ TEST3 (7/3) 1 makine çevrimi süresi

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUARI İKİLİ TABANDA ÇOK BAYTLI ÇARPMA

MTM 305 MİKROİŞLEMCİLER

MTM 305 MĠKROĠġLEMCĠLER

BIL 362 Mikroilemciler Dersi Final Sınavı Cevapları

(5 soru seçerek cevaplandırınız. Seçilen soru numaralarını yukarıdaki çizelgede işaretleyiniz) Sınav süresi 100 dakikadır. Başarılar dileriz.

MTM 305 MİKROİŞLEMCİLER

BIL 362 Mikroilemciler Dersi Arasınav Cevapları 3 Temmuz 2007

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUARI MİKROİŞLEMCİLİ A/D DÖNÜŞTÜRÜCÜ

Quiz:8086 Mikroişlemcisi Mimarisi ve Emirleri

80x86 MICROPROCESSOR Instructions

b) Aritmetik İşlem Komutları

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUVARI KESMELİ GİRİŞ/ÇIKIŞ

Program Kontrol Komutları. Mikroişlemciler ve Mikrobilgisayarlar 1

MTM 305 MĠKROĠġLEMCĠLER

Bölüm 5: ARITMETIK VE MANTIK IŞLEM YAPAN KOMUTLAR

Mikroişlemcili Sistemler ve Laboratuvarı 8.Hafta

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

DIGIAC 2000 Deney Seti PAT İŞLEMCİ KARTI :

BÖLÜM 6 Seri Port Đşlemleri

DENEY II RAPORU MİKROİŞLEMCİ UYGULAMALARI LABORATUVARI

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUVARI SERİ GİRİŞ ÇIKIŞ

DENEY III RAPORU MİKROİŞLEMCİ UYGULAMALARI LABORATUVARI

Mikrobilgisayar Donanımı

SAUEEE.ORG. Önce C 00 Sonrası C 00

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUVARI SERİ GİRİŞ/ÇIKIŞ

Çok sayıda adım motoru tasarımı olmasına rağmen, bu motorlar iki değişik temel tür altında toplanabilir: değişken relüktanslı veya hibrid yapılı.

Mikrobilgisayar Mimarisi ve Programlama

Deney 4. Gerçek Zamanlı Kesme Uygulamaları

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

İÇİNDEKİLER 1. KLAVYE KLAVYE RB KLAVYE RBHIGH DİSPLAY... 31

Prof. Dr. Doğan İbrahim Yakın Doğu Üniversitesi, Mühendislik Fakültesi, Biyomedikal Mühendisliği, Bölümü Tel:

Aritmetiksel Komutlar

Ders 3 ADRESLEME MODLARI ve TEMEL KOMUTLAR

LCD (Liquid Crystal Display)

AND Komutu. and hedef, kaynak

Hem lw hem de sw komutlarının ofseti 16-bitlik işaretli tamsayıdır.

16F84 ü tanıt, PORTB çıkış MOVLW h FF MOWF PORTB

C Konsol Giriş Çıkış Fonksiyonları

Prepared By IcEN. >> IcEN. Bu makalemizde 80x86 gerçek mod komutlar inceleyece iz.

# PIC enerjilendiğinde PORTB nin 0. biti 1 olacak #PIC enerjilendiğinde PORTA içeriğinin tersini PORTB de karşılık gelen biti 0 olacak

Paralel ve Seri İletişim. Asenkron/Senkron İletişim. Şekil 2: İletişim Modları

Bahar Dönemi BIL382 Mikroişlemcili Sistem Lab. Vize Sınavı,

Mikrobilgisayar Mimarisi ve Programlama

SERĐ GĐRĐŞ / ÇIKIŞ (SIO) 1. Genel Tanıtım. 2. Seri Haberleşmede Bit Örneklenmesi

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUVARI OLAYLARI ZAMANLAMA

MTM 305 MĠKROĠġLEMCĠLER

Assembly Programlama Dili T e m m u z

Mikroişlemciler. Giriş

KOMUT TABLOSU İLE İLGİLİ AÇIKLAMALAR:

BLGM423 Gömülü Sistem Tasarımı

İŞLEMCİ DURUM KAYDEDİCİSİ (PROCESSOR STATUS REGISTER)

İSTANBUL TİCARET ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MİKROİŞLEMCİLİ SİSTEM LABORATUVARI OLAYLARI ZAMANLAMA

Assembly. Programlama Dili. T e m m u z

E-KİTAP. Assembler ile Yazılım ve Arayüz. Mikroişlemcilere Giriş. Mehmet Bodur. Eylül 2014 Ankara. TMMOB Elektrik Mühendisleri Odası 1954

Basit Bootstrap Uygulaması

B.Ç. / E.B. MİKROİŞLEMCİLER

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar

2. SAYI SİSTEMLERİ VE KODLAR

C Dersi Bölüm 1. Bilgisayar Donanımı

BÖLÜM Mikrodenetleyicisine Giriş

İLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

8086 Mikroişlemcisi Komut Seti

Debug Komutları C:\>DEBUG - Çizgi işareti artık debug programının komut kabul etmeye hazır olduğunu belirtmektedir.

Sayı sistemleri iki ana gruba ayrılır. 1. Sabit Noktalı Sayı Sistemleri. 2. Kayan Noktalı Sayı Sistemleri 2. SAYI SĐSTEMLERĐ VE KODLAR

Ayhan Yüksel. (Son güncelleme: Berat Doğan) Tıbbi Enstrumantasyon Tasarım & Uygulamaları ( )

ZTerminal KULLANMA KILAVUZU. yazılımı. USB Terminal

Mikroişlemcili Sistemler ve Laboratuvarı

Mikroişlemciler. Giriş

MİKROİŞLEMCİ LABORATUARI UYGULAMA ÖRNEKLERİ

DOĞU AKDENİZ ÜNİVERSİTESİ BAHAR BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BLGM-324 BİLGİSAYAR MİMARİSİ. PC-SPIMGirişi(MIPS R2000 Simulatörü)

BETİ GSM/GPRS MODEM KULLANIM KILAVUZU

DENEY 6: VERİ SEÇİCİLER İLE TASARIM

KASIRGA 4. GELİŞME RAPORU

Mikrobilgisayarlar. Mikroişlemciler ve. Mikrobilgisayarlar

IFD8520 ADRESLENEBİLİR RS-485/RS-422 İZOLELİ ÇEVİRİCİ KULLANIM KILAVUZU

Sistem Programlama. Kesmeler(Interrupts): Kesme mikro işlemcinin üzerinde çalıştığı koda ara vererek başka bir kodu çalıştırması işlemidir.

OMÜ HAVACILIK VE UZAY BİLİMLERİ FAKÜLTESİ METEOROLOJİ MÜHENDİSLİĞİ BÖLÜMÜ MET103 BİLGİSAYAR PROGRAMLAMA I BÜTÜNLEME SINAVI

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

8086 nın Bacak Bağlantısı ve İşlevleri. 8086, 16-bit veri yoluna (data bus) 8088 ise 8- bit veri yoluna sahip16-bit mikroişlemcilerdir.

Öğr. Gör. Kürşat Mustafa KARAOĞLAN Güz

LCD (Liquid Crystal Display )

Eln 1001 Bilgisayar Programlama I

ÖNEMLİ AÇIKLAMA: Bu derslerdeki sunumların kısa bir özetini göstermek için hazırlanmıştır. Burada türkçeleştirilmemiş olan kısımlar sorulmayacak

Java da İşleçler, Ders #3 (4 Kasım 2009)

Bölüm 4 Aritmetik Devreler

MİKROBİLGİSAYAR LABORATUVARI DENEY RAPORU

Araş. Gör. Abdulkerim ŞENOĞLU Araş. Gör. Mehmet AYAN Araş. Gör İbrahim Kök. BM 310 Mikroişlemciler Dersi Laboratuvarı (LAB2)

9. MERKEZİ İŞLEM BİRİM MODÜLÜ TASARIMI

Mikroişlemciler. Öğr. Gör. Kürşat Mustafa KARAOĞLAN Güz

DENEY 9-A : PIC 16F877 ve LM-35 ile SICAKLIK ÖLÇÜM UYGULAMASI

MTM 305 MĠKROĠġLEMCĠLER

Sayı sistemleri iki ana gruba ayrılır. 1. Sabit Noktalı Sayı Sistemleri. 2. Kayan Noktalı Sayı Sistemleri

Veri Yapıları ve Algoritmalar. Giriş

İLERI MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

Transkript:

Isim, Soyadı... Öğrenci No... BLM323 Sınava Hazırlık Ödevi. (üz 26-7) Imza... (5 puanlıktır.) Q). Alfabetik karakterlerin alfabetik olmayanlara oranını hesaplayacak bir 886 programı yazmanız gerekiyor. Programınız ekrana Yazıyı girin: yazıp konsoldan gelen satırı IBUF a koyacak. Satırın her karakterini test edip alfabetikleri al de, olmayanları dl de sayacak. Tüm karakterler işlenince al/dl bölme işlemini yapıp sonucu ASCII e dönüştürerek Karakter oranı= # biçiminde, # yerine tek basamaklı sonucu koyarak ekrana yazacak. Programı yazarken hazır verilen makroları kullanmalısınız. Çevirici kodunuz şunları gerçekleştirmelidir: (a) Veri bölütünde içinde Yazıyı girin:$, ve Karakter oranı=#$ bulunan MS ve MS2 etiketli iki metin ile 255 karakterlik IBUF etiketli bir giriş tamponu tanımlayın. veri bölütü paragrafını ds ye aktarın. (b) MS i ekrana yazdırın. (c) konsoldan IBUF a bir satır okutun, ve ax= ve dl= yapın. (d) cx e IBUF taki satırın karakter sayısını tutan baytı aktarın, ve di ya satırdaki ilk karakterin adresini koyun. (e) L etiketli bir döngü başlatın ve di nin gösterdiği karakteri karşılaştırıp a ise dl yi bir artıracak, e ise değilse dl yi bir arttırın. (g) di yi bir arttırarak bir sonraki karakteri göstertin. (h) Bütün karakterlerin bu şekilde işlenmesini sağlayıp ardından sonuç al de kalacak biçimde ax/dl bölme işlemini yapın. (i) al deki sonucu ascii-sayıya dönüştürüp MS2 nin içindeki # karakterinin üzerine yazdırın. (j) MS2 yi ekrana yazdırıp DOS a çıkın ve çevirici kodu sonlandırın. testalfa makrosu di nin gösterdiği karaktere bakarak alfabetikse (bh=, bl=) değilse (bh=, bl=) döndürür. =====dosya: MAKROLAR.ASM =================== yazdır macro string mov ah, 9h mov dx, offset string int 2h Açıklamalar satıroku macro buffer mov ah, Ah mov dx, offset buffer int 2h dosacık macro mov ah,4ch int 2h testalfa macro local done push ax mov bx,h ; assume non-alpha mov al,[di] cmp al, A jb done and al,dfh ;convert uppercase cmp al, Z ja done mov bx,h ; it is alphabetic done: pop ax =====end of file MACRO.ASM ============.model small include makrolar.asm.data (a) Veri bölütünde MS etiketli Yazıyı girin:$, ve ve MS2 etiketli Karakter oranı=#$ yazan iki metin ile IBUF etiketli 255 karakterlik bir giriş tamponu tanımlayın. (-) veri bölütü paragrafını ds ye aktarın. (b) MS i ekrana yazdırın. (c) konsoldan IBUF a bir satır okutun, (-) ax= ve dl= yapın. (d) cx e IBUF taki satırın karakter sayısını saklayan baytı aktarın, ve di ya satırdaki ilk karakterin adresini koyun. (e) L etiketli bir döngü başlatın ve di nin gösterdiği karakteri test edecek makroyu çalıştırın. (f) sonuca göre alfabetik ise al yi, değilse dl yi bir arttırın. (g) di yi bir arttırarak bir sonraki karakteri göstertin. (h) Bütün karakterlerin bu şekilde işlenmesini sağlayın (i) sonuç al de kalacak biçimde ax/dl bölme işlemini yapın. (j) al deki sonucu asciisayıya dönüştürün ve (k) MS2 nin içindeki # karakterinin üzerine yazdırın. (l) MS2 yi ekrana yazdırıp DOS a çıkın ve (-) çevirici kodu sonlandırın. ;(a) ;(a) ;(a).code mov ax,@data ;(-) mov ds,ax ;(-) L: ;(b) ;(c) mov ax, ;(-) mov dl, ;(-) mov cl, ;(d) mov ch, mov di, ;(d) ;(e) ;(f) ;(f) ;(g) ;(h) ;(i) ;(j) ;(j) ;(k) ;(l) end ;(-)

Q2). Aşağıdaki bellek altsistemi üç bellek birimini verilen adres tablosundaki gibi etkinleştirmektedir. ISABUS A9 A8 A7 A6 A5 A4 A3 A2 A A A9 A8 A7 A6 A5 A4 A3 A2 A A ilk / son adresler MEM-A MEM-B MEM-C Sonsınav Ev ödevi - 2 a) Devre şematiğini en az devre elemanıyla bellek yongalarının tabloya uygun etkinleştirme sinyalleri alacağı biçimde tamamlayın (ereken bağlantıları gerçekleştirirken adres ve denetim sinyallerinin etiketlerinden yararlanabilirsiniz). b) Adres tablosuna her bir bellek yongasının ilk ve son adresini doldurun. c) Mikroişlemci bellekten 3894h adresindeki baytı okurken bellek altsisteminin hangi hatları etkinleştirilir? Etkin olan sinyalleri E ile işaretleyin. ~MEMR ( ); ~MEMW ( ); ( ); ( ); A ( ); B ( ); C ( ); ISA BUS A[..9] D[..7] ~MEMR ~MEMW RESET 74S38 A(lsb) ~Y B ~Y ~Y2 C ~Y3 E ~Y4 ~Y5 ~E2 ~Y6 ~E3 ~Y7 A..A ~OE A ~WE A A A..A ~OE B ~WE B B A..A ~OE C ~WE C C MEM-A MEM-B MEM-C D[..7] D[..7] D[..7] D[..7] D[..7] D[..7] Q3) a) 36h de giriş, 37h de çıkış portu oluşturmak üzere aşağıdaki adres dekoderiyle port denetim devresi tasarımını tamamlayınız. ISA BUS A[..9] D[..7] D[..7] 74S39 A(msb) ~Y B ~Y ~E ~Y2 ~Y3 D[..7] V +5V D[..7] port- D[..7] port-2 Q[..7] Q[..7] D[..7] b) port- ve port-2 nin hangisi çıkış portudur?

Q4) Aşağıdaki 888 işlemcisi için bellek-adres tablosu Mem- ve Mem-2 bellek yongalarını etkinleştirmek içindir. ISABUS A9 A8 A7 A6 A5 A4 A3 A2 A A A9 A8 A7-A device select port- (Mem-) port-2 FF FF 2 (Mem-2) in etkinleştirdiği toplam bellek kapasitesi kaç bittir?.. Mem- ve Mem-2 nin her birinin adres aralığı (ilk ve son adresi) ne kadardır.? Sonsınav Ev ödevi - 3 Mem- Aralığı=. den e Mem-2 Aralığı = den. e Q5) a) Aşağıdaki bellek altsistemindeki ~WR ve ~OE hatlarının bağlantılarını tamamlayınız. ISA BUS A[..9] D[..7] ~MEMR ~MEMW b) (a) da verilen devrenin adres tablosunu ve RAM- ile RAM-2 nin adres aralıklarını aşağıya doldurunuz. ISABUS A9 A8 A7 A6 A5 A4 A3 A2 A A A9 A8 A7-A Address Ranges RAM- ile arası. RAM-2 ile arası. 74S38 A4 A5 A7 A6 A8 A9 74S39 A(lsb) ~Y B ~Y C ~Y2 ~Y3 E ~Y4 ~Y5 ~E2 ~Y6 ~E3 ~Y7 RAM- A[..2] D[..7] ~WR ~OE RAM-2 A[..3] D[..7] ~WR ~OE Q6) Bir 888 sisteminde 8255 in PORTB (adres 39h) uçları Ortak Anodlu 7-bölütlü göstergeye şu sırayla bağlanmıştır: ~a:pb, ~b:pb, ~c:pb 3, ~d:pb 5, ~e:pb 2, ~f:pb 4, ~g:pb 6, ~dp:pb 7. PORTC nin (adres 3Ah) bit- ucu ise bir düğmeye aşağıdaki gibi bağlıdır. a) 7 yazacak gösterge kodunu bulun.:...b (ikili)=.. h (hex). b) Aşağıdaki kod işlerken jz komutu L e sapmadıysa düğme kısa devre midir, açık devre midir?. mov dx,3ah in al,dx and al,h jz L düğme durumu: devre; e f d g a c b ~a PB ~b PB ~e PB2 ~c PB3 ~f PB4 ~d PB5 ~g PB6 ~x PB7 PC

Q7). a) Aşağıdaki dly5ms prosedürünü delay5ms makrosuna dönüştürün Sonsınav Ev ödevi - 4 dly5ms proc ; wait for 5ms mov bx, 666 wh mov ax, 5 wl dec ax jnz wl dec bx jnz wh ret dly5ms endp b) Aşağıdaki stepmotor makrosunu adımmotoru etiketli bir prosedüre dönüşturun. Argümanın ax yazmacında iletildiğini varsayın. stepmotor macro yon ; yon= -> ileri, - -> geri mov ax, yon add step, ax mov bx, step and bx, 3h mov al, [bx]+ offset SMTBL mov dx, 3h out dx,al call dly5ms Q8) Bir 888 sisteminde bir ADC84 yongası 34h port adresine arayüzlenmiştir. ADC84 ün referans gerilimi Vref=24mV tur. ~INTR hattı 8255in PortA bit-2 sine bağlıdır. PB ye bir adım motoru (SM) bağlıdır. 8255 PA,PB,PC,ComR adresleri 38-3Bh verilmiştir. a) ADC nin basamak gerilimini bulun V =. b) Vin=.4V için ADC okuması N.4V kaç olur N.4V=. Address Decoder ADC84 c) 8255 in ComR değeri kaç olmalıdır. ComR (6-lı)= h. d) Aşağıdaki programda ADCden okunan değer NA,.4V tan düşükse motoru geriye döndürmek, yüksekse ileriye döndürmek, eşitse hiç döndürmemek isteniyor. Program kodunda (a) equ kullanarak.4v daki N ADC değerini N4 etiketiyle bir sabit sayı olarak tanımlayın. (b) 8255 in yalnız PA sını giriş yapın. (c) ADIM ı dan başlatın (d) anadöngü de ADC yi başlatın. (e) PA2 bitinden ADCnin tamamlanmasını bekleyin (f) ADC yi okuyup NA ya aktarın. (g) NA<N4 ise ADIMı bir arttırın (h) NA>N4 ise ADIMı bir azaltın. (i) ADIMı 3h ile maskeleyin (j) [bx]+smc adresinden adım motoru kodunu al ye okuyun. (k) al deki kodu motora yollayın. (l) 2 milisaniye bekleyin. (m) anadöngü ye atlayın ve kodu sonlandırın. D[..7] D 38-3Bh A A A A D[..7] 34h 8255 PA PB PC Vref ~WR Vin ~RD ~INTR PA2 +.24V SM

Sonsınav Ev ödevi - 5 ; a) equ yu tamamlayın NA equ ;a.model small.data adim db smc db 6,3,9,2.code mov ax,@data mov ds,ax ; b) 8255 in yalnız PA sını giriş yapın ;b ;b ;b ; c) ADIM ı dan başlatın ;c ;c ; d) anadöngü de ADC yi başlatın ANADÖNÜ: ;d ;d ;d ; e) PA2 bitinden ADC işleminin sonuçlanmasını bekleyin LA: mov dx, ;e in al,dx and al, ;e j LA ; f) ADC yi okuyup NA ya aktarın.. ;f ;f ;f ; g) NA<N4 ise ADIMı bir arttırın ; h) NA>N4 ise ADIMı bir azaltın. ;h ;h ;h ;h ;h ; i) ADIMı 3h ile maskeleyin ;i ;i ;i ;i ; j) [bx]+smc adresinden adım motoru ; kodunu al ye okuyun ;j ;j ;j ; k) al deki kodu motora yollayın. ;k ;k ;k ;k ; l) (l) 2 milisaniye bekleyin. ;l ;l ;l ;l ; m) anadöngü ye atlayın. ;m ;m ;m ;m ;m ; kodlamayı sonlandır end

Sonsınav Ev ödevi - 6 Q9) Aşağıdaki donanım devresinde 7-bölütlü LED gösterge bağlantısı PB ~a, PB ~b, PB2 ~c, PB3 ~d, PB4 ~e, PB5 ~f, PB6 ~g, PB7 ~dp biçimindedir. PA7 ye SWX anahtarı bağlıdır. PA- uçlarından iki bitlik NX sayısı okunuyor. ADC,...24mV arasında değişen Vin gerilimini 8-bit NA sayısına okumaktadır. bekle nw makrosu nw*2 mikrosaniye bekleme sağlamaktadır. ADC nin doğru okuma yapabilmesi için mikrosaniye beklemek gerekmektedir. ISA BUS A9- D7- ~MEMW ~MEMR Devrenin her milisaniyede.a) SWX basılıysa, iki bitlik NX sayısını {,,2,3} 7-seg göstergeye yazmak için dört rakamlık gösterge kod tablosunu hazırlayıp programda gereken yere doldurun..b) SWX basılı değilse ADCyi NA.ya okuyup NA>NX*6 ise göstergeye, değilse yazması için programı tamamlayın bekle macro nw local bekledöngüsü mov cx, nw bekledöngüsü: loop bekledöngüsü.model small.data NA db? NX db? ; gerekli gösterge kodlarını yaz decoder ~32h A9- ~3Ah ~32h ~32h D7- gkt db....code mov ax,@data mov ds,ax anadöngü: ; SWX i oku ve ise swxbasılıdeğil e git. mov dx,... in al,dx and al, j... swxbasılıdeğil ; portu okuyup maskeleyerek al de yalniz NX sayısını birak mov dx,... in al,dx and al,... ;NX sayısının NX e yaz ve gösterge kodunu al ye oku, mov NX, al mov bl,al mov bh, göstergekodunuoku: mov al,... ;al deki gösterge kodunu porta yolla mov dx,...... ; ms beklemek içi beklems ye atla. ~32h D7- port A ~OE Q7- D7- LE ADC84 Vref ~WR ~RD Vin ~CE D7- PA7: SWX PA-: NX 24mV ~3Ah swbasılıdeğil: ;ADC yi başlat D7- D7- port B LE D7- Q7- ~OE Common Anode 7-seg...... ; makroyu kullanarak mikrosaniye bekle... ; ADC yi al ye okuyup NA ya yaz......... ; NX i al ye alıp kaydırarak NX*6 yi hesapla mov cl,4 ; 4 bit kaydırmak için...... ;al deki NX*6 ile NA yı işaretsiz sayı gibi karşılaştır.... ;al daha büyük ya da eşitse küçükdeğil e atla.... ; bx e koyup göstergekodunuoku ya git...... küçükdeğil: ; bx e koyup göstergekodunuoku ya git...... beklems: ; makroyu kullanarak ms bekle... end

Sonsınav Ev ödevi - 7 Q) Eğitsel bir program yazarak basit bir soru gösterip yanıtını değerlendirmek istiyoruz. Bunun için aşağıdaki mesajlar gerekecek: S etiketli 3+4 = $ ; H etiketli Hayır, Yanlış oldu, tekrar deneyin:$ ; E etiketli Evet, bildiniz.$ ; Y etiketli 7$. Veri bölütünde bir de içi dört boşluk karakteri dolu olan BUF etiketli 4-karakterlik klavye giriş tamponumuz olacak. Yazacağınız kodda şu işleri gerçekleştirmelisiniz: a) veri bölütünde gereken tüm dizinleri ve tamponları tanımlayın. b) S i ekranda gösterin; c) Kullanıcının klavyeden BUF a en fazla 4 karakterlik bir satırı ASCII metin olarak girmesini sağlayın d) BUF taki metini Y deki metinle karşılaştırın. e) İkisi aynı metin ise E dizinini ekrana yazın. e) aynı metin değilse H dizinini ekrana yazın ve başa dönün. f) programı DOS a dönerek sonlandırın. Programınızı en kısa biçimde kodlarken aşağıdaki makroları kullanabilirsiniz. compstr makrosu str ile str2 metinlerini $ karakterine ya da birbirinden farklı bir karaktere kadar karşılaştırıyor. Eğer metinler $ karakterine kadar aynıysa sıfır bayrağı (Z) dönüyor, değilse sıfır bayrağı dönüyor. =====file MACRO.ASM =================== dispstr macro string mov ah, 9h mov dx, offset string int 2h dispstr Açıklamalar getstr macro buffer mov ah, Ah mov dx, offset buffer int 2h getstr exitdos macro mov ah,4ch int 2h exitdos.a) veri bölütünde gereken tüm dizinleri ve tamponları tanımlayın. compstr macro str,str2 local nextchar, done mov di,offset str mov si,offset str2 mov ah, nextchar mov al,[di] cmp al, $ jz done mov ah,[si] cmp ah, $ jz done cmp ah,al jnz done inc di inc si jmp nextchar done =====end of file MACRO.ASM ============.model small include macro.asm.data......code mov ax,@data mov ds,ax.b) S i ekranda gösterin;.c) Klavyeden BUF a en fazla 4 karakterlik bir satırı ASCII metin olarak girilmesini sağlayın.d) BUF taki metini Y deki metinle karşılaştırın.. e) İkisi aynı metin ise E dizinini ekrana yazın..e) aynı metin değilse H dizinini ekrana yazın ve başa dönün..f) programı DOS a dönerek sonlandırın. L: exit: jnz L jmp exit end

Q) Aşağıdaki 34h, 35h, 36h, and 37h çıkış port adreslerini seçen giriş/çıkış adres tablosunu göz önüne alın. ISABUS A A A9 A8 A7 A6 A5 A4 A3 A2 A A address port- 34h port-2 35h port-3 36h port-4 37h Adres tablosunu gerçekleştirmek üzere, aşağıdaki devre şematiğini verilmiş birimlerle en az sayıda eviriciyi kullanarak tamamlayın. Portların çalışabilmesi için gereken denetim hatları ve veriyolu bağlantılarını gerçekleştirin. ISA BUS port- D[..7] Q[..7] A[..9] D[..7] 74S38 A(lsb) ~Y B ~Y ~Y2 C(msb) ~Y3 E ~Y4 ~Y5 ~E2 ~Y6 ~E3 ~Y7 Sonsınav Ev ödevi - 8 Q2) Aşağıdaki sayısaldan örneksele dönüştürücü DAC88 bir 8255 PPI nin adresi 3h olan PortA sına bağlanmıştır. Saat hızı 3.4MHz olan 888 loop komutunu 5 mikrosaniyede işlediğine, ve devrede DAC dayanak gerilimi 248 mv olduğuna, ve PortA çıkış olarak yapılanmış olduğuna göre, a) DAC88 in basamak gerilimi ne kadardır:? V=... b) Aşağıdaki koda göre Vout çıkış geriliminin grafiği nasıldır? 248mV volts 2..8.6.4.2..8.6.4.2. 2 3 4 5 6 7 8 ms D[..7] D[..7] D[..7] Q[..7] Q[..7] Q[..7] port-2 port-3 port-4 mov al, 5 mov dx, 3h out dx,al mov cx, 2/5 L: loop L: L2: inc al out dx,al mov cx, 6 L3: loop L3: cmp al,5 jnz L2 mov cx, /5 L4: loop L4:.

Q3). Bir 888 sistemi ADC84 e 2h port adresinden erişmektedir. ADC nin dayanak gerilimi 52mV tur. ADC nin INTR ucu bağlı olmadığından ADC yi başlattıktan sonra okumadan önce 2 mikrosaniye beklemek gerekecektir. Devredeki USART 825 yongasına 42h (veri) ve 43h (denetim) adreslerinden erişilmektedir. USART ın RXC ve TXC (saat girişleri) 96Hz saat üretecine bağlıdır. USART ın RXD and TXD uçları donanımlı tokalaşma kullanmaksızın yalnızca veri yollamak üzere 96 Baud, paritesiz, 8-veri-bitli, tek-stop-bitli protokolle bir terminale veri iletecektir.. a) ADC devresinin basamak gerilimini bulun. V =. b) ADC nin Vin=.2 volt iken okuyacağı N ADC değeri kaçtır. N ADC (.2V)=. +5.2V ADC84 D[..7] Vref Address Decoder ~WR Vin 2h ~RD ~INTR 4h-4h D[..7] Data A D/~C 825 RxD TxD TxC RxC c) USART ın Mod kurulumu ikili sayı olarak kaç olmalıdır. Mod (ikili)= b. d) 8255 denetim kurulumu ikili sayı olarak kaç olmalıdır Denetim (ikili)= b. 96Hz Sonsınav Ev ödevi - 9 Terminal e) Aşağıdaki program her.5 saniyede bir ADC yi okuyup girişi.2volttan azsa L, az değilse H yollasın isteniyor. 888 saat hızı 4.25 MHz olduğunu ve bir loop komutunun 4 mikrosaniye, 25 loop komutunun ms tuttuğunu varsayın.. N equ....model small.code ; 825 sıfırlama kod dizisi.... ; mod yazmacının kurulması ; denetim yazmacının kurulması mainloop: ; ADC çevirimini başlat........ ; 6 µsaniye bekle ; ADC sonucunu oku ; sonucu ah ye sakla ; yollama-tamp. boşalmasını bekle beklexbuf: ; al ye L koy, mov al, L ; ah<n ise kucukmus e atla cmp ah, N jna kucukmus mov al, H kucukmus: ; al yi çıkış tamponuna yaz ; 4 kez 25 ms bekle mov cx,... jmp mainloop end f) Her ADC okumasından sonra bir karakter yollandığına göre Karakterin yollanması için harcanan süre ne kadardır? ADC okumaları arasındaki süre ne kadardır? g) Bu haberleşme biçimi simpleks mi? yarı-dupleks mi? yoksa tam dupleks midir? neden?

Cevirici Özet Bilgileri INT h BIOS servisleri AH=h Video Modunu kur AL=3, CA text modu AL=4, 32x2 4 renk grafik modu. AL=6, 64x2 hi-res B/W grafik modu. AL=7, monokrom text modu AH=2h Ekran imlecini kur DH=satır, DL=sütun. BH=sayfa AH=3h Ekran imlecini oku, Dönenler DH=satır, DL=sütun. BH=sayfa. CX=imleç AH=6h Ekranı temizle AL= bütün sayfa için, BH=7 öznitelik, CH=, CL=, başlangıç satır ve sütunu. DH=24, DL=8, bitiş satır ve sütunu. AH=Ch rafik ekranın bir pikselini kur. AL=( siyah, ya da beyaz), CX=sütun; DX=satır, 8x86 Komut Biçimleri mov hedef,kaynak (veri aktarma) movsx movzx (baytı 6 bit yazmaca aktarır, 386) cbw reg (baytı işaretli sözcük yapar, 386) cwd reg (sözcüğü işaretli çiftsözcük yapar, 386) cbw (al deki baytı ax te sözcük yapar) cwd (ax teki sözcüğü dx:ax te işaretli yapar) clc / stc (elde bitini sıfırlar / birler) inc h / dec h (h=h+ / h=h-: arttır/azalt) add h,k (h=h+k ; toplama) adc h,k (h=h+k+cf ; eldeli toplama) sub h,k (h=h - k ; çıkarma) sbb h, k (h=h - k - CF; borçlu çıkarma) daa (toplamayı ondalık düzeltme); das (çıkarmayı ondalık düzeltme) aaa (ascii yada u-bcd toplama düzeltmesi.) and h,k ; or h,k ; xor h,k (mantıksal bit bite) neg h (2 lik tümleyenle ikili eksileme) shl h, - shl h,cl (sola bit cl bit kaydırma); shr h, - shr h,cl (sağa bit cl bit kaydırma); sar h, - sar h,cl (sağa aritmetik kaydırma) INT 2h DOS servisleri AH=h klavyeden tek harf bekle ve oku. AL klavyeden basılan tuşu döndürür. AH=2h ekranda bir karakteri göster. AL= gösterilen karakterin ASCII kodu. AH=9h ekranda bir dizgi göster DX= $ ile sonlanan ASCII dizginin offseti. AH=Ah <cr> ile sonlanan bir dizın girişi bekler. DX= tampon ofseti. dizi tamponda döner. tampon = {tamponuzunluğu,dizinuzunluğu, içerik} 5 2 2 2 2 2 5 harflik boş tampon, 5 3 4 62 33 D 2 içinde Ab3<cr> var. AH=4Ch dos a dön INT 6h Klavye Servisi AH=h (herhangi bir tuşa basıldıgını anlar) ZF= tuşa basılmamış demektir. AH=h ( yalnız AH=h dan sonra kullanılır, ve basılan tuşu AL de döndürür). ror dst, ; ror dst, cl ; rol dst, ; rol dst, cl ; (sağa ve sola döndürmeler) rcr dst, ; rcr dst, cl ; rcl dst, ; rcl dst, cl ; (sağa ve sola elde bitli döndürmeler) mul op (işaretsiz ax=al op yada dx:ax=ax op ) div op (işaretsiz al=ax/op, ah=kalan, ya da ax=dx:ax/op dx=kalan) imul op (işaretli ax=al op or dx:ax=ax op) idiv op (işaretli, işlenenleri div gibidir ) loop yakınadres (cx i bir azaltır, sıfır olursa go to yakınadrese sapar.) jmp adres (adrese sapar) test k,k2 bayrakları (k VE k2) e göre günceller. cmp op, op2 (sapma için sayıları karşılaştır) jxx shortaddress (eşitse, büyükse,küçükse, ve durum bayrağına koşullu) işaretli veya işaretsiz: je, jne işaretli: jg, jng, jge, jnge, jl, jnl. jle, jnle işaretsiz: ja, jna, jae, jnae, jb, jnb, jbe,jnbe bayraklı jz, jnz, jc, jnc, js, jns, jo, jno, jp, jpo, 8255 PPI Mode- Kontrol Baytı: b7 b6 b5 b4 b3 b2 b b (PA, PCH, PB, PCL için :çıkış, :giriş yapar) PA PCH PB PCL 825 USART Mode yazmacı formatı (asenkron modu için): b7 b6 = { S2S: bitiş bit sayısı : geçersiz / :stop / :.5stop / : 2stop }, b5 = { EP: parite tipi : tek / : çift }, b4 = { PEN: parite etkin : parite biti yok / : parite biti var }, b3 b2 = { L2L: data biti sayısı : 5-bit / : 6-bit / : 7-bit / : 8-bit }, b b = { B2B: baud bölme oranı : sync-mode / : / / : /6 / : /64 } Control Register format for asynchronous mode: b7 = { EH: Senkron-araması :etkin değil / : etkin } b6 = { IR: Internal reset : devam et / : 825A yı resetle } b5 = { RTS: Request to send, - tokalaşmasız / : RTS-çıkışı-sıfıra-zorlanır } b4 = { ER: Hata Reseti - hata bayrakları kalsın : PE,OE, ve FE hatalarını temizle} b3 = { SBRK: Dur-karakteri yolla : durmasın / : TxD çıkışı sıfıra zorlanır} b2 = { RxE: Alıcı etkinleşsin : etkin değil / : etkin } b = { DTR: Data terminal ready : tokalaşmasız / : DTR-çıkışı-sıfıra zorlanır } b = { TxE: gönderici etkinleşsin : etkin değil / : etkin, } Status Register format for asynchronous mode: b7 = {DSR : DSR girişi etkin (sıfır)} b6 = {SY/BD : senkron veya dur karakteri geldi} b5 = {FE : Çerçeve hatası oluştu} b4 = {OE : Aşma hatası oluştu } b3 = {PE : Parite hatası oluştu} b2 = {TxE : Tx veri göndermeyi bitirdi} b = {RxRDY : Veri girişi tamponu dolu} b = {TxRDY : Veri gönder tamponu boş} Sonsınav Ev ödevi - Çevirici Direktifleri.model [tiny small compact medium large huge].data (veri bölütünün başını belirler).code (kod bölütünün başını belirler).stack n (yığıt bölütünün büyüklüğünü belirler) @data (veri bölütünün olması gereken değer.) <etiket> equ value (etikete sabit ataması yapar) db value (bellekte bir dizi bayt için yer ayırır) dq, dd, dw dörtlü-, çift- ve tek sözcük yeri ayırır dt ( basamak unpacked-bcd yeri ayırır.) n dup(değer) (değeri n kere tekrarlar.) <procetiketi> proc [short near far] endp (prosedür tanımlar) end etiket (giriş noktası verıp çeviriciyi sonlar.) <makroetiketi> macro argumanlar (makro tanımlar). include dosyaadı.uzantısı (bir dosyayı ekler) call procetiketi (procetiketi altyordamını çağırır.) ret [n] (yığıttan n bayt silip altyordamdan döner.) push rx - pop rx (yığıta 6-bit yazmaç iter alır) pushf - popf (yığıta bayrakları iter alır) xchg h,h2 (h ile h2 yazmaçlarını yerdeğiştirir.) Bazı ASCII kontrol karakterleri 7h =<BEL> (zil) ; 8h =<BS> (geriye-sil) ; 9h =<TAB>; Ah =<LF> satırsonu; Ch =<FF> sayfasonu ; Dh =<CR> SatırBaşı; ASCII baskı karakterleri tablosu: - - -2-3-4-5 -6-7 -8-9 -A -B-C-D -E -F 2-! " # $ % & ' ( ) * +, -. / 3-2 3 4 5 6 7 8 9 : ; < = >? 4- @ A B C D E F H I J K L M N O 5- P Q R S T U V W X Y Z [ \ ] ^ _ 6- ` a b c d e f g h i j k l m n o 7- p q r s t u v w x y z { }