Bölüm 4 Veri Aktarma Komutları

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

8086 Mikroişlemcisi Komut Seti

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

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar

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

Ders 3 ADRESLEME MODLARI ve TEMEL KOMUTLAR

BM-311 Bilgisayar Mimarisi

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

MTM 305 MĠKROĠġLEMCĠLER

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

MTM 305 MĠKROĠġLEMCĠLER

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

MTM 305 MĠKROĠġLEMCĠLER

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

Assembly Programlama Dili T e m m u z

Quiz:8086 Mikroişlemcisi Mimarisi ve Emirleri

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

Mikrobilgisayar Mimarisi ve Programlama

Program Kontrol Komutları. Mikroişlemciler ve Mikrobilgisayarlar 1

BM-311 Bilgisayar Mimarisi

MTM 305 MİKROİŞLEMCİLER

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

Assembly. Programlama Dili. T e m m u z

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

Komutların Yürütülmesi

b) Aritmetik İşlem Komutları

Bileenler arasndaki iletiim ise iletiim yollar ad verilen kanallar yardm ile gerçekleir: 1 Veri Yollar 2 Adres Yollar 3 Kontrol Yollar

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

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

İ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

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

İşletim Sistemlerine Giriş

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

x86 Ailesi Mikroişlemciler ve Mikrobilgisayarlar

Merkezi İşlem Birimi MİKROİŞLEMCİ SİSTEMLERİ. MİB Yapısı. MİB in İç Yapısı. MİB Altbirimleri. MİB in İç Yapısı

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

K uark projesi. Temel Özellikler :

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

Aritmetiksel Komutlar

Mikrobilgisayar Donanımı

MTM 305 MĠKROĠġLEMCĠLER

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

MTM 305 MİKROİŞLEMCİLER

6. Mikroişlemcili Geliştirme Sistemleri

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

CISC Complex Instruction Set Computers

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

Linux Assembly Programlamaya Giriş

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

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

MIKRODENETLEYICILER. Ege Üniversitesi Ege MYO Mekatronik Programı

BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi

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

Basit Bootstrap Uygulaması

Adresleme Yöntemleri MİKROİŞLEMCİ SİSTEMLERİ. İşlenenin Yeri. Örnek MİB Buyruk Yapısı. İvedi Adresleme. Adresleme Yöntemleri. Bellek. Kütükler.

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

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

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

İşletim Sistemlerine Giriş

Adresleme Yöntemleri MİKROİŞLEMCİ SİSTEMLERİ. Örnek MİB ile Adresleme. Adresleme Yöntemleri. Doğal Adresleme. İvedi Adresleme

Mikroişlemcili Sistemler ve Laboratuvarı 8.Hafta

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

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

DERS 3 MİKROİŞLEMCİ SİSTEM MİMARİSİ. İçerik

DIGIAC 2000 Deney Seti PAT İŞLEMCİ KARTI :

Merkezi İşlem Birimi MİKROİŞLEMCİ SİSTEMLERİ. MİB Yapısı. MİB Altbirimleri. Durum Kütüğü. Yardımcı Kütükler

Bölüm 8: Ana Bellek. Operating System Concepts with Java 8 th Edition

MTM 305 MĠKROĠġLEMCĠLER

LCD (Liquid Crystal Display)

MTM 305 MĠKROĠġLEMCĠLER

İşletim Sistemlerine Giriş

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

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

MTM 305 MİKROİŞLEMCİLER

DERS 11 PIC 16F84 ile ALT PROGRAMLARIN ve ÇEVRİM TABLOLARININ KULLANIMI İÇERİK. Alt Program Çevrim Tabloları Program Sayıcı ( Program Counter PC )

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

MİKROİŞLEMCİ MİMARİLERİ

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

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

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.

PIC16F877A nın Genel Özellikleri

BQ Modbus Analog Giriş Kartı 6 Kanal 4 20mA. Kullanım Kılavuzu. Doküman Versiyon: BQTEK

80x86 MICROPROCESSOR Instructions

PROGRAMLAMAYA GİRİŞ DERS 2

BM-311 Bilgisayar Mimarisi

İşletim Sistemleri (Operating Systems)

Mikrobilgisayar Sistemleri ve Assembler

Assembly Language Programming

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

Von Neumann Mimarisi. Mikroişlemciler ve Mikrobilgisayarlar 1

80X86 SEMBOLİK MAKİNA DİLİ

Çalışma Açısından Bilgisayarlar

MapCodeX MapLand Kullanım Kılavuzu

Şekil 9.1 IP paket yapısı

Bilgisayarların Gelişimi

Windows Eski Sürümleri Bellek Yapısı

Göstericiler (Pointers)

Transkript:

Bölüm 4 Veri Aktarma Komutları

4.1. Giriş Veri aktarma komutları genel olarak MOV olarak adlandırılmıştır. Bunun dışında sayı yüklendiğinde LOAD, Yığın kullandığında POP, PUSH, I/O birimlerinden veri aktarmada IN, OUT şeklini alır.

Makine dili Mikroişlemci ikilik (binary) sayı kullanır. İkilik sayılarla yazılmış programa makine dili olarak adlandırılır. Makine dilinde yazılmış programlar 1 ile 13 bayt genişliğinde olabilir. Adresleme modları ile birlikte 100,000 den fazla makine dili komutu bulunmaktadır. Tam listesini elde etmek mümkün değildir. Makine kodu içerisinde komutun çeşidi, işlem yapılacak bellek veya yazaç adresi ve komutun işleyişi hakkında bilgi içerir.

Şekil 4 1 8086 Core2 komutunun formatı. (a) 16-bit, (b) 32-bit. 80386 ve üst sürümleri real modda çalışırken (sadece DOS ta bu modda çalışır) komutların 16 bit formunda olduğunu kabul ederler. Korumalı (protected) modda (Windows bu modda çalışır), descriptor ın YDB ında yer alan D-biti komutun 16 veya 32-bit olduğunu belirtir.

Opcode (Operation Code) Komutta yapılan işlemi tanımlayan ikilik koda verilen isimdir.(addition, subtraction, gibi) 1 veya 2 bayt uzunluğunda olabilir. Şekil 4 2 bir çok komutta geçerli olan opcode un birinci baytının yapısı gösterilmiştir. İlk 6 bit yapılacak işlemi tanımlar. Geri kalan iki bit ise veri akışının yönünü (direction, D) ve verinin Bayt mı? yoksa Word mü? Belirtir (W).

Şekil 4 3 makine dili komutunun ikinci baytının görev bölümü.

MOD kısmı Adresleme modunu belirtir. Eger MOD kısmıan 11, içeriyorsa yazaç adresleme modu seçilirdir. Yazacın adresi R/M kısmında belirlenir. Eğer MOD kısmı 00, 01, or 10, içeriyorsa R/M kısmı bellek adresleme modlarından birini seçer.

Figure 4 4 makine dili kodu 8BEC olan komutun açılımı. MOV BP,SP. 100010, opcode MOV komutuna karşılık gelir. REG kısmı 101 içeriyor ve BP, yazacının adresidir.

Eğer MOD kısmı 00, 01 veya 10, olduğunda R/M alanının anlamı değişir. Şekil 4 5 16-bit formdaki MOV DL,[DI] or instruction (8AI5H). This instruction is 2 bytes long and has an opcode 100010, D=1 (to REG from R/M), W=0 (byte), MOD=00 (no displacement), REG=010 (DL), and R/M=101 ([DI]).

R/M bellek adresleme Şekil 4 5 A MOV DL,[DI] komutunun makine dili kodu. Eğer komutu MOV DL, [DI+1], şeklinde değiştirirsek, MOD alanı 01 olarak değişir, diğer bitlerde değişim olmaz. Komut 8A5501H şekline gelir.

Şekil 4 6 MOV [1000H],DI komutunun özel adresleme modu kullandığında makine dili kodu.

Şekil 4 7 The MOV [BP],DL adresi BP yazacına yüklediğimizde aldığı durum.

32-Bit Addresleme Modları 80386 ve üst sürümlerinde yer alır. scaled-index baytı scaled-index adres bilgilerini içerir. Bu adreslemede komutun adresini belirlemek için iki yazacın içeriği toplanır. scaled-index komutu 2 15 (32K) olası kombinasyona sahiptir. Bunun anlamı 80386 ve üst sürümlerinde 32 000 faklı MOV komutu yazılabilir demektir.

Şekil 4 8 scaled-index bayt index ve base alanları ikisi de yazaç numaralarını içerir.

İvedi adresleme MOV WORD PTR [BX+1000H],1234H 1234H sayısını 1000H, BX, ve DS x 10H toplamı ile elde edilen 16 bitlik belleğe yüklenir.

Şekil 4 9 MOV WORD PTR, [BX+1000H] 1234H makine dili kodu

Segment MOV komutları Eğer segment yazaçlarının içerikleri MOV, PUSH veya POP komutlarından biri ile aktarılıyorsa REG kısmı segment yazacını seçer. segment yazaçlarına ivedi sayı yükleyen MOV komutu yoktur. Yüklemek istediğinizde önce diğer yazaçlara yükleyip sonra segment yazaçlarına aktarmanız gerekiyor.

Şekil 4 10 A MOV BX,CS komutunun makine dili kodu. Segment yazaçlarına sadece 16 bit yazaçlardan veya 16 git genişliğindeki bellekten veri aktarımı yapılabilir.

Pentium 4 ve Core2 64-Bit Modda Mov komutları 64-bit modda, REX (register extension) olarak tanımlanan ön ek eklenmiştir. Bunun amacı REG ve R/M kısımlarının anlamlarını değiştirmektir. REX R8 - R15 yazaçlarına ulaşmak için zorunludur.

Şekil 4 11 REX scaled index olmadan kullanımı.

Şekil 4 12 scaled-index byte ve REX prefix 64-bit işlemlerde birlikte kullanımı

4 2 PUSH/POP LIFO (last-in, first-out) bellekten veri okumak ve bu belleğe veri yazmak için kullanılan komutlardır. PUSH ve POP komutlarını bellekte, ivedi sayıda, segment yazaçlarında flaglar ve diğer yazaçlarda kullanabilirsiniz. PUSH ve POP, PUSHA ve POPA 80286 - Core2 olan sürümlerde mevcuttur. Segment yazaçlarının içeriklerini yığında saklayabilir ve geri alabilirsiniz. ES yazacı yığına atılabilir fakat geri çekilemez. Bayrakların bulunduğu Flag yazacı yığına atılabilir ve yığından çekilebilir.

PUSH Yığına 2 bayt veri aktarır; 80386 ve üst sürümlerinde 2 veya 4 bayt olabilir. Şekil 4 13 PUSH AX komutunun işleyişi

PUSHA (PUSH ALL) PUSHA (push all) komutu segment yazaçları dışındaki yazaçları yığına atar. 16 bit yazaçların hepsinin yedeklenmesi gerektiğinde kullanışlı bir komuttur. PUSHAD komutu 80386 - Core2 işlemcilerde 32 yazaçları yığına atar. PUSHAD 32 baytlık yığın alanı kullanır

POP PUSH komutunun yaptığı işlemin tersini yapar. POP yığından 16 bit veriyi 16 bit yazaçlara, 16 bit belleğe veya segment yazaçlarına aktarır. İvedi adreslemede POP komutu kullanılmaz. POPF (pop flags) komutu 16-bit sayıyı yığından alır ve flag yazacına yazar. POPFD komutu ise 32-bit sayıyı yığından alır ve extended flag yazacına yazar.

POPA (pop all) komutu 16 baytı yığından alır ve sırayla DI, SI, BP, SP, BX, DX, CX ve AX yazaçlarına yazar.

Şekil 4 15 The POP BX komutunun işleyişi.

Yığının Ayarlanması Yığın ayarlanırken hem yığın segment yazacına (SS) hem de yığın gösterge yazacın (SP) başlangıç değerleri yüklenir.

Şekil 4 16 PUSH CX komutunun işleyişi, yığının yapısı belleğe göre terstir, yığına veri atıldıkça stack pointerın içeriği azalır, çekildikçe artar. Yığın silindirik bir yapıya sahiptir, 0000 adresine ulaşıldığında yığın kullanılmaya devam ettiğinde stack pointerın içeriği bir azaltılır ve FFFF olur.

Assembly dilinde stack segmentin ayarlanması: Birinci statement segmentin başlangıç adresini belirler. İkinci statement ise yığının en üst adresini belirler. Assembler ve linker programları yığının başlangıç adresini stack segment yazacına yığının uzunluğunu SP yazacına yerleştirir. Program içerisinde komutla bu yazaçların içeriklerinin değiştirilmesi gereksiz bir işlemdir.

Yığın tanımlamaları yapılmadı ise programın link edilmesi sırasında bir uyarı verilecektir. Belleğin segmentler arası paylaşımını gösteren bilgiler program segment prefix, PSP), her program dosyasının başına eklenir. Yığın için gereğinden fazla bellek kullanılması halinde PSP içerisindeki bilgilerin silinme olasılığı vardır.

4 3 Efektif Adresin Yüklenmesi (LOAD EFFECTIVE ADDRESS) LEA, komutu 16 bit yazaçlara offset adresi yükler. Adresin alınacağı yer adresleme modu ile belirtilir. LDS ve LES komutları belllekten önce offset adresi 16-bit yazaçlara yükler, sonra DS ve ES yazaçlarına segment adresi yükler. 80386 ve sonraki sürümlerinde LFS, LGS, ve LSS komutları komut setine eklenmiştir. Bu komutlar 16 veya 32-bit yazaçlara ofset adresi yükledikten sonra komutun tanımladığı DS, ES, FS, GS, ve SS segment yazaçlarından birine segment adresi yükler.

Şekil 4 17 The LDS BX,[DI] komutunun işleyişi. Komut yürütüldükten sonra DS yazacının içeriği 3000H ve BX yazacının içeriği 127AH olur.

4 4 Dizi Verisinin Aktarılması (STRING DATA TRANSFERS) 5 adet Dizi verisini aktaran komut yer alır : LODS, STOS, MOVS, INS ve OUTS. Her komut bayt, word veya doubleword boyutunda veri aktarımı yapar. Bu komutların nasıl çalıştığını anlamak için D flag-bit (direction), DI, ve SI yazaçları hakkında bilgi sahibi olmak gerekir.

Yön Seçme Bayrağı (Direction Flag) Yön seçme bayrağı (D, flag yazacında yer alır) dizi işlemlerinde DI ve SI yazaçlarının otomatik olarak işlem sonunda arttırılacağını mı? yoksa azaltılacağını mı? belirler. Bu bayrak sadece dizi işleyen komutlarda geçerlidir. CLD komutu D bayrağını temizler (0), STD komutu ise bu bayrağı kurar (1). CLD komutu otomatik arttırma modunu seçerken, STD komutu otomatik azaltma modunu seçer.

DI ve SI Dizi işleyen komutlarda belleğe erişim DI ve SI yazaçları üzerinden erişilir. DI yazacı extra segmentin ofset adresini içerir. SI yazacı veri segmentinde ofset adresini içerir. 32-bit modda çalışırken bu yazaçların yerine EDI ve ESI yazaçları alır. Bu yazaçlar sayesinde korumalı modda belleğin 4G-bayt bölümünde dizi işlemi yapmak olanaklı hale gelir.

LODS Veri segmentinden ofset adresi SI yazacı tarafında belirtilen belleğin içeriğini AL, AX veya EAX yazaçlarına yükler. Bayt yüklendiğinde SI içeriği D bayrağına göre 1 artar veya 1 azalır (LODS). Word yüklendiğinde SI içeriği D bayrağına göre 2 artar veya 2 azalır (LODSW). Bayt yüklendiğinde SI içeriği D bayrağına göre 4 artar veya 4 azalır (LODSDW).

Figure 4 18 LODSW komutunun işleyişi ( DS=1000H, D=0,11000H=32H, 11001H = A0H). İşlem sonunda SI=1000+2 olur.

STOS Extra segmentte DI yazacının gösterdiği satıra AL, AX, veya EAX yazaçlarının içeriğini yazar. STOSB (stores a byte), AL yazacının içeriğini extra segmentte DI yazacının gösterdiği satıra yazar. STOSW (stores a word), AL yazacının içeriğini extra segmentte DI yazacının gösterdiği satıra yazar. Bayt (AL), word (AX), veya doubleword (EAX) işlemlerinden sonra DI yazacının içeriği D bayrağına göre kullanılan bellek satırı adedi kadar azaltılır veya arttırılır.

REP ile STOS REP (repeat prefix) LODS komutu dışında dizi işleyen komutlara eklenebilir. Dizi işleyen komuta REP eklendiğinde CX yazacı komutun her yürütülmesinde 1 azaltılır. Komutun tekrar yürütmesi işlemine CX=0 olana kadar devam edilir. CX=0 olduğunda bir sonraki komuta geçilir. Eğer CX yazacına 100 yüklersek, REP STOSB komutunu yürütürsek, mikroişlemci otomatik olarak STOSB komutunu 100 defa yürütür.

MOVS Data segmentten bayt, word veya doubleword veriyi extra segemente taşır. Data segmente pointer olarak SI yazacı, extra segmente ise DI yazacı kullanılır. Her iki yazaç işlem sonradı D bayrağına göre artırılır veya azaltılır.

INS I/O aygıtından bayt, wordveya doubleword veriyi extra segmente DI yazacının belirttiği adrese taşır. I/O adresini DX yazacı içerir I/O aygıtından blok halindeki veriyi belleğe taşımak istediğimizde çok kullanışlıdır.

INS komutunun 3 değişik formu vardır. INSB 8 bit I/O aygıtından bir bayt veri okur ve belleğin DI yazacının gösterdiği satıra yazar. INSW 16-bit I/O aygıtından okuduğu veriyi word-sized bellekte saklar. INSD komutu I/O aygıtından doubleword veriyi okur ve belleğe yazar. Bu komutlar REP ile istenilen sayıda tekrarlanabilir.

OUTS Data segmentten SI yazacının adreslediği bayt, word veya doubleword veriyi I/O aygıtına yazar. I/O aygıtı DX yazacı tarafından adreslenir. I64-bit modda Pentium 4 ve Core2, 64-bit çıkış yapan komut yoktur. RSI yazacı 64 bit genişliğindedir.

4 5 Diğer Veri Aktaran komutlar XCHG, LAHF, SAHF, XLAT, IN, OUT, BSWAP, MOVSX, MOVZX, and CMOV.

XCHG Yazacın içeriği ile diğer yazaçların veya bellek satırığının içeriklerini takas (exchange) eder. cannot exchange segment registers or memory-to-memory data bayt, word veya doubleword genişliğinde ivedi adresleme modu dışında tüm adresleme modlarında yazaç veya bellek ile yazaç içeriğini takas eder. Genellikle 16 bit yazaçların içeriklerini takas etmede kullanılır.

LAHF and SAHF LAHF komutu Flag yazacının DDB ını AH yazacına aktarır. SAHF komutu AH yazacını Flag yazacının DDB ına aktarır. 64 bit çalışmada geçersiz komutlardır.

XLAT AL yazacının içeriğini lookup tablosundan karşılığını yükler. XLAT komutu AL yazacında bulunan sayıyı BX yazacına toplar ve BX yazacının gösterdiği data segmentindeki bellek satırının içeriğini AL yazacına yükler.

Figure 4 19 XLAT komutunun işleyişi.

IN ve OUT IN & OUT komutları I/O işlemi yaparlar. Giriş çıkış aygıtları mikroişlemci ile AL, AX, veya EAX yazaçları ile veri aktarabilirler. IN komutu I/O aygıtından AL, AX veya EAX yazacına veri okur. OUT komutu AL, AX veya EAX yazacının içeriğini I/O aygıtına yazar. Genellikle I/O aygıtlarını kullanan alt programlar BIOS ROM unun içerisinde yer alır. Port numaraları değiştirilemez.

Two forms of I/O device (port) addressing: Fixed-port addressing allows data transfer between AL, AX, or EAX using an 8-bit I/O port address. port number follows the instruction s opcode Variable-port addressing allows data transfers between AL, AX, or EAX and a 16-bit port address. the I/O port number is stored in register DX, which can be changed (varied) during the execution of a program.

Figure 4 20 OUT 19H,AX komutu yürütülürken mikroişlemci portlarının içerikleri.

BSWAP 32 bit yazaçların düşük değerli 16 biti ile yüksek değerli 16 bitini karşılıklı yer değiştirir. BSWAP (byte swap) sadece 80486 ve sonraki sürümlerde mevcuttur.

CMOV CMOV komutunun bir çok çeşidi vardır, koşul yerine gelirse aktarma işlemi yapılır gelmezse aktarma yapılmaz. CMOVZ komutu eğer bir önceki işlemin sonucu sıfır ise aktarma yapar aksi halde aktarma yapmaz. Hedef sadece 16 veya 32-bit yazaç olabilir, kaynak ise 16 veya 32 bit yazaçların yanı sıra bellekte olabilir. Because this is a new instruction, you cannot use it with the assembler unless the.686 switch is added to the program

Ödev 4 Bölümün sonundaki sorular yanıtlanacak. Teslim tarihi: 22.11.2010