Assembly Dilinde İki Basamaklı İki Sayının Toplanması
Assembly Dilinde İki Basamaklı İki Sayının Toplanması
Bu yazımızda bir tane Assembly kodu denemesi yapıyoruz. Makine diline en yakın kod olan bu dil ile kod yazma işlemi zorlayıcı ve vakit alıcı olduğundan daha yüksek seviyeli diller kullanmaktayız günlük hayatımızda ama yine de 'Ne kadar zor olabilir ki?' diyenler için iki basamaklı iki sayının toplamını yapan programı kendimde deneyerek açıklamaya çalıştım.
Tabi ki normal bir Python dilinden daha detaylı bir şekilde olacağı açıktır ama altta yapmış olacağımız assembly programının python versiyonunu gösterelim, öyle devam edelim. Aradaki farkı daha güzel anlamış oluruz diye düşünüyorum böylelikle.
Python Kodu
x = int(input('ilk sayiyi giriniz: '))
y = int(input('ikinci sayiyi giriniz: '))
c = x+y
print(c)
Çıktısı
Assembly Kodu
;IKI SAYIYI TOPLAMA UYGULAMASI
;ONEMLI NOT >>>
;>>> Iki basamakli iki sayinin toplami yapilabilmektedir sadece.
.model small
.stack 10
;burasi baslangicta duracak.
.data
;dolar isareti bundan sonrasini okuma demek.
;13,10 yazisi ise \n islemini goruyor diyebiliriz.
sayi_bir db 'ilk sayiyi girin:', '$'
sayi_iki db 13,10,'ikinci sayiyi girin:', '$'
sonuc db 13,10,'Toplami:', '$'
;burada ustte sorularin metinlerini sakliyoruz,
;sonrasinda cagiracagiz.
.code; kod kismina giris yapacagiz simdi
mov ax,@data ;burasi basta lazim
mov ds,ax ;yine burasi da lazim
;ilk basta birinci sayiyi isteyecegiz kullanicidan
lea dx, sayi_bir
mov ah, 9
int 21h
;burada 1.sayiyi iki basamak seklinde alacagiz
mov ah, 1 ;kullanicidan boyle aliyoruz bir karakteri
int 21h
SUB al, 48
mov bh, al
mov ah, 1
int 21h
SUB al, 48
mov bl, al ; bh:bl birinci sayi
;ikinci sayiyi isteyecegiz simdi
lea dx, sayi_iki
mov ah, 9
int 21h
;burada 2.sayiyi iki basamak seklinde alacagiz
mov ah, 1
int 21h
SUB al, 48
mov ch, al
mov ah, 1
int 21h
SUB al, 48
mov cl, al ; ch:cl ikinci sayi
;iki sayiyi aldik suanda
add bl, cl ;toplama islemi oluyor
mov al, bl ;toplam deger al'ye aktarildi
mov ah, 0
AAA
mov cl, al ; cevabin son digiti
mov bl, ah
add bl, bh
add bl, ch
mov al, bl
mov ah, 0
AAA
mov bx, ax
mov dx, OFFSET sonuc ;sonucu gosterecegiz simdi
mov ah, 9
int 21h
;yuzler basamagi gosterimi
mov dl, bh
add dl, 48
mov ah, 2
int 21h
;onlar basamagi gosterimi
mov dl, bl
add dl, 48
mov ah, 2
int 21h
;birler basamagi gosterimi
mov dl, cl
add dl, 48
mov ah, 2
int 21h
;bitis
mov ah,4ch
int 21h
end ;kod bitiyor burada.
Yorumlar
Yorum Gönder