Ö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



Benzer belgeler
Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar

8086 Mikroişlemcisi Komut Seti

80x86 MICROPROCESSOR Instructions

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

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

BM-311 Bilgisayar Mimarisi

Quiz:8086 Mikroişlemcisi Mimarisi ve Emirleri

Ders 3 ADRESLEME MODLARI ve TEMEL KOMUTLAR

Bölüm 3: Adresleme Modları. Chapter 3: Addressing Modes

b) Aritmetik İşlem Komutları

MTM 305 MĠKROĠġLEMCĠLER

MTM 305 MĠKROĠġLEMCĠLER

İ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

BM-311 Bilgisayar Mimarisi

MTM 305 MĠKROĠġLEMCĠLER

Program Kontrol Komutları. Mikroişlemciler ve Mikrobilgisayarlar 1

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

Assembly Language Programming

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

AND Komutu. and hedef, kaynak

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

MTM 305 MİKROİŞLEMCİLER

MTM 305 MİKROİŞLEMCİLER

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

BM-311 Bilgisayar Mimarisi

CISC Complex Instruction Set Computers

8086 dan core2 ya yazaç yapısını tanımak. Bayrak yazacının içeriğinde yer alan bayrakların görevlerini tanımlamak. Real mod çalışmada bellek

Mikrobilgisayar Mimarisi ve Programlama

Mikroişlemcili Sistemler ve Laboratuvarı 8.Hafta

8086 Mikroişlemcisi Komut Seti

Assembly Programlama Dili T e m m u z

MTM 305 MİKROİŞLEMCİLER

Assembly. Programlama Dili. T e m m u z

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

Bildiğiniz gibi programları oluşturan kodlar ve veriler hafızaya yüklendikten sonra işlemci tarafından satırsatır icra edilirler.

Ders Özeti. Ders 2. PC nin İç Organizasyonu. Mikroişlemcinin Organizasyonu. Basitçe İşlemciyi Oluşturan Parçalar. Mikroişlemciler

MİKROBİLGİSAYAR SİSTEMLERİ. Teknik Bilimler Meslek Yüksekokulu

MTM 305 MĠKROĠġLEMCĠLER

Mikrobilgisayar Donanımı

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

2. SAYI SİSTEMLERİ VE KODLAR

Yrd. Doç. Dr. Caner ÖZCAN

ÖZET. Lojiksel ve Hiziksel Hafıza. x86 byte düzeni nın Fiziksel Hafıza Yapısı. Ders 3. Temeller

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

MTM 305 MĠKROĠġLEMCĠLER

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar

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

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

Bölüm 4 Veri Aktarma Komutları

İ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Ü

Mikrobilgisayar Mimarisi ve Programlama

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

İ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Ş

W SAYAC SAYAC SAYAC. SAYAC= ise, d=0 W

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

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

Aritmetiksel Komutlar

Assembly Dili Nedir? Assembly dili biliyorum derken hangi işlemci ve hangi işletim sistemi için olduğunu da ifade etmek gerekir.

İşletim Sistemlerine Giriş

EEM 306 Mikroişlemciler ve Lab. Doç.Dr. Mehmet SAĞBAŞ

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

Bilgisayarların Gelişimi

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

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

DIGIAC 2000 Deney Seti PAT İŞLEMCİ KARTI :

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

BİLGİSAYAR MİMARİSİ. Bilgisayar Bileşenleri Ve Programların Yürütülmesi. Özer Çelik Matematik-Bilgisayar Bölümü

MC6800. Veri yolu D3 A11. Adres yolu A7 A6 NMI HALT DBE +5V 1 2. adres onaltılık onluk bit 07FF kullanıcının program alanı

Bölüm 7 Gelişmiş Fonksiyon Komutları

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

mikroc Dili ile Mikrodenetleyici Programlama Ders Notları

Basit Bootstrap Uygulaması

SAYI SİSTEMLERİ. 1. Sayı Sistemleri. Sayı Sistemlerinde Rakamlar

K uark projesi. Temel Özellikler :

BLM1011 Bilgisayar Bilimlerine Giriş I

Komutların Yürütülmesi

Von Neumann Mimarisi. Mikroişlemciler ve Mikrobilgisayarlar 1

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER

Komut Seti Mimarisi (ISA)

Elektronik sistemlerde dört farklı sayı sistemi kullanılır. Bunlar;

BIL 362 Mikroilemciler Dersi Final Sınavı Cevapları

Şekil. 64 Kelimelik Yığıtın Blok Şeması

İŞLETİM SİSTEMİ İşletim sistemi kullanıcıyla bilgisayar donanımı arasında iletişim sağlayan programdır.

BM-311 Bilgisayar Mimarisi

MANTIK DEVRELERİ HALL, 2002) (SAYISAL TASARIM, ÇEVİRİ, LITERATUR YAYINCILIK) DIGITAL DESIGN PRICIPLES & PRACTICES (3. EDITION, PRENTICE HALL, 2001)

ASSEMBLY DİLİNDE PROGRAMLAMA

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER

16 bitlik işlemciler basit olarak 8 bitlik işlemciler gibi Kaydedici ALU Zamanlama/kontrol

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

Mikroişlemci ve Yapısı. Mikroişlemciler ve Mikrobilgisayarlar

Giriş MİKROİŞLEMCİ SİSTEMLERİ. Elektronik Öncesi Kuşak. Bilgisayar Tarihi. Elektronik Kuşak. Elektronik Kuşak. Bilgisayar teknolojisindeki gelişme

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

MİKROBİLGİSAYAR SİSTEMLERİ VE ASSEMBLER

Linux Assembly Programlamaya Giriş

BM 375 Bilgisayar Organizasyonu Dersi Vize Sınavı Cevapları 10 Nisan 2009

C-Serisi PLC İleri Seviye Eğitim

Mikrobilgisayarlar ve Assembler. Bahar Dönemi. Vedat Marttin

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Yrd. Doç. Dr. Fatih Gökçe

Yrd. Doç. Dr. Caner ÖZCAN

SAYISAL ELEKTRONİK. Ege Ü. Ege MYO Mekatronik Programı

Transkript:

Ö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 manası asla taşınmamalıdır. 1 nolu ders notu da dahil olmak üzere bazı bilgiler sorulabilir. Buradaki amaç, öğrenciye az bir katkı sağlamaktır. Bu nedenle notların hem ingilizcesine, hemde türkçesine birlikte bakılmalı, öyle çalışılmalıdır. Her ders notunun türkçeleştirilen kısmı hangi ders notuna aitse o başlığı taşıyacaktır. LECTURE 2 8086 Mikroişlemcisinin registerları CPU da registerlar bilgiyi geçici saklamak amaçlı kullanılır. Bu bilgi 1 veya 2 bytelik veri veya verinin adresi olabilir. 8088/8086 da genel amaçlı registerlar 16 bitlik yada 8 bitlik olarak kullanılabilirler. Diğer bütün registerlar 16 bit olarak kullanılır. 8-bitlik registerın diziliş sırası: D7 D6 D5 D4 D3 D2 D1 D0 16-bitlik registerın diziliş sırası: D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 Genel amaçlı registerlar16 bit olarak AX, BX, CX, DX şeklinde, 8 bitlik gösterimde ise AH, AL, BH, BL, CH, CL, DH, DL şeklinde ifade edilebilirler. Pointerlar 16 SP (stack pointer), BP(base pointer) Indexler 16 SI (source index), DI(destination index) Segmentler 16 CS (code segment), DS(data segment) SS (stack segment), ES(extra segment) Instruction 16 IP (instruction pointer) Flag 16 FR (flag register) Daha öncede belirttiğimiz gibi genel amaçlı registerlar ya yüksek değerlikli byte AH, yada düşük değerlikli byte AL şeklinde 8 bitlik durumlara ayrılabilir ama diğerleri 16 bitle gösterilmek zorundadır. ASSEMBLY PROGRAMLAMAYA GİRİŞ MAKİNE DİLİ: 0 ve 1leri içeren programa makine dili denir. Assembly Dilleri, makine kodu komutları için (mnemonics)hatırlatıcı kodlar sağlar. Mnemonics: Kodların yerini tutan kullanıcının kolay hatırlamasını sağlayan kısaltmalardır. Assembly Dili Programlama: Assembly Dili program, assebly diliyle yazılmış komutların bulunduğu satırlardan oluşur. Komut hatırlatıcı kod ve 2 adet işlemciden (üzerinde işlem yapılan değerler) oluşur MOV komutu MOV hedef, kaynak; kaynaktaki işlenen değeri hedefe kopyala. Example: (8-bit ) MOV CL,55H ;55H ı CL registerına kopyala/taşı. MOV DL,CL ;CL registerının içeriğini DL ye taşı (şimdi DL=CL=55H) Veri flag registerları hariç bütün registerlar arasında taşınabilir. Kaynak ve hedef registerlarının boyutları uyumlu olmalıdır. Veri sadece segment olmayan registerlar arasında direk taşınabilir. Veriyi segment registerlarına direk taşıyamayız. Örnekler: MOV BX,14AFH ; move 14AFH into BX (legal) MOV SI,2345H ; move 2345H into SI (legal) MOV DI,2233H ; move 2233H into DI (legal) MOV CS,2A3FH ; move 2A3FH into CS (illegal) (Kod segmente direk 2A3FH bilgisini yazmaya kalkmış, bunu önce normal bir registera yazmalı, oradan segment registerına aktarmalıydı) MOV DS,CS ;move the content of CS into DS (legal) 1

MOV FR,BX ;move the content of BX into FR (illegal) (Flag registerlarına asla veri taşınamaz) MOV DS,14AFH ;move 14AFH into DS (illegal) LECTURE 3 ADD Komutu ADD hedef, kaynak ; Kaynaktaki veriyle hedefteki veriy topla. Örnek: MOV AL,24H ; 24H ı AL registerına taşı MOV DL,11H ; 11H ı DL registerına taşı ADD AL,DL ;AL=AL+DL (AL=35H) (DL =11H) toplama işlemi sonucunda hedefteki değer değişirken, kaynak hala aynı değeri muhafaza etmektedir. Toplama işlemi direk bir registerdaki veriyle direk anlık veri arasında da yapılabilir. MOV CH,24H ADD CH,11H Program segmentleri Segment: Segment 64Kbyte kadar hafıza alanına sahip 16 ile bölünebilen adreslere sahip kısımlardır (16ya bölünebilmesi demek son bitin 0H olması demektir) Assembly Dili Programı 3 segment içerir: code segment : Program kodlarını (komutlarını) içeren kod segment data segment : program tarafından kullanılan veriyi saklamada kullanılan veri segmenti stack segment: Bilgiyi geçici olarak saklamakta kullanılan yığın segmenti. Lojiksel ve Fiziksel Adres: Fiziksel Adres 20 bitlik adrestir ve adres busla taşınır. 8086 için 00000H FFFFFH aralığına sahiptir. Offset Address ofset adresi 64 Kbytelik segment içindeki yeri gösterir. Sahip olduğu aralık 0000H FFFFH tır. Logical Address, Lojik Adresi, Segment adresi ve ofset adresini içerir. Kod segmentteki Adresleme Komutun lojik adresi CS (Code Segment) ve IP(instruction pointer) içerir CS IP (2500:95F3) Logical Address: Lojik Adresi: CS:IP (Burada IP ofset adresidir) Fiziksel adres CS in 1 hexadecimal basamak sola kaydırılması ve bunun IP ile toplanmasıyla bulunur. Örnek: CS:IP => 2500:95F3H 1. CS ile başla 2500 2. CS i sola kaydır 25000 (Sola kaydırmak demek sonuna bir sıfır eklemek demektir) 3. IP ile topla 2E5F3 (25000+95F3) Data segment Veri Segmenti Veri segmenti DS ve ofset değer kullanır. 8086 da BX, SI ve DI ofset adresini tutmada kullanılırlar. Little endian convention 2 bytelik veri taşınırken düşük değerlikli byte, düşük adres gözüne, yüksek değerlikli byte yüksek adres gözüne yazılır. Aşağıdaki örnekte 35FH verisi AX registerina taşınıyor. AX registerı ise veri segmentin 1500 nolu ofset adresine taşınacak, AX 2 byte olduğu için 1500 ve 1501 nolu adres gözlerini kullanır. 35F3H verisinin düşük değerlikli byteı F3 tür ve 1500 nolu yere bu değer, yüksek değerlikli byte olan 35 ise 1501 nolu veri segmentindeki hafıza gözüne kopyalanır. Ex: MOV AX,35F3H :load 35F3H into AX MOV [1500],AX : copy contents of AX to offset 1500H 2

DS:1500 = F3 DS:1501 = 35 Intel bu yapıyı kullanırken motorola bunun tersini kullanır ve adına Big endian convention denmektedir. LECTURE 4 IBM PC LERİN HAFIZA HARİTASI PC de bir programın yürütülebilmesi için, ilk olarak DOS bunu RAM e yazmalıdır. 8086/8088 de 20 bitlik adres var bu da toplamda 1 megabyte hafıza yapıyor. RAM: DOS işletim sistemi, Pcdeki RAMi öncelikle kendine tahsis eder, kalan başka uygulamalar için kullanılır. DOS un versiyonlarına göre farklı miktarda RAM hafızasına ihtiyaç duyulur. Bu nedenle CS, DS ve SS registerlarına herhangi bir değer atayamayız. Böylece bunların sabit bir fiziksel adresi olmaz. Diğer bir neden ise fiziksel adres atama verilen Pcde çalışırken başka bir DOS versiyonu ve RAM boyutu olan Pcde çalışmayabilir. Bu nedenle hafıza yönetimi, DOS işletim sisteminin en önemli fonksiyonlarından birisidir. Video RAM: A0000H dan BFFFFH (128 K) a kadar olan hafıza yerleşimi video için tahsis edilmiştir. Pcde yüklü olan ekran kartına bağlı olarak değişebilir. ROM: C0000H dan FFFFFH(256 K) adresine kadar olan kısım ROM için tahsis edilmiştir. Bunun 64 K lık (F0000H-FFFFFH arası) kısmı BIOS ROM içindir. Diğer kalan kısım, değişik adaptör kartları için kullanılır (harddisk gibi) Geri kalanı boştur. DOS ta 640 Kbytelik hafıza yeri 00000Hdan 9FFFFH a kadar geleneksel hafıza diğer 384 Kblık kısım ise yüksek hafıza bloğu diye adlandırılır. BIOS ROM un fonksiyonları: CPU hafızadaki programları yürütür, güç verildiği zaman CPUya ne yapması gerektiğini söyleyen programların tutulduğu kalıcı bir hafıza vardır. Bu programların tutulduğu ROMdaki yer BIOS olarak adlandırılır. BIOS, RAMi ve CPUya bağlı diğer elemanları test eden programları içerir. Ayrıca DOS ile çevresel cihazların (keyboard, monitor, printer vs) haberleşmesini sağlayan programlarda BIOStadır. Test yaptıktan ve çevresel ürünlerle bağlantı kurulduktan sonra BIOS DOS u diskten RAMe yükler ve PC nin kontrolünü DOS a devreder. STACK: PUSHING AND POPPING OPERATIONS Stack (Yığın) Stack, CPU nun bilgileri geçici sakladığı okunur/yazılır (RAM) hafızanın bir kısmıdır. CPU, sınırlı sayıda register olduğu için bu alana ihtiyaç duyar. Stackin dezavantajı, erişim zamanıdır. Stack RAMin içindedir ve buraya erişmek registerlarla karşılaştırıldığında çok zaman alır. Register CPUnun içinde iken RAMler dışındadır Stacklere nasıl erişilir? SS (stack segment) ve SP (stack pointer) registerları stacke erişmek için kullanılır. Bu registerlar stacke ulaşmak için herhangi bir komut uygulanmadan önce stacke yüklenmiş olmalıdır. 80x86daki her register (segment registerları ve SP hariç) stackte saklanabilir ve stackten CPUya geri getirilebilir. CPU registerini stackte saklamaya PUSH, stackteki içeriği CPU registerına yüklemeye POP denir. SP nin işi push ve pop işlemi yerine getirilirken çok önemlidir. 80x86da SP, o anki hafıza yerleşiminde stackin tepesinden itibareb veri sakladıkça azaltma yapar. Veri CPUya geri yüklenince de artırır. Stack LIFO (Last in First out, Son giren ilk çıkar) prensibiyle çalışır. Genel amaçlı bir register saklanırken veya geri yüklenirken tüm 16 bitlik register olmalıdır PUSH AX şeklinde olmalıdır, PUSH AL veya PUSH AH şeklinde asla yazılamaz. Programın kod kısmının ve stack kısmının birbirinin üzerine yazmamasını sağlamak için, RAM hafızasında farklı uçlarda bulunurlar. Birbirine doğru artar ama asla kesişmemelir aksi takdirde program göçer. 3

Tek bir fiziklsel adres birçok farklı lojik adresine ait olabilir. ÖNEMLİİİ: Eğer kaydırılmıl segment registerina eklenen offset adresi FFFFFH ın dışına çıkıyorsa, etrafını dolanır (overlapping) yani çıkan kısım 00000Hdan devam ediyor gibi olur. THE FLAG REGISTER (FR) AND BIT FIELDS 16 bitlik registerdır, bazı bitleri kullanılmaz. 6 bayrak durum bayrağıdır, herhangi bir komut uygulandıktan sonra durumu değişebilir. Bunlar: CF, PF, AF, ZF, OF ve SF tir. Diğer 3 bayrak ise kontrol bayraklardır. CF: Bir aritmetik işlemde, toplamadan sonraki eldeyi veya çıkarmadan sonraki ödüncü belirtir. PF: Bazı işlemlerden sonra düşük değerlikli bytetaki parity kontrolü yapılır. Çift sayıda 1 var ise PF 1 diğer durumlarda 0 dır. Hiç 1 bulunmaması da çift sayıda 1 bulunması demektir. AF: Yapılan bir işlem sonucunda bit pozisyonları 3 ve 4 arasında olan (en sağdaki bitin pozisyonu 0 dır. Yani...D4 D3D2D1D0 gibi düşüneceğiz.) toplamadan sonraki eldeyi veya çıkarmadan sonraki ödüncü belirtir. ZF:B ir aritmetik veya lojik işlem sonucunun sıfır olduğunu belirtir. Eğer ZF 1 ise sonuç sıfırdır. SF: ir toplama veya çıkarma işleminden sonra, sonucun aritmetik işaretini belirtir. Eğer SF 1 ise negatif 0 ise pozitiftir. Bayrakları etkileyen bir komuttan sonra en değerli bit pozisyonu SF bitine yerleştirilir. OF: Taşma, işaretli sayıların toplandığında veya çıkartıldığında oluşan bir durumdur. Taşma işlem sonucunun hedef saklayıcıya sığmadığını gösterir. TF: Eğer trap bayrağı 1 ise tüm devre hata takip işlemi devreye girer, bu zmaan içinde sadece bir komut yerine getirilir. IF: 1 olduğu durumda mikroişlemci dışarıdan gelen kesme isteğine cevap verir. DF: String komutları yürütülürken DI ve/veya SI saklayıcılarının artırılması veya azaltılması işlemlerinin seçimini kontrol eder. Eğer D 1 ise saklayıcılar otomatik olarak azaltılır ve eğer D 0 ise saklayıcılar otomatik olarak artırılır. LECTURE 5 Zero Flagin Döngüler için Kullanılması ZF döngülerde kullanılmaktadır. Döngü sayısı registera girerek her bir döngüde azaltma yapılır ve ZF 0 olduğu zaman döngü biter aşağıdaki örnekte görülebilir: Ex: MOV CX,05 ; CX holds the loop count MOV BX,0200H ; BX holds the offset data address MOV AL,00 ; initialize AL ADD_LP: ADD AL,[BX] ; add the next byte to AL INC BX ; increment the data pointer DEC CX ; decrement the loop counter JNZ ADD_LP ; jump to the next iteration if the counter not zero 80X86 ADRESLEME MODLARI CPU verilere değişik yollardan ulaşabilir bu adresleme modu diye adlandırılır. 80x86da 7 tane adresleme modu vardır 1. register 2. immediate 3. direct 4. register indirect 5. based relative 6. indexed relative 7. based indexed relative 1. Register adresleme modu: 4

Registerlar arası veri aktarılır. Registerların boyutları eşit olmalıdır. 2. Immediate addressing mode: Kaynak verisi sabittir. Segment registerları ve flag registerları hariç hepsine direk veri yazılabilir. 3. Direct addressing mode: 4. Register indirect addressing mode: Verinin hafızadaki adresi register tarafından tutulmaktadır. SI, DI ve BX registerları ofset adreslerini tutan pointerlar olarak kullanılır. DS ile birleştirilerek 20 bitlik fiziksel adresler elde edilir. 5. Based relative addressing mode: BX ved BP base registerları olarak kullanılır. Bu modda yerdeğiştirme yapıldıktan sonra efektif adres bulunur. Fiziksel adresi hesaplamak için DS te BX, SS te BP kullanılır. 6. Indexed relative addressing mode: Indeksli relative adresleme modu da based relative adresleme gibi çalışır, sadece burada ofset adreslerini tutan registerlar SI ve DI dir. 7. Based Indexed addressing mode: 5 ve 6 nolu adresleme modlarının birleşimidir, bir base register ve bir index register birlikte kullanılır. LECTURE 6 DIRECTIVES AND SAMPLE PROGRAMS Direktifler assemblera, assembly dilindeki komutları makine diline nasıl çevireceği hususunda yön gösterir. Assembly dili komutları 4 alan içerir [label:](etiket) mnemonic (hatırlayıcı kod) [operands] (işlem yapılanlar) [;comments] (açıklamalar) Direktifleri kullanan bir programda öncelikle segmentler tanımlanır ve yazılan program parçası hangi segmenti ilgilendiriyorsa onun altında yazılır, verileri tanımlarken data segmenti içinde programla ilgili kodlar var ise kod segment altında bunlar yazılır. Sizden direk bir şekilde direktifli program yazmanız sınavda istenmeyecektir. Belki direktifli bir programın analizini yapmanız istenebilir. DB 64 DUP (?) diye segmentin altında tanımlanan bu direktif stack e, 64 bytelik hafıza tahsis eder. Data segment definition Burada üç veri tanımlanmıştır. DATA1, DATA2 ve SUM. Her biri byte boyutunda tanımlanmıştı (DB byte tanımla demektir). DW: word uzunluğunda tanımlar. DATA1 ve DATA2 ilk değerlerine sahipten SUM için sadece yer tahsisi yapılmıştır. Code segment definition Kod segmentte Segment direktifinden sonra hemen PROC direktifi gelir. Prosedürün kısaltmasıdır. PROC ve ENDP direktifleri ay nı etikete sahip olmalıdır. DOS CS ve SS registerlarına otomatik karar verir ama veri registerları elle tanımlanmalıdır. LECTURE 7 FAR and NEAR : (given CS:IP) NEAR da kontrol, o anki kod segment içindedir, sadece IP değişir.değişir. Conditional Jumps Şartlı atlamada, gerekli iart yerine getirilince kontrol yeni yere taşınır. JC (jump if carry- eğer CF 1 ise atla) [CF kontrol edilir], JNZ (jump if not zero- Eğer ZF 0 değil ise atla) [ZF kontrol edilir]. Tablodan genel jumplara göz atmakta fayda var!!! NOT: above- yukarısında ve below-aşağısında 2 işaretsiz sayı arasındaki ilişkiyi gösterirken, greater-büyüktür ve less-küçüktür ise iki işaretli sayı arasındaki ilişkiyi gösterirken kullanılır ve bunlar atlama komutlarında ortaya çıkar. 5

Kısa Atlamalar Bütün şartlı atlamalar kısa atlamadır, atlanacak hedef adres o anki hafızanın -128 ile +127 bytelik sınırları arasında olmalıdır. Şartsız Atlamalar JMP label şartsız atlamanın komutudur, verilen etiketteki hedefe direl geçer, burada da şartlı atlamadaki gibi kısa atlama olursa -128 ile +127 byte arasında biryere, NEAR JUMP olursa aynı kod segment içinde herhangi bir yere, FAR JUMP olur ise bulunduğu kod segment dışındaki bir adrese atlar. CALL STATEMENTS Başka bir kontrol transfer komutu da CALL dır. Bir procedure çağırmak için kullanılır. Yine aynı şekilde aynı segment içinde veya dışından çağırmasına göre NEAR veya FAR ile gösterirlir. Çağrılan altprogram yerine getirildikten sonra mikroişlemci nereey geri döneceğini bilir, çünkü sıradaki adresi mikroişlemci otomatik olarak stacke kaydeder. Çağrılan alt programın son komutu RET olmalıdır ki CPU direk buradan stackteki adresi alıp oraya geçiş yapabilsin. DATA TYPES AND DATA DEFINITION Assembler Data Directives ORG (Origin) : ORG ofset adresinin başlangıcı göstermek için kullanılır. ORGtan sonra hexadecimal yada onluk formda sayı yazılabilir, daha çok veri segmentinde kullanılır. DB (define byte) : DB, hafıza byte uzunluğunda yerleri onluk, ikilik, ASCII, Hexadecimal sayılar için tahsis eder.eğer aşağıdaki örnekteki gibi sayının sonuna hiçbirşey yazılmamışsa bu direk onluk olur, sayının sonuna onluk olduğunu göstermek için D yazma zorunluluğu yoktur. Diğerlerini belirtmek zorundasınız!!! DUP (duplicate) : DUP verilen sayıda karakteri çoğaltmaya yarar, mesela 4 tane OFFH tanımlayana kadar bunu aşağıdaki örnekte görüldüğü üzere DUP ile kolayca yapabiliriz Örnek: DATA1 DB 0FFH,0FFH,0FFH,0FFH ;FILL 4 BYTES WITH FF DATA2 DB 4 DUP(0FFH) ;FILL 4 BYTES WITH FF Ex: DATA3 DB 32 DUP (?) ;32 bytelik alan tahsis ediyor DATA4 DB 5 DUP (2 DUP (99)) ;10 byte ı 99 sayısıyla doldur. DW(define word) : DW 2 byte (1 word uzunluğu) uzunluğundaki verileri tanımlamada kullanılır, DUP burada da aynı şekilde kullanılabilir. EQU(equate) : EQU hafızada herhangi bir yeri işgal etmeden sabit bir sayı tanımalamayı sağlar. Burada daha sonra sayıda değişiklik yapılmak istenirse sadece EQUdan sonraki değişince otomatik olarak bütün COUNT değerlerimiz yeni sayımız olacaktır. Program içinde tek tek gerekli yeri bulup sayıyı değiştirmeye gerek kalmamış olacaktır. Örnek: COUNT EQU 25 MOV CX,COUNT DD(define doubleword) : Buda ikili word uzunluğunda yani 4 bytelik alan tahsisi yapar. Diğer tanımlamalara da bakılabilir. LECTURE 8 İŞARETSİZ TOPLAMA İşaretsiz sayılarda bütün bitler veriyi tanımlamada kullanılır, pozitiflik negatifliği gösteren bir işaret biti bulunmaz. 8 bit için 00H dan FFHa kadar yani 0-255 arası onluk sayılr şeklinde gösterilebilir. 16 bit için ise 0000Hdan FFFFHa kadar hexadecimal sayılar gösterilebilir. ADD: İşaretsiz sayıların toplanması Format: ADD hedef,kaynak ; hedef yeri = hedefteki sayı + kaynaktaki sayı. Toplama işlemi ardında flaglerin bazılarında değişim olur. Aşağıdaki örnekte bu açıkça görülebilir: 6

Örnek: MOV AL,0F5H ADD AL,0BH Solution: F5 1111 0101 + 0B + 0000 1011 100H 0000 0000 After the addition AL will contain 00 and the flags are as follows. CF = 1 since there is a carry out from d7 SF = 0 the status of d7 of the result PF = 1 AF = 1 ZF = 1 ADC: Add with carry- Elde ile Topla Format: ADC hedef,kaynak ; hedef yeri = hedefteki sayı + kaynaktaki sayı + CF Kaynak hedefi 1 ile toplar, 0 ise 0 ekler. Çoklu byte ve çoklu word toplamalarında kullanılır. LECTURE 9 İŞARETSİZ SAYILARDA ÇIKARMA Format: SUB hedef,kaynak ; hedef yeri = hedefteki sayı - kaynaktaki sayı Çıkarma işleminde 2ye tümleyen yöntemi kullanılır. SUB komutunun yerine getirilmesi süreci: 1. Çıkan sayının 2ye tümleyenini al (çıkan sayı kaynaktaki sayı oluyor) 2.Bunu çıkartılan sayı ile topla (hedefteki sayı) 3. Eldeyi ters çevir, yani 0 ise 1, 1 ise 0 yap. Ex: MOV AL,3FH ; load AL=3FH MOV BH,23H ; load BH=23H SUB AL,BH ; subtract BH from AL. Place result in AL Execution steps: AL 3F 0011 1111 0011 1111 BH 23 0010 0011 + 1100 0001 (2 ye tümleyen) 1C 0001 1100 1 0001 1100 (CF=0) Step 3 CF=0, ZF=0, PF=0, SF=0. Eğer CF=0 ise sonuç pozitiftir ve hedefteki sayı sonuçtur. Eğer CF=1 ise sonuç negatiftir ve hedefteki sayının 2ye tümleyeni sonuçtur. NOT ve INC komutları bunu değiştirmede (tümleyen almada) kullanılabilir. Burada NOT komutu 0ları 1, 1leri 0 yapmaktadır, buda 1e göre tümleyendir bu sonucu 1 artırmak için INC kullanılır bu durumda ikiye göre tümleyen alınmış olur. Bununla ilgili örneğe notlardan bakılabilir. SBB (subtract with borrow)- Ödünç ile Çıkarma SBB hedef,kaynak ; hedef yeri = hedefteki sayı - kaynaktaki sayı CF Çoklu byte veya çoklu word sayılarında kullanılır. Eğer CF=0 ise SBB aynı SUB gibi çalışır Eğer CF=1 ise, SBB sonuçtan 1 çıkartır. İŞARETSİZ SAYILARIN ÇARPIMI VE BÖLMESİ işaretsiz sayılarda çarpma byte x byte : Burada çarpım yapılan terimlerden birisi AL (AL registerı) olmak zorundadır.diğer çarpılan register yada hafızadaki bir değer olabilir. Çarpım sonucu AX registerina yazılır. Unutulmamalıdır kı bytexbyte boyutundaki çarpımın sonucu word uzunluğunda çıkabilir. word x word : 7

Çarpılan sayılardan biri AX registerında bulunmak zorundadır. Diğer çarpılan sayı registerda veya hafıza gözünde bulunabilir. Çarpım sonucunun düşük wordü AX registerına yüksek değerlikli wordü ise DX registerına kaydedilir. word x byte : word ile byte çarpımı word word çarpımına benzerdir, sadece AL registeri byte olan terim olur ve AH registeri 0 olmalıdır. Diğer sayı yukarıdaki gibi olur. Sonuçlarda aynı şekilde kaydedilir. işaretsiz sayıların Bölmesi 1. Byte / byte Pay AL registerında bulunmalı ve AH registerı 0 olmalıdır. Payda asla direk sayı olamaz, hafıza gözündeki veya bir registerdaki bir değer olabilir. Bölme işleminden sonra bölüm AL registerına yazılır, AH registerina ise kalan yazılır. Bölme işleminde DIV BL yazdığımızda direk AX teki sayıyı Bldeki sayıya böler, komut otomatikten Axteki sayıya bölmektedir. 2. word / word Pay AX registerında bulunmalı ve DX registerı 0 olmalıdır Payda, hafıza gözündeki veya bir registerdaki bir değer olabilir. Bölme işleminden sonra bölüm AX registerına yazılır, DX registerina ise kalan yazılır. 3. word / byte Pay AX registerında bulunmalı Payda hafıza gözondeki yada registerdaki bir sayı olabilir. Bölme işleminden sonra bölüm AL registerına yazılır, AH registerina ise kalan yazılır. 4. doubleword / word Pay AX ve DX registerı olmalı, düşük değerlikli word AX, yüksek değerlikli word ise DX e yazılır. Payda hafıza gözündeki yada registerdaki bir sayı olabilir Bölme işleminden sonra bölüm AX registerına yazılır, DX registerina ise kalan yazılır. 5. Divide Error : Eğer payda 0 sayısına bölünmeye kalkarsa bu hatayı verir, aynı şekilde bölüm tahsis edilen registera sığmazsa da bu hata mesajı çıkar. LOGIC INSTRUCTIONSLOJIK KOMUTLARI AND AND hedef,kaynak ; hedef = hedef & kaynak, Hedef ile kaynaktaki sayılar AND işlemine tabi tutulur ve sonuç hedefe yazılır. Aşağıdaki örnekte AND işlemi sonucu sonuç sıfır olunca başka bir etikete atlamasını sağlıyor Ex: AND DH,DH JZ NEXT. NEXT:. This operation will AND DH with itself and if the result is zero set ZF=1 jumping to NEXT. OR OR hedef,kaynak ; hedef = hedef & kaynak, LECTURE 10 ARITHMETIC AND LOGIC INSTRUCTIONS AND PROGRAMS XOR XOR hedef,kaynak ; hedef = hedef & kaynak, XOR komutu registerların içeriğini kendisiyle XORlayarak temizlemede kullanılabilir. XOR ile iki registerin aynı değerde olup olmadığını da anlayabiliriz. 8

XOR işlemi yapıldığında terimlerden birisini 0 lardan oluşan bitlerden seçerek diğer terimde hangi bitin değerinin tersinin olmasını istiyorsak orayı 1 yaparak değişiklik yapabiliriz. The XOR instruction can be used to toggle bits of an operand. Ex: XOR BL,04H ; XOR BL with 000 0100 Çözüm: Burada sadece 1 bitinin olduğu D2 biti BL de değişir, diğer değerleri aynı kalır. SHIFT SHR hedef,kaynak ;sağa kaydır Bu lojiksel olarak sağa kaydırır. Terim sağa doğru her işlemde bir bit kayar, her kayma sonrasında en düşük değerlikli bitin değeri CF e yazılır ve en yüksek değerlikli bite 0 yazılır. Örnek: MOV AL,9AH MOV CL,3 ;set number of times to shift SHR AL,CL Solution: 9AH 10011010 01001101 CF=0 (shifted once) 00100110 CF=1 (shifted twice) 00010011 CF=0 (shifted three times) 3 defa kaydırıldıktan sonra, AL=13H and CF=0 kaydırma yapılacak hedef terimi register yada hafıza gözündeki bir değer olmalıdır. Direk sayı kaydırılamaz. Eğer sadece 1 defa kaydırılacaksa direk SHR AL,1 yazabiliriz ama 1den fazla kaydırılacaksa bu kaydırma sayısının CL registerına yazılması gerekir ve işlemi SHR AL, CL şeklinde yapmalıyız. SHL hedef,kaynak ;sola kaydır Bu lojiksel olarak sola kaydırır. Terim sola doğru her işlemde bir bit kayar, her kayma sonrasında en düşük değerlikli bitin değerine 0 yazılır ve en yüksek değerlikli bitte bulunan değer CF e aktarılır. Örnek: MOV DH,6 MOV CL,4 ;kaydırma sayısı belirleniyor SHL DH,CL Solution: 00000110 CF=0 00001100 (shifted left once) CF=0 00011000 CF=0 00110000 CF=0 01100000 (shifted left 4 times) After the 4 shifts DH=60H and CF=0. kaydırma yapılacak hedef terimi register yada hafıza gözündeki bir değer olmalıdır. Direk sayı kaydırılamaz. Eğer sadece 1 defa kaydırılacaksa direk SHL AL,1 yazabiliriz ama 1den fazla kaydırılacaksa bu kaydırma sayısının CL registerına yazılması gerekir ve işlemi SHL AL, CL şeklinde yapmalıyız. İŞARETSİZ SAYILARIN KARŞILAŞTIRILMASI CMP hedef, kaynak ;kaynak ile hedefi karşılaştır. Terimler değişmeden kalır. hedef terimi register yada hafıza gözündeki bir değer olmalıdır, kaynak terimi ise registerdaki, hafıza gözündeki sayı olabileceği gibi direk bir değerde olabilir CMP komutu 2 terimi karşılaştırır ve duruma göre bayraklar değişir: Burada bizi ilgilendiren bayraklar CF ve ZF tir. CMP komutunun bayraklara etkisi 9

Terimleri karşılaştır. CF ZF HEDEF>KAYNAK 0 0 HEDEF=KAYNAK 0 1 HEDEF<KAYNAK 1 0 BCD VE ASCII KARAKTERLERİ ÖNEMLİ BUNLARA NOTLARDAN BAKIN. ASCII den BCD ye Çevirme ASCII den paketsiz BCD ye Çevirme 0 dan 9 a kadar olan sayıların ikilik gösterimine BCD denir. 2 tip BCD vardır: 2 tip BCD sayısı vardır, (1) paketsiz BCD (2) paketli BCD Paketsiz BCD: 4 bitlik BCD kodu için 1 byte kullanılırörneğin 9 sayısı paketsiz BCD gösteriminde 0000 1001 şeklinde ifade edillir. Paketli BCD: 2 tane 4 bitlik BCD kodu için 1 byte kullanılır. Mesela 59 sayısı paketli BCD olarak 0101 1001 şeklinde gösterilir. ASCII koduyla gösterilen rakamları BCD ye çevirmek için yüksek değerlikli 4 bitin bulunduğu yerdeki 0011 atılmalıdır. Bunu yapmak için ASCII sayısı 0000 1111 (0FH) ile AND işlemine sokulur. ASCII den paketli BCDye çevirme ASCIIyi paketli BCDye çevirmek için ilk olarak başındaki 011 atılarak paketsiz BCD ye çevrilir. Sonra birleştirilip paketli BCD yapılır. Paketli BCD yi ASCIIye Çevirme Paketli BCDyi ASCIIye çevirmek için önce paketsiz BCDye çevrilmeli sonra da 011 0000 (30H) eklenmelidir. NOT: BCD DEN ASCIIYE, ASCIIDEN BCDYE ÇEVİRME KONUSUNU İYİ ÇALIŞINNNN DERİM, SORU FALAN SORABİLİRİM ) LECTURE 11 BCD TOPLAMA VE DÜZELTME Bazen iki BCD sayısının toplamı BCD sayısı olmaz, bu problemi çözmek için BCD sayısı olmayan kısımdaki nibble a onluk 6 sayısı (0110) ekleriz. Bunun örneklerine bakınız!! Ayrıca bu düzeltmeyi yapan özel bir komutta vardır DAA ;Toplama için ondalık ayarlama DAA eğer gerekli ise, 6 sayısını düşük veya yüksek değerlikli nibble a ekleme işini yapar. DAA sadece ADD ve ADC komutlarından sonra çalışır. Ek olarak DAA nın çalışabilmesi için hedef terimi AL registerı olmak zorundadır. BCD toplamada herhangi bir basamak 9 dan büyük değer alamaz. Summary of DAA action 1. Eğer ADD ve ADC komutu sonrası düşük değerlikli bit 9dan büyük, veya AF=1 ise düşük değerlikli 4 bite 0110 ekler. 2. Eğer yüksek değüerlikli nibble 9dan büyük veya CF=1 ise yüksek değerlikli nibble a 0110 ekler. AF (Auxiliary carry Flag) sadece BCD toplama ve düzeltmede kullanılır. BCD Çıkarma ve Düzeltme DAS ; Çıkarma için Onluk Düzeltme Paketli BCD sayılarının toplanmasında karşımıza çıkan bu problem çıkarma işleminde de olmaktadır.das bu problemi düzeltmek için kullanılır. DAS, SUB veya SBB komutlarından sonra gelmelidir. 10

Ek olarak DAS nın çalışabilmesi için hedef terimi AL registerı olmak zorundadır. Summary of DAS action 1. Eğer SUB veya SBB komutu sonrası düşük değerlikli bit 9dan büyük, veya AF=1 ise düşük değerlikli 4 bitten 0110 çıkarılır. 2. Eğer yüksek değerlikli nibble 9dan büyük veya CF=1 ise yüksek değerlikli nibble dan 0110 çıkarılır. DÖNDÜRME KOMUTLARI ROR rotate right Sağa döndür Burada en düşük değerlikli bit hem en yüksek değerliklikli bite gelir hem de CF e kopyalanır. CL döndürme sayısını tutar. Sadece 1 defa döndürülecekse CL ye gerek yoktur. Bunlarla ilgili örneklere iyi bakın arkadaşlar!!!! ROL rotate left Sola döndür MSB En yükske değerlikli bit en düşük değerlikli bite geçer ve aynı zamanda CF e kopyalanır. CL döndürme sayısını tutar. Sadece 1 defa döndürülecekse CL ye gerek yoktur. Bunlarla ilgili örneklere iyi bakın arkadaşlar!!!! RCR rotate right through carry Sağ tarafa carry (elde) üzerinde döndürme En düşük değerlikli bit CF ye geçer, CF deki değerde En yüksek değerlikli bite geçer. CL döndürme sayısını tutar. Sadece 1 defa döndürülecekse CL ye gerek yoktur. RCL rotate left through carry En yüksek değerlikli bit CF e geçer, CF deki değerde en düşük değerlikli bite yazılır. Burada dikkat edilecek iki komut var bilginiz olması açısından, CLC komutu CF i temizler bu komut sonrası 0 olur. STC komutu ise CF i 1 yapar. Bunlar bazı program yazma konusunda başlangıç değerleri verme adına gerekebilir. CL döndürme sayısını tutar. Sadece 1 defa döndürülecekse CL ye gerek yoktur. LECTURE 13 İŞARETLİ SAYILARDAKİ ARİTMETİK İŞLEMLER İşaretli sayılarda en yüksek değerlikli bit sayının pozitif veya negatif olduğunu gösterir. En yüksek değerlikli bit 1 ise sayı negatif 0 ise pozitiftir. Pozitif Sayılar: 8 bitle gösterilen pozitif sayılar 0dan 127ye kadardır. Eğer pozitif sayı 127den büyükse word boyutunda terimler kullanılmalıdır. Negatif Sayılar: 8 bitlik negatif sayıda en yüksek değerlikli bit 1dir ve sayının büyüklüğü 2ye tümleyeni ile bulunur. Bunu assembler kendi yapmasına karşı nasıl yapıldığını bilmekte fayda var. Negatif sayı gösterimini bulmak için 1.sayının büyüklüğünü 8 bit olarak işaretsiz yaz. 2. Her bir bitin tersini al, yani 1leri 0 sıfırları 1 yap. 3. bunu 1 ile topla -5 sayısının nasıl yapıldığını görmek için bu örneğe bakabiliriz. 1. 0000 0101 5 in 8-bit binary 2. 1111 1010 invert each bit 3. 1111 1011 add 1 (hex = FBH) Word-sized byte operands: Word boyutunda işaretli sayılarda temsil ettiği aralıkta genişleyecektir 32768 ten +32767 e kadar.daha büyük sayılar için çoklu word terimleri seçilmelidir. İşaretli sayı işlemlerindeki Taşma (overflow) problemi 11

İşaretli sayılarla işlem yaparken taşma problemi oplabilir. Bu problem, eğer sonuç işlemden sonra register için çok büyükse olur.bu durumda CPU, OF bayrağını bir yapar ve programcı buradaki mesajı anlamalıdır. Aşağıdaki örnekte görülebilir. Ex: DATA1 DB +96 DATA2 DB +70 MOV AL,DATA1 ;AL=0110 0000 (60H) MOV BL,DATA2 ;BL=0100 0110 (46H) ADD AL,BL ;AL=1010 0110 (AL=A6H=-90 invalid!) + 96 0110 0000 + 70 0100 0110 +166 1010 0110 According to the CPU this is 90, which is wrong.(of=1, SF=1, CF=0) 3 Daha önce de söyledipimiz gibi 8 bitle gösterilen en büyük pozitif sayı 127 oldugundan 166 sayısı gosterilemez. Programcı Ofdeki durumdan bunu anlar. When the OF is set in 8-bit operations 8-bitlik işlemlerde OF nin 1 olduğu durumlar İki durumdan biri olursa OF=1 olur 1. D6 bitinden D7 bitine geçerken (unutmayın en yüksek değerlikli bit D7 en düşük D0 idi) elde oluşuyor ama D7den elde oluşmuyorsa yani CF=0 ise. 2. D7 den elde oluşuyorsa yani CF=1, fakat D6 dan D7 ye elde geçmiyorsa. OF in 16-bit operations 16-bitlik işlemlerde OF nin 1 olduğu durumlar İki durumdan biri olursa OF=1 olur 1. D14 bitinden D15 bitine geçerken (unutmayın en yüksek değerlikli bit D15 en düşük D0 idi) elde oluşuyor ama D7den elde oluşmuyorsa yani CF=0 ise. 2. D15 ten elde oluşuyorsa yani CF=1, fakat D14 ten D15 e elde geçmiyorsa. İşaretli sayılarda hatalı sonuçlardan kaçınma Problemden kaçınmak için terimi genişletebiliriz. Ya uzattığımız terimin tamamı işaret bitlerini bulundurur yani en düşük değerlikli byte dediğimiz D7yi yüksek değerlikli yeni uzatma sonucu oluşan yüksek değerlikli bytetaki bütün bitlere yazarız. 16 bitlik register içinse işaret bitini başka bir registara kopyalabiliriz. İşaret uzatma için iki komut kullanılır: CBW ; Convert signed Byte to signed Word işaretli byte ı işaretli worde çevir CBW, AL registerindaki D7deki değeri, AH registerının bütün bitlerine kopyalar. Notice that the operand is assumed to be AL and the contents of AH is destroyed. Ex: MOV AL,+96 ;AL = 0110 0000 CBW ;now AH= 0000 0000 and AL=0110 0000 Ex: MOV AL, 2 ;AL = 1111 1110 CBW ;now AH= 1111 1111 and AL=1111 1110 CWD ; Convert signed Word to signed Doubleword işaretli wordü işaretli double worde çevir CWD, AX registerındaki D15deki değeri (the sign flag) DX in bütün bitlerine kopyalar. Bunlarla ilgili örnekleri incelersiniz. BU NOTLARA ÇALIŞMAK TEK BAŞINA SINAVDAN İYİ BİR NOT ALMAYA YETMEYEBİLİR, İNGİLİZCE NOTLARDAKİ ÖRNEKLERİ ANLAMANIZ GEREKEBİLİR. BAŞARILAR... 12