80x86 MICROPROCESSOR Instructions

Benzer belgeler
b) Aritmetik İşlem Komutları

Quiz:8086 Mikroişlemcisi Mimarisi ve Emirleri

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

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

MTM 305 MĠKROĠġLEMCĠLER

8086 Mikroişlemcisi Komut Seti

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

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

MTM 305 MĠKROĠġLEMCĠLER

Aritmetiksel Komutlar

AND Komutu. and hedef, kaynak

8086 Mikroişlemcisi Komut Seti

MTM 305 MĠKROĠġLEMCĠLER

Assembly. Programlama Dili. T e m m u z

CISC Complex Instruction Set Computers

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

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

Assembly Programlama Dili T e m m u z

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar

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

Ö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

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

BM-311 Bilgisayar Mimarisi

Ders 3 ADRESLEME MODLARI ve TEMEL KOMUTLAR

K uark projesi. Temel Özellikler :

Program Kontrol Komutları. Mikroişlemciler ve Mikrobilgisayarlar 1

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

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

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

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

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

Mikrobilgisayar Mimarisi ve Programlama

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

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

1 NEDEN SEMBOLİK MAKİNA DİLİ ÖĞRENİLMELİDİR? MİKROİŞLEMCİLERİN ÇALIŞMA BİÇİMLERİ TİPİK BİR RAM İN YAPISI

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

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

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

İ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

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

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 LABORATUVARI OLAYLARI ZAMANLAMA

Bölüm 4 Veri Aktarma Komutları

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

BBM 341 Sistem Programlama

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

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

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

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

KASIRGA -4 Buyruk Tasarımı Belgesi Ankara

BM-311 Bilgisayar Mimarisi

MTM 305 MĠKROĠġLEMCĠLER

Komutların Yürütülmesi

Mikrobilgisayar Mimarisi ve Programlama

Multiplication/division

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

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

Big Endian & Little Endian K.Atilla Toker İzmir Üniversitesi Meslek Yüksek Okulu Bilgisayar Programcılığı Ver:01

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

MTM 305 MİKROİŞLEMCİLER

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

BLM1011 Bilgisayar Bilimlerine Giriş I

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

C-Serisi PLC İleri Seviye Eğitim

(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.

DIGIAC 2000 Deney Seti PAT İŞLEMCİ KARTI :

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

Assembly Language Programming

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

Linux Assembly Programlamaya Giriş

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

MTM 305 MİKROİŞLEMCİLER

Mikrobilgisayar Donanımı

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

mikroc Dili ile Mikrodenetleyici Programlama Ders Notları

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

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

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

Giris {\} /\ Suhap SAHIN

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

Elektroniğe Giriş 1.1

BIL 362 Mikroilemciler Dersi Final Sınavı Cevapları

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

Arithmetic ve Logical Operations

Mikroişlemcili Sistemler ve Laboratuvarı 8.Hafta

Lecture 7. Assembler language nedir? Language in 3 seviyesi. Language 3 seviyesi. Nicin onu ogreniriz?

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

SAYISAL DEVRELER. İTÜ Bilgisayar Mühendisliği Bölümündeki donanım derslerinin bağlantıları

MIPS assembler language de branching

CHAPTER 1 INTRODUCTION NUMBER SYSTEMS AND CONVERSION. Prof. Dr. Mehmet Akbaba CME 221 LOGİC CİRCUITS

Mikroişlemciler. Giriş

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

Ö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ı

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

BM-311 Bilgisayar Mimarisi

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği 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ı

Transkript:

80x86 MICROPROCESSOR Instructions

Inside The 8088/8086 registers Registers Verileri geçici olarak tutar AX 16-bit register AH 8-bit reg. AL 8-bit reg. Category Bits Register Names General 16 AX, BX, CX, DX 8 AH, AL, BH, BL, CH, CL, DH, DL Pointer 16 SP (stack pointer), BP (base pointer) Index 16 SI (source index), DI (destination index) Segment 16 CS (code segment), DS (data segment) SS (stack segment), ES (extra segment) Instruction 16 IP (instruction pointer) Flag 16 FR (flag register) 2

Anatomy of a Register Extended Register Word Register Bits 16-31 Bits 8-15 Bits 0-7 High Byte Register Low Byte Register 3

General Registers 32 bit Registers 16 bit Registers 8 bit Registers EAX EBP AX BP AH AL EBX ESI BX SI BH BL ECX EDI CX DI CH CL EDX ESP DX SP DH DL Bits 16-31 Bits 8-15 Bits 0-7 4

5

6

7

Instruction Set Classification Transfer Move Arithmetic Add / Subtract Mul / Div, etc. Logic &Shift AND/OR/NOT/XOR Rotate/Shift Control Jump Call / Return, etc. 8

Data transfer : Move MOV Dest, Src MOV reg, reg reg <- reg MOV reg, mem reg <- mem MOV mem, reg mem <- reg MOV reg, imm reg <- imm MOV mem, imm mem <- imm Doğrudan bir bellek hücresinden diğerine veri transferi yoktur There is no move mem<-mem instruction 9

Move limitation Operandların ikisi de aynı boyutta olmalı Doğrudan bir değeri segment registere yükleme emri yoktur Akümülatör (AX) üzerinden yapılır Doğrudan bir değeri belleğe yerleştirmek için verinin boyutu tanımlanmak zorundadır Byte /Word PTR 10

MOV AX,100h MOV BX,AX MOV DX,BX Move (MOV) Example MOV AX,1234h MOV DX,5678h MOV AL,DL MOV BH,DH 11

MOV Example MOV AX,1000h MOV [100h],AX MOV BX,[100h] MOV BYTE PTR [200h],10h MOV WORD PTR [300h],10h MOV AX,2300h MOV DS,AX 12

MOV : 16 / 8 Bit register 13

MOV : Memory Verinin koyulacağı yere ilişkin olarak sadece offset verildiğinde, otomatik olarak DS registeri segment register olur 14

Endian conversion Little endian conversion: In the case of 16-bit data, the low byte goes to the low memory location and the high byte goes to the high memory address. (Intel, Digital VAX) Big endian conversion: The high byte goes to low address. (Motorola) Example: Suppose DS:6826 = 48, DS:6827 = 22, Show the contents of register BX in the instruction MOV BX,[6826] Little endian conversion: BL = 48H, and BH = 22H 15

Byte ordering : Little endian x86 nın byte sırası: little endian LSB küçük adrese yerleşir, MSB büyük adrese yerleşir Little endian : Intel, Digital VAX Big endian : Motorola 16

BX(base) registerini kullanarak bellekte bir lokasyona işaret edebiliriz Displacement AX =? 17

What is the result of MOV [100h], 10h Address 100 = 10h What about address 101? Word or Byte? MOV WORD PTR [100h], 10h MOV BYTE PTR [100h], 10h What about MOV [100h], AX? 18

Hatırlatma Complements Negatif sayıları temsil etmek için datalar, Complement formda saklanır One s complements of 01001100 (Bire tümleyen) 1111 1111-0100 1100 1011 0011 Two s complements (İkiye tümleyen) 1011 0011 +0000 0001 1011 0100 19

20

Status Register (Flag) 8086, 16 bitlik bayrak registerine sahiptir En son yapılan aritmetik işlemin durumunu gösterir 21

Zero Flag İşlem sonucunun sıfır çıktığını gösterir Eğer sonuç sıfır ise ZF=1 Sıfır değilse ZF=0 İşlem sonucu pek çok şekilde sıfır çıkabilir Bu üç örneğin sonucu da sıfır çıkar ve ZF setlenir. İlgili emirler jz jump if zero (jump if ZF = 1) jnz jump if not zero (jump if ZF = 0) 22

Zero Flag Zero bayrağının kullanılışı İki ana kullanımı vardır Eşitlik testi Genellikle cmp emiriyle birlikte kullanılır cmp AX,BX Belirli bir değere kadar sayma Bir register sayma değeri yüklenir Register dec emiri ile azaltılır jz/jnz emirleri kullanılarak program akışı yönlendirilir 23

Zero Flag İşlem sonucu sıfır olduğunda Zero (Z) bayrağı setlenir. 24

Parity Flag Sonucun alt 8 bitinin çift parity olma durumunu gösterir Alt 8 bit, çift sayıda değeri lojik-1 olan bit içeriyorsa Parity bayrağı setlenir 16- veya 32-bitlik değerler için sadece en düşük değerlikli 8 bit için party hesaplanır 25

İlgili emirler Parity Flag 26

Carry flag Bir elde veya borç alma durmu olduğunda Carry bayrağı setlenir (sadece işaretsiz işlemlerle) 27

Carry flag Carry bayrağı inc ve dec emirlerinden etkilenmez Carry bayrağının içeriği aşağıdaki örneklerde değişmez İlgili emirler jc jump if carry (jump if CF = 1) jnc jump if no carry (jump if CF = 0) Carry bayrağı doğrudan aşağıdaki emirler ile manipüle edilebilir stc set carry flag (set CF to 1) clc clear carry flag (clears CF to 0) cmc complement carry flag (inverts CF value) 28

Overflow flag Elde edilen sonuçta taşma olduğunda Overflow bayrağı setlenir. (işaretli işlemlerle) İşaretli sayılarla yapılan işlem sonucunda out-ofrange durumu olduğunu gösterir Aşağıdaki kod overflow bayrağını set eder, fakat carry bayrağını set etmez mov AL,72H add AL,0EH ; 72H = 114D ; 0EH = 14D 29

Overflow flag Range of 8-, 16-, and 32-bit signed numbers 30

Overflow flag Signed or unsigned: Sistem bunu nasıl bilecek? İşlemci bunun yorumu yapamaz Bu nedenle, hem carry hem overlow bayraklarını günceller 31

Sign flag Sonucun işaretini belirtir. (İşaretli işlemlerde) sonuç negatif çıktığında Sign flag setlenir. İşeretli sayılarla çalışıldığında kullanışlıdır. Basitçe sonucun en değerli bitinin (MSb) bir kopyasıdır 32

Sign flag 33

Auxiliary flag Bir işlem sonucunda 8-, 16- veya 32-bitlik operandların en alt 4 bitinde (nibble) bir elde veya borç alma durumu olup olmadığını gösterir Operandın boyu fark etmez Alt nibble dan gelen bir elde olduğundan Auxiliary flag setlenir 34

İlgili emirler Auxiliary flag Bu bayrak ile ilgili şartlı dallanma emiri yoktur BCD sayılar üzerinde yapılan aritmetik işlemler bu bayrağı kullanır aaa ASCII adjust for addition aas aam aad daa das ASCII adjust for subtraction ASCII adjust for multiplication ASCII adjust for division Decimal adjust for addition Decimal adjust for subtraction 35

Direction flag More flag String işlemlerinde (artış/azalış) yönü tayin etmek için kullanılır Trap flag Her işlemin ardından CPU yu kesmeye uğratmak için kullanılır Interrupt flag Donanımsal kesmeyi aktif/pasif etmek için kullanılır 36

Flag set/reset instructions Carry flag STC / CLC Direction flag STD / CLD Interrupt flag STI / CLI 37

Arithmetic instructions 38

INC / DEC INC register INC memory Example INC AX DEC BL Increment - Decrement DEC register DEC memory 39

Increment - Decrement INC ve DEC emirleri carry bayrağını etkilemez Diğer 5 durum bayrağını etkiler Her ikisi de aynı sürede gerçekleşse de INC emiri bellekte daha az yer kaplar 40

Add 5 operand kombinasyonu mümkündür ADD reg, imm ADD reg, mem ADD reg, reg ADD mem, imm ADD mem, reg ADC reg, imm ADC reg, mem ADC reg, reg ADC mem, imm ADC mem, reg 41

Add ADC emiri, uzun sayıların (Long int) toplamasında kullanılır Carry bayrağını manipüle etmek için 3 tane emir kullanılır stc set carry flag (set CF to 1) clc clear carry flag (clears CF to 0) cmc complement carry flag (inverts CF value) 42

Example ADD MOV AL, 10h ADD AL, 20h ;AL = 30h MOV BX, 200h ;BX = 0200h MOV WORD PTR [BX], 10h ADD WORD PTR [BX], 70h MOV AH, 89h ;AX = 8930h ADD AX, 9876h ;AX = 21A6h ADC BX, 01h ;BX = 0202h? 43

Subtract 5 operand kombinasyonu mümkündür SUB reg, imm SUB reg, mem SUB reg, reg SUB mem, imm SUB mem, reg SBB reg, imm SBB reg, mem SBB reg, reg SBB mem, imm SBB mem, reg 44

Sub 45

Example SUB MOV AL, 10h ADD AL, 20h ;AL = 30h MOV BX, 200h ;BX = 0200h MOV WORD PTR [BX], 10h SUB WORD PTR [BX], 70h MOV AH, 89h ;AX = 8930h SBB AX, 0001h ;AX = 892Eh? SBB AX, 0001h ;AX = 892Dh 46

Compare CMP reg, imm CMP reg, mem CMP reg, reg CMP mem, reg There is no CMP mem, imm 6 durum bayrağının hepsini etkiler CMP emirini genellikle bir koşullu dallanma emri takip eder 47

Example CMP MOV CX, 10h CMP CX, 20h MOV BX, 40h CMP BX, 40h MOV AX, 30h CMP AX, 20h ;Z=0,S=1,C=1,OF=0 ;Z=1,S=0,C=0,OF=0 ;Z=0,S=0,C=0,OF=0 48

Negation Compute 2 complement. Carry bayrağı her zaman setlenir. Kullanımı NEG reg NEG mem 49

MOV CX, 10h NEG CX MOV AX,0FFFFH Example NEG ; CX = 0FFF0h NEG AX ; AX = 1 MOV BX,1H NEG BX ; BX = 0FFFFh 50

Multiplication Add/sub işlemlerinden daha karmaşıktır İki katı uzunlukta sonuçlar üretir Mesela iki tane 8-bitlik sayıları çarpmak 16-bit gerektiren bir sonuç üretir İşaretli ve işaretsiz sayıların her ikisi için tek bir çarpma emiri kullanılmaz fakat add ve sub emirleri hem işaretli hem de işaretsiz sayılarda çalışıyordu Çarpma işlemi için ise iki ayrı emire ihtiyaç duyulur mul for unsigned numbers (işaretsiz sayılar) imul for signed numbers (işaretli sayılar) Her zaman akümülatör üzerinden gerçekleşir Sadece Carry ve Overflow bayrağını etkiler 51

Multiplication Unsigned multiplication mul source source operandının uzunluğuna bağlı olarak diğer kaynak operandı ve hedefler belirlenir Örnek mov AL,10 mov DL,25 mul DL ; produces 250D in AX register (result fits in AL) 52

Multiplication signed multiplication imul emiri aynı syntaxı kullanır Örnek mov DL,0FFH ; DL := -1 mov AL,0BEH ; AL := -66 mul DL produces 66D in AX register (again, result fits in AL) 53

8 bit multiplication AL is multiplicand (çarpılan) AX keep the result MOV AL,10h MOV CL,13h IMUL CL ; AL = 10h ; CL = 13h ; AX = 0130h 54

16 bit multiplication AX is multiplicand (çarpılan) DX:AX keep the result MOV AX,0100h MOV BX,1234h IMUL BX ; AX = 0100h ; BX = 1234h ; DX = 0012h ; AX = 3400h 55

Division instruction Division Çarpma işleminden daha karmaşıktır İki sonuç üretir 1) Quotient (Bölüm) 2) Remainder (Kalan) Çarpmadaki gibi iki emir vardır div source idiv source for unsigned numbers for signed numbers 56

Division 57

Example (8-bit division) mov AX,00FBH mov CL,0CH div CL Division ; AX := 251D ; CL := 12D produces 20D in AL and 11D as remainder in AH ; AL=20D, AH=11D Example (16-bit division) mov AX,141BH ; AX := 5147D mov CX,012CH div CX ; CX := 300D produces 17D in AX and 47D as remainder in DX ; AX=17D, DX=47D 58

Conversion İşaretli bölme biraz hassas bir konudur, yardıma ihtiyaç duyar 16 bitlik işaretsiz sayılar, üst 16 bitine lojik-0 konulmak suretiyle 32 bite genişletilebilir Fakat bu mantık işaretli sayılarda işe yaramaz işaretli bir sayıyı genişletmek için sayının işaret bitinin bu üst bitlere kopyalanması gerekmektedir. işaret genişletmeye yardımcı olan emirler: Byte to Word : CBW Signed convert AL -> AX Word to Double word : CWD Signed convert AX -> DX:AX 59

MOV AL,22h Example Conversion CBW ; AX=0022h MOV AL,F0h CBW ; AX=FFF0h MOV AX, 3422h CWD ; DX=0000h ; AX=3422h 60

61

Example about flag with arithmetic 62

Example about flag with arithmetic 63

Logical & Shift, Rotation instructions 64

AND, OR, XOR AND /OR / XOR REG, memory memory, REG REG, REG memory, immediate Bayraklar C Z S O P 0 r r 0 r 65

NOT NOT REG memory Bayraklar C Z S O P A unchanged (değişmez) 66

SHift Left SHL memory, immediate REG, immediate memory, CL REG, CL Operand1 in içeriği 1 bit sola kaydırılır. Eğer operand2 verilirse bu, kaydırma miktarını belirtir. MSb den dışarı çıkan bit CF ye kopyalanır. LSb den içeri lojik-0 alınır. Bayraklar C r O r Eğer ilk operand işaretini korursa OF=0 olur 67

SHift Right SHR memory, immediate REG, immediate memory, CL REG, CL Operand1 in içeriği 1 bit sağa kaydırılır. Eğer operand2 verilirse bu, kaydırma miktarını belirtir. LSb den dışarı çıkan bit CF ye kopyalanır. MSb den içeri lojik-0 alınır. Bayraklar C r O r Eğer ilk operand işaretini korursa OF=0 olur 68

ROtate Left ROL memory, immediate REG, immediate memory, CL REG, CL Operand1 in içeriği 1 bit sola döndürülür. Eğer operand2 verilirse bu, döndürme miktarını belirtir. MSb den dışarı çıkan bit CF ye kopyalanır ve ayrıca aynı bit LSb den içeri alınır. Bayraklar C r O r Eğer ilk operand işaretini korursa OF=0 olur 69

ROtate Right ROR memory, immediate REG, immediate memory, CL REG, CL Operand1 in içeriği 1 bit sağa döndürülür. Eğer operand2 verilirse bu, döndürme miktarını belirtir. LSb den dışarı çıkan bit CF ye kopyalanır ve ayrıca aynı bit MSb den içeri alınır. Bayraklar C r O r Eğer ilk operand işaretini korursa OF=0 olur 70

Rotate Left through Carry RCL memory, immediate REG, immediate memory, CL REG, CL Operand1 in içeriği Carry bayrağı üzerinden 1 bit sola döndürülür. Eğer operand2 verilirse bu, döndürme miktarını belirtir. MSb den dışarı çıkan bit CF ye kopyalanır ve CF nin eski değeri LSb den içeri alınır. Bayraklar C r O r Eğer ilk operand işaretini korursa OF=0 olur 71

Rotate Right through Carry RCR memory, immediate REG, immediate memory, CL REG, CL Operand1 in içeriği Carry bayrağı üzerinden 1 bit sağa döndürülür. Eğer operand2 verilirse bu, döndürme miktarını belirtir. LSb den dışarı çıkan bit CF ye kopyalanır ve CF nin eski değeri MSb den içeri alınır. Bayraklar C r O r Eğer ilk operand işaretini korursa OF=0 olur 72

SHL example SHL, SHR Example MOV AL, 11100000b SHL AL, 1 ; AL = 11000000b, CF=1 SHR example MOV AL, 10000111b SHR AL, 1 ; AL = 01000011b, CF=1 73

ROL example ROL, ROR Example MOV AL, 90h ; AL = 10010000b ROL AL, 1 ; AL = 00100001b, CF=1 ROR example MOV AL, 0Fh ; AL = 00001111b ROR AL, 1 ; AL = 10000111b, CF=1 74

RCL, RCR Example RCL example STC MOV AL, 1Ch RCL AL, 1 ; set carry (CF=1) ; AL = 00011100b ; AL = 00111001b, CF=0 ROR example STC ; set carry (CF=1) MOV AL, 1Ch ; AL = 00011100b RCR AL, 1 ; AL = 10001110b, CF=0 75

Jump and Loops 76

Jump Instructions 77

Signed Unsigned Jump Instructions 78

Jump Instructions 79

Loop Instructions Döngüyü sayısı için CX (Counter) registerine bağımlıdır Döngü(Loop) emirleri LOOP LOOPZ/LOOPE LOOPNZ/LOOPNE JCXZ 80

LOOP label Loop Instructions Decrease CX, jump to label if CX not zero. Algorithm: o CX = CX 1 o if CX <> 0 then jump o else no jump, continue 81

Loop Instructions LOOPZ/LOOPE label Decrease CX, jump to label if CX not zero and ZF = 1. Algorithm: o CX = CX 1 o if (CX <> 0) and (ZF=1) then jump o else no jump, continue 82

Loop Instructions LOOPNZ/LOOPNE label Decrease CX, jump to label if CX not zero and ZF = 0. Algorithm: o CX = CX 1 o if (CX <> 0) and (ZF=0) then jump o else no jump, continue 83

JCXZ label Loop Instructions Jump if CX register is 0. LOOP emiri ile birlikte döngüye girmeden önce CX registerinin içeriğini öğrenmeye yarar Kullanım şekli: 84

Nested For Loop in Assembly Lang. 85