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.

Çıktısı



Yorumlar

Bu blogdaki popüler yayınlar

Python ile Turtle Kütüphanesiyle Çizim Denemesi 2

Girdimize en yakın palindrom değeri bulan program (Python3 ile)

Python ile Yazıyı Piramit Gibi Çizdirme