Haberler:

Türkiye'nin Elektronik ve Metal Dedektörlerini Buluşturan İlk Sitesi Teknoloji Ekibi'ne Hoş Geldiniz.

Ana Menü

8086 Örnek programlar

Başlatan Uykusuz, 06 Nisan 2009, 22:28:45

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

Uykusuz

Bellekte 1000:2000H adresinde 500H byte'lık ve 00-0F ile sınırlı bir X dizisi bulunmaktadır. Y=15 x X^2 +71H bağıntısı ile tanımlı Y dizisini 3000:0700H adresine kaydeden program...

            ORG         100
            MOV         AX,1000H
            MOV         DS,AX
            MOV         AX,2000H
            MOV         DI,AX             
            MOV         AX,3000H
            MOV         SS,AX
            MOV         AX,0700H
            MOV         BP,AX
TEKRAR:                                                                 
            MOV         AX,[DI]
            MOV         BX,[DI]   
            MUL         BX           
            ADD         AX,71H                     
            MOV         [BP],AX             
            CMP         DI,2500H
            JE          SON
            INC         DI
            INC         BP
            INC         BP   
            JMP         TEKRAR
SON:       
            END
Linkback: 8086 Örnek programlar

Uykusuz

#1
Bellekte 3000:7500H adreslerinden başlayan 100 elemanlı bir dizi yer almaktadır. bu dizide yer akan -5 ve +5 arası sayıları 2000:1200H adresinden başlayarak sırasıyla kaydeden program...

                        ORG         100
            MOV         AX,3000H
            MOV         DS,AX
            MOV         AX,7500H     
           
           
            MOV         DI,AX             
            MOV         AX,2000H
            MOV         SS,AX
            MOV         AX,1200H
            MOV         BP,AX
TEKRAR:                                                               
            CMP         [DI],6H
            JNL         SORGULA
            CMP         [DI],0FAH
            JG         KAYDET
            JMP         SORGULA
KAYDET:
            MOV         AX,[DI]
            MOV         [BP],AX
SORGULA:
            CMP         DI,7564H
            JNZ          ARTTIR
            JMP         SON
ARTTIR:
            INC         DI
            INC         BP                     
            JMP         TEKRAR
SON:       
            END

Uykusuz

Bellekte 1000:1500H adresşnden başlayan 100 elemanlı bir dizi yer almaktadır. Bu dizi içerisindeki 49'dan küçük sayıları 2000:1200H, büyük ve eşit sayıları ise 2000:1300H adresinden başlayarak sırasıyla kaydeden program...

            ORG         100
            MOV         AX,1000H
            MOV         SS,AX
            MOV         AX,1500H                           
            MOV         BP,AX
                         
            MOV         AX,2000H
            MOV         DS,AX
            MOV         AX,1200H
            MOV         DI,AX
            MOV         AX,1300H
            MOV         SI,AX
TEKRAR:                                                               
            CMP         [BP],49
            JC          KUCUK 
            MOV         AX,[BP]
            MOV         [SI],AX   
            INC         SI
            JMP         SORGULA
         
KUCUK:
            MOV         AX,[BP]
            MOV         [DI],AX 
            INC         DI

SORGULA:   
            CMP         BP,1564H
            JNC          SON
            INC         BP                     
            JMP         TEKRAR
SON:       
            END

Uykusuz

Bellekte 35000H adreside 100byte'lık bir dizi bulunmaktadır. Dizi içerisindeki en küçük ve en büyük sayıyı bularak 75000 adresine kaydeden program...

            ORG         100
            MOV         AX,3000H
            MOV         SS,AX
            MOV         AX,5000H                           
            MOV         BP,AX
                         
            MOV         AX,7000H
            MOV         DS,AX
            MOV         AX,5000H
            MOV         DI,AX

TEKRAR:   
            MOV         AX,DI                                                           
            CMP         [BP],AX
            JC          KUCUK
            JNZ         BUYUK
            JMP         SORGULA
KUCUK:   
            MOV         AX,[BP]
            MOV         [DI],AX
            JMP         SORGULA
BUYUK:
            INC         DI
            MOV         AX,[BP]
            MOV         [DI],AX
            DEC         DI     

SORGULA:   
            CMP         BP,5064H
            JNC         SON
            INC         BP                     
            JMP         TEKRAR
SON:       
            END

olmecabelarus

uykusuz ellerine sağlık çok kral adamsın.sayende geçicez bu dersi:)

Uykusuz

Rica ederim olmecabelarus, sizlerin de katkılarınızı bekleriz, yazdıkça ekleyiverin  ;)

Uykusuz

#6
1000:0300 adresine 2000:5000 adresindeki veriyi Stack Memory kullanarak taşıyan program:

            ORG         100
            MOV         BX,2000H
            MOV         DS,BX
            MOV         SI,5000H
            MOV         DI,0300H
            MOV         CX,700H
TEKRAR:
            MOV         AL,[SI]
            PUSH        DS
            MOV         BX,1000H
            MOV         DS,BX
            MOV         [DI],AL
            POP         DS
            INC         SI
            INC         DI
            LOOP        TEKRAR       
            END

Uykusuz

2000:3000H ve 4000:5000H adresinde iki farklı dizi yer almaktadır. Bu iki dizinin aynı olup olmadığını inceleyen ve eğer farklı ise ilk farklı elemanın adresini stack memorye kaydeden program...

            ORG         100
            MOV         AX,2000H
            MOV         DS,AX
            MOV         DI,3000H    ;BIRINCI DIZI BASLANFICI
           
            MOV         AX,4000H
            MOV         SS,AX
            MOV         BP,5000H    ;IKINCI DIZI BASLANGICI       
           
            MOV         CX,100D     ;DIZI UZUNLUGU
TEKRAR:
            MOV         AX,[DI]
            CMP         AX,[BP]
            JNE         KAYDET      ;ESIT DEGILSE KAYDET
            INC         DI
            INC         BP
            LOOP        TEKRAR
            JMP         SON
             
KAYDET:
            PUSH        DI
            PUSH        DS 
SON:   
            END

Uykusuz

5 basamaklı iki sayı basamaklar halinde sırası ile 21000H ve 22000H'den başlayan adreslere dizi olarak kaydedilmiştir. Bu iki sayıyı toplayarak 23000H'dan başlayan adreslere kaydeden program...

            ORG         100
            MOV         AX,2000H
            MOV         DS,AX
            MOV         SS,AX     
           
            MOV         DI,1000H    ;BIRINCI SAYININ BIRLER BASAMAGI
            MOV         SI,2000H    ;IKINCI SAYININ BIRLER BASAMAGI
            MOV         BP,3000H    ;SONUCUN BIRLER BASAMAGI   
           

            MOV         AX,0           
            MOV         CX,5D       ;BASAMAK SAYISI
TEKRAR:     

            MOV         AL,[DI]
            ADD         AL,[SI] 
            CMP         AL,10
            JC          DEVAM       ;10'DAN KUCUK MU?
            SUB         AL,10D
            INC         BP          ;BUYUK
            INC         [BP]        ; 
            DEC         BP
DEVAM:     
            MOV         [BP],AL
            INC         DI
            INC         SI
            INC         BP   
            LOOP        TEKRAR       
SON:   
            END

Uykusuz

#9
M0VSB ve REP komularına örnek program
[2000:1000] adresinden [1000:1000] adresine 1000H Byte veriyi kopyalayan program.

            ORG         100H   
           
            MOV         AX,2000H
            MOV         DS,AX
            MOV         SI,1000H
            MOV         CX,0100H
DEVAM:
            MOV         [SI],10
            INC         SI
            LOOP        DEVAM
 
            MOV         AX,1000H
            MOV         ES,AX
            MOV         DI,1000H
            MOV         AX,2000H
            MOV         DS,AX
            MOV         SI,1000H
           
            MOV         CX,0100H 
            CLD         
            REP         MOVSB   
            END








Uykusuz

CMPBS ve REPE komularına örnek program
[2000:1000] adresinden [1000:1000] adresine 1000H Byte veriyi karşılaştıran fark bulduğunda döngüyü sonlandıran program.




            ORG         100H   
           
            MOV         AX,1000H
            MOV         SS,AX
            MOV         BP,1000H
            MOV         AX,2000H
            MOV         DS,AX
            MOV         SI,1000H
           
            MOV         CX,0100H
DEVAM:
            MOV         [SI],10
            MOV         [BP],10
            INC         SI 
            INC         BP
            LOOPNE        DEVAM
 
            MOV         AX,1000H
            MOV         ES,AX
            MOV         DI,1000H
            MOV         AX,2000H
            MOV         DS,AX
            MOV         SI,1000H
           
            MOV         CX,0100H 
            CLD         
            REPE        CMPSB 
            END

Uykusuz

2000:3000H ve 4000:5000H adreslerinde 2 dizi yer almaktadır. Bu iki dizinin aynı olup olmadığını inceleyen ve eğer farklı ise iki elemanın adresini stack'e kaydeden programı oluşturunuz. Program işleyişini açıklayınız.
    ; baslangicta butun adreslerin icerigi sıfır.
    ; bunun icin programin calistigini gormek amaciyla oncelikle 2. dizide
    ; bir elemani degistiriyoruz. ayrica dizilerimizin boyutu soruda verilmemis
    ; bunun icin 64h uzunlugunda kabul ettik.
   
    mov bx, 4000h   
    mov ds, bx      ; ikinci dizimiz 4000h segmentinde oldugu icin ds'ye 4000h atadik.
    mov al, 33h
    mov [5043h], al ; 4000:5043 adresine al'deki degeri yani 33h'i yazdik.

    ; si ve di genellikle veri transferi amaciyla kullanilsa da biz burada karsilastirma
    ; amaciyla kullanacagiz.
       
    mov cx, 64h     ; loop (down counter) dongusu kullandigimiz icin cx'e 64h yukledik.
    mov si, 3000h   ; 1. dizinin baslangic adresini si'ye yazdik.
    mov di, 5000h   ; 2. dizinin baslangic adresini de di'ye yazdik.
   
ayni:
    mov bx, 2000h   
    mov ds, bx      ; 1. dizimizden veri okumak icin ds'ye 2000 atadik.
    mov al, [si]    ; si'nin gosterdigi adresteki veriyi al'ye yazdik.
    mov bx, 4000h   
    mov ds, bx      ; simdi de 2. dizimizden veri okumak icin ds'ye 4000 atadik.
    cmp al, [di]    ; al'de 1. dizimizden aldigimiz veri vardi. bunu di'nin
                    ; gosterdigi adresteki deger ile karsilastirdik.
    jne farkli      ; eger iki deger birbirine esit degilse farkli'ya atla dedik.
    inc si          ; 1. dizinin sonraki degerini okumak icin si'yi 1 artirdik.
    inc di          ; 2. dizinin sonraki degerini okumak icin di'yi 1 artirdik.
    loop ayni      ; iki deger esitse ayni'ya donuyoruz.
   
farkli:
    push si ; dizideki farkli elemanlarin adreslerini push ile stack'e gonderdik.
    push di
2005 Vize

Bellekteki bir X dizisi yine bellekte yer alan bilgiler ile tanımlıdır. Bu tanıma göre dizi başlangıç adresi 2500:0100H ve dizi uzunluğu ise 2500:0200H adresinde bulunmaktadır. Dizi elemanları içerisinde 40h < x < 57h şartını sağlayan x sayılarını 2 ile çarparak farklı bir dizi olarak kaydeden programı yazınız. Program işleyişini açıklayınız.
    mov bx, 2500h   
    mov ds, bx      ; dizimiz 2500:0100'de bulundugu icin ds'ye 2500 yazdik.
   
    mov al, 50h     ; programin calistigini gormek icin dizinin ilk 4 elemanina
    mov [100h], al  ; degerler atadik.
    mov al, 54h
    mov [101h], al
    mov al, 12h
    mov [102h], al
    mov al, 64h
    mov [103h], al
   
    mov al, 0Fh     ; dizi uzunlugumuzu 0Fh olarak belirledik.
    mov [200h], al  ; bu uzunluk degerini de 200h adresine yazdik.
   
    mov si, 100h    ; kaynak dizimiz 100h adresinden basladigi icin si'ye 100h yazdik.
    mov di, 300h    ; hedef dizimizin baslangic adresini 300h varsaydik ve di'ye yazdik.
    mov cx, [200h]  ; dizi uzunlugunu 200h'dan okuduk.
                    ; ve bu degeri loop (down counter) dongusu icin cx'e kaydettik.

sonraki:   
    mov al, [si]    ; si'nin gosterdigi adresteki veriyi al'ye atadik.
    cmp al, 40h     ; al içerigi ile 40h sayisini karsilastirdik.
    jbe atla        ; eger 40h'dan kucuk veya esitse atla dedik.
    cmp al, 57h     
    jae atla        ; degilse 57h'dan buyuk veya esitse yine atla dedik.
                    ; o da degilse zaten dizi elemanimiz 40h ile 57h arasindadir.
    mov bl, 02h     
    mul bl          ; dizi elemani bu durumu sagliyorsa 2 ile carptik
    mov [di], al    ; ve sonucu di'nin gosterdigi adrese yazdik.
    inc di          ; di'yi 1 arttirdik.
   
atla:
    inc si          ; sonraki elemani karsilastirmak icin si'yi 1 arttirdik.
    loop sonraki
2006 Vize

Bellekte 1000:2000H adresinde 500H byte'lık ve 00-0F ile sınırlı bir X dizisi bulunmaktadır. Y=15x² + 71H bağıntısı ile tanımlı Y dizisini 3000:700H adresine kaydeden programı yazınız. Program işleyişini açıklayınız.
    mov bx, 1000h     
    mov ds, bx      ; kaynak dizimizin baslangici 1000:2000h oldugu icin ds'ye 1000h atadik.
    mov al, 03h
    mov 2000h, al   ; programin calistigini gormek icin dizimizin ilk 3 elemanina degerler atadik.
    mov al, 05h
    mov 2001h, al
    mov al, 04h
    mov 2002h, al   
   
    mov si, 2000h   ; kaynak dizimizin baslangic adresini si'ye atadik.
    mov di, 700h    ; hedef dizimizin baslangic adresini di'ye atadik.
    mov cx, 10h    ; dizimiz 500h byte uzunlugunda oldugundan loop dongusu icin cx'e 500h atadik.
   
devam:
    mov bx, 1000h   
    mov ds, bx      ; ds'miz surekli degistigi icin tekrar 1000h atadik.
       
    mov al, [si]    ; si'nin gosterdigi adresteki veriyi al'ye aldik.
    mul al          ; al'yi kendisiyle carptik. (x*x)
    mov bl, 0Fh     ; bu sonucu 15 ile carpmak icin bl'ye 0Fh atadik.
    mul bl          ; al ile bl'yi carptik (x*x*15)
    add ax, 71h     ; ax'i 71h ile topladik. (x*x*15 + 71h)
    inc si          ; sonraki dizi elemani icin si'yi 1 arttirdik.
   
    mov bx, 3000h   ; sonucu hesapladigimiza gore artik hedef diziye yazabiliriz.
    mov ds, bx      ; hedef dizinin segmenti 3000h oldugundan ds'ye 3000h atadik.
                    ; sonuclar 16bit'e tasmis olabileceginden her sonuc icin 2 byte kullandik.
    mov [di], ah    ; accumulatorun high-byte'ini di'nin gosterdigi adrese,
    inc di
    mov [di], al    ; low-byte'ini ise bir sonraki adrese yazdik.
    inc di
    loop devam
2004 vize

Bellekte 5000:6000H adresinden başlayan ve işaretli sayılardan oluşan 700H byte uzunluğunda bir dizi bulunmaktadır. Dizi içerisinde 4Ah <= x <= 75h şartını sağlayan x sayılarına high-byte olarak C3h eklenecek ve 2 byte halinde başlangıç adresi 7000:8200h olan Y dizisi oluşturulacaktır. İşlemi gerçekleştiren programı yazınız. Program işleyişini açıklayınız.
    MOV CX, 10h     ; soruda dizi 700h uzunlugunda fakat islem uzun surdugu icin biz 10h kabul ettik.
    MOV SI, 6000h
    MOV DI, 8200h
   
    MOV BX, 5000h   ; dizide birkac elemana degerler atadik.
    MOV DS, BX
    MOV AL, 23h
    MOV [SI], AL
    MOV AL, 70h
    MOV [SI+1], AL
    MOV AL, 4Ah
    MOV [SI+2], AL
    MOV AL, 0FFh
    MOV [SI+3], AL
    MOV AL, 00h
    MOV [SI+4], AL
    MOV AL, 4Bh
    MOV [SI+5],AL
   
devam:   
    MOV BX, 5000h
    MOV DS, BX
    MOV AL, [SI]
    CMP AL, 4Ah
    JL atla        ; isaretli sayilarda calisigimiz icin jb yerine jl,
    CMP AL, 75h
    JG atla        ; ja yerine de jg kullandik
    MOV AL, [SI]
    ADD AH, 0C3h   ; accumulatorun high-byteina c3h ekledik.
    MOV BX, 7000h
    MOV DS, BX
    MOV [DI], AH
    INC DI
    MOV [DI], AL
    INC DI
atla:   
    INC SI
    CMP CX, 700h
    LOOP devam
2007 Mikroislemciler II Final - Soru 1

1700h adresli porttan okunan 300h byte'lık veri iki ayrı dizi olarak kaydedilecektir. 22h'dan büyük pozitif sayılar 3 ile çarpılarak 5000:0100h, negatif sayılar ise pozitife çevrilerek 1000:5000h adreslerine dizi olarak kaydedilecektir. İşlemi gerçekleştiren programı yazınız. Program işleyişini açıklayınız.

; Soruda okunacak port adresi 1700h verilmis.
; Biz bunun yerine 110h adresini kullandik.
; emu8086'da bu port adresine sanal olarak veri yazabiliyoruz.
; Bunun icin 'emulate' komutunu verdigimizde karsimiza gelen
; pencereden 'virtual devices' kismindaki 'Simple.exe' yi aciyoruz.
; Bu program ile port 110'a istedigimiz degeri girip
; yazdigimiz programi deneyebiliyoruz.

           MOV CX, 300h          ;LOOP sayaci CX'e 300h yükle.
yeni:   MOV DX, 110h          ;Port adresini DX'e ata. (Yukarida bahsettigimiz sanal port)
           IN  AL, DX                 ;Porttan veriyi oku AL'ye yükle.
           CMP AL, 80h             ;Okunan degerin negatif-pozitifligi incele.
           JAE  negtf                 ;DEGER >= 80h ise negtf'e dallan.
           CMP AL, 22h             ;DEGER < 80h ise pozitiftir, 22h ile karsilastir.
           JA  carp                     ;DEGER > 22h ise carp etiketine dallan.
           LOOP yeni                 ;Bu da degilse CX'i bir azaltip porttan yeni deger oku.
           HLT                           ;CX=00h, programi sonlandir.
carp:   MOV BX, 0003h         ;AL'yi 3 ile carpmak icin BL'ye 03h yukle.
           MUL BL                      ;AL = AL x 03h
           MOV BX, 5000h         ;Sonucun yazilacagı dizi adresi 5000:0100h,
           MOV DS, BX               ;Bunun icin DS'ye 5000h yukle.
           MOV DI, [500h]         ;Elimizde 2 diziye adresleme yapacak ve kullanilmayan 2 register yok.                 
                                            ;Bunun icin RAM'deki 5000:0500h adresini sayac gibi kullanacagiz.
           MOV [100h+DI], AL   ;AL icerigini 100h+DI adresine yaz.
           INC DI                       ;DI += 1
           MOV [500h], DI         ;DI icerigini 500h adresine yaz.
           LOOP yeni                 ;Yeni deger okumak uzere yeni'ye dallan.
           HLT                           ;CX=00h, programi sonlandir.
negtf:  NEG AL                     ;AL'deki negatif sayiyi pozitife cevir.
           MOV BX, 1000h         ;Sonuclarin yazilacagı dizi adresi 1000:5000h,
           MOV DS, BX               ;Bunun icin DS'ye 1000h yukle.
           MOV DI, [500h]         ;1000:0500h adresindeki sayac degerini DI'ye yukle.
           MOV [5000h+DI], AL ;AL icerigini 5000h+DI adresine yaz.
           INC DI                       ;DI += 1
           MOV [500h], DI         ;DI icerigini 1000:500h adresine yaz.
           LOOP yeni                 ;Yeni deger okumak uzere yeni'ye dallan.
           HLT                           ;CX=00h, programi sonlandir.

NEGATİF SAYIYI POZİTİFE ÇEVİREN SATIRI (negtf ETİKETİNİN OLDUĞU SATIR) NEG AL KOMUTU (POZİTİFİ NEGATİF, NEGATİFİ DE POZİTİF YAPAR. KISACASI 2'YE GÖRE TÜMLEME ALIR) İLE DEĞİŞTİRDİM. AND AL,7F MANTIĞI YANLIŞ. BİLGİLERİNİZE...
2003 Mikroislemciler II Final - Soru 1

2000:3000h ve 4000:5000h adreslerinde iki dizi yer almaktadır. Bu iki dizinin aynı olup olmadığını inceleyen ve eğer farklı ise ilk farklı elemanın adresini stack'e kaydeden programı oluşturunuz. Program işleyişini açıklayınız.
       
           MOV CX,100h           ;Dizileri 100h byte kabul ettik. CX=100h
           MOV SI,3000h          ;1. dizinin offset adresini SI'ya,
           MOV DI,5000h          ;2. dizinin offset adresini DI'ya yukle.
next:   MOV BX,2000h       
           MOV DS,BX               ;1. dizinin segment adresini DS'ye yukle.
          ;MOV [SI+10h],45h   ;Bu satir 1. dizinin 10h. elemanini farkli bir sayi yapar.
           MOV AL,[SI]              ;1. dizide SI'nin gosterdigi adresteki veriyi AL'ye al.
           MOV BX,4000h       
           MOV DS,BX               ;2. dizinin segment adresini DS'ye yukle.
           MOV BL,[DI]              ;2.dizide DI'nin gosterdigi adresteki veriyi BL'ye al.
           INC DI                      ;DI=DI+1
           INC SI                      ;SI=SI+1
           CMP AL,BL                ;AL ile BL'i karsilastir.
           LOOPE next             ;AL=BL ve CX!=0 ise next etiketine dallan.
           CMP CX,0000h         ;Dongunun bitis nedeni CX'in sifirlanmasi ise diziler aynidir.
           JE  bitir                     ;CX=0 ise programi sonlandır.
                                           ;AL!=BL ve CL!=0 ise diziler farklidir.
           DEC SI                     ;Yukarida arttirdigimiz SI'yi tekrar azalt.
                                           ;Farkli elemanin adresinin dogru olarak yazmak icin.
           DEC DI                     ;Ayni sekilde DI'yi da azalt.
           PUSH SI                   ;SI icerigini stack'e at.
           PUSH DI                   ;DI icerigini stack'e at.
bitir:    HLT                          ;Programi sonlandir.

bellekte 35000h adresinde 0-120d arası sayılardan olusan 1000h byte lık bir x dizisi bulunmaktadır. Y = Є  3*x^2 + 15 bağıntısı ile tanımlanan toplam Y degerini hesaplayan ve 52000h adresine kaydeden programı yazınız..
Söylediğin DX AX sadece çarpma işlemi sonucu 16 bit'i de aşarsa oluyo bildiğim kadarıyla. Ama burda çarpma işlemi en yüksek sayı olarak 120d = 78h bile olsa maksimum 3840h yani 16 bit oluyo. Bu yüzden tek register yetiyo. Ama sonuç sürekli eski sonuçla toplandığı için yine taşıyo. Bunu da bir register'ı veya ram'deki bir adresin içeriğini her elde gelişinde 1 artırarak çözebiliriz. Çözümde de bunu kullandım. Kolay gelsin 

           MOV AX,3000h
           MOV DS,AX
           MOV SI,5000h
           MOV AL,78h
           MOV [5000h],AL
           MOV [5001h],AL
           MOV [5002h],AL
           MOV [5003h],AL
           MOV [5004h],AL   ;Ornek verileri yukleme...
       
       
       
           MOV CX,1000h     ;LOOP dongusu icin CX=1000h
next:   MOV AX,3000h
           MOV DS,AX           ;35000h adresi = 3000:5000h
           XOR AX,AX            ;AX=0
           MOV BX,03h          ;BX=03h
           MOV AL,[SI]          ;SI'nin gosterdigi degeri AL'ye yukle.
           MUL AX                 ;AX = AX*AX
           MUL BX                 ;AX = AX*3
           ADD AX,15h          ;AX = AX+15 (AX = 3*x^2+15)
           PUSH AX               ;AX icerigini stack'e yedekle
           MOV AX,5000H   
           MOV DS,AX           ;Sonucun yazilacagi adres 52000h=5000:2000h icin DS'yi degistir.
           POP AX                 ;AX icerigini stack'ten geri al.
           ADD AX,[2000h]   ;AX = AX + [2000h icerisindeki deger]
           MOV [2000H],AX  ;Sonucu tekrar 2000h icerisine yaz. (2000h <- AL,2001h <- AH)
           INC SI                  ;Sonraki dizi elemani icin SI=SI+1
           JC  elde               ;Eger yukaridaki toplama sonucunda (MOV AX,[2000h])
                                      ;elde gelirse elde etiketine dallan.
       
           LOOP next           ;Sonraki dizi degeri icin basa don
elde:   INC [2002h]        ;Her elde gelisinde 2002h adresini 1 arttir.
           LOOP next          ;Sonraki dizi degeri icin basa don


Paylaş whatsappPaylaş facebookPaylaş linkedinPaylaş twitterPaylaş myspacePaylaş redditPaylaş diggPaylaş stumblePaylaş technoratiPaylaş delicious