۱۰
پروژه: ساخت ماشین حساب ساده
با تمام چیزهایی که یاد گرفتیم، یک ابزار خط فرمان کاربردی میسازیم.
هدف پروژه
وقتشه همه چیزایی که یاد گرفتیم رو در عمل استفاده کنیم! میخوایم یه ماشین حساب ساده بسازیم که دو عدد تک رقمی رو از ورودی خط فرمان بگیره و حاصل جمعشون رو چاپ کنه.
کد کامل پروژه
این برنامه دو عدد رو از کاربر میخونه، اونها رو از کاراکتر ASCII به عدد واقعی تبدیل میکنه، جمع میکنه و نتیجه رو دوباره به کاراکتر تبدیل و چاپ میکنه.
section .data
msg1 db "Enter a digit ", 0xa, 0xd
len1 equ $- msg1
msg2 db "Please enter a second digit", 0xa, 0xd
len2 equ $- msg2
msg3 db "The sum is: "
len3 equ $- msg3
section .bss
num1 resb 2
num2 resb 2
res resb 1
section .text
global _start
_start:
; خواندن اولین عدد
mov eax, 4
mov ebx, 1
mov ecx, msg1
mov edx, len1
int 0x80
mov eax, 3
mov ebx, 0
mov ecx, num1
mov edx, 2
int 0x80
; خواندن دومین عدد
mov eax, 4
mov ebx, 1
mov ecx, msg2
mov edx, len2
int 0x80
mov eax, 3
mov ebx, 0
mov ecx, num2
mov edx, 2
int 0x80
; نمایش پیام نتیجه
mov eax, 4
mov ebx, 1
mov ecx, msg3
mov edx, len3
int 0x80
; تبدیل کاراکترها به عدد و جمع کردن
mov eax, [num1]
sub eax, '0' ; تبدیل از ASCII به عدد
mov ebx, [num2]
sub ebx, '0' ; تبدیل از ASCII به عدد
add eax, ebx
add eax, '0' ; تبدیل دوباره به ASCII برای چاپ
mov [res], eax
; چاپ نتیجه
mov eax, 4
mov ebx, 1
mov ecx, res
mov edx, 1
int 0x80
; خروج
mov eax, 1
int 0x80
آفرین! دوره اسمبلی تموم شد! 🤖🏆
شما با موفقیت این دوره رو به پایان رسوندین و حالا یه درک خیلی عمیق از نحوه کار کامپیوترها دارین. این دانش پایه، به شما در یادگیری هر زبان و تکنولوژی دیگهای کمک خواهد کرد. خسته نباشی!