۱۰

پروژه: ساخت ماشین حساب ساده

با تمام چیزهایی که یاد گرفتیم، یک ابزار خط فرمان کاربردی می‌سازیم.

هدف پروژه

وقتشه همه چیزایی که یاد گرفتیم رو در عمل استفاده کنیم! می‌خوایم یه ماشین حساب ساده بسازیم که دو عدد تک رقمی رو از ورودی خط فرمان بگیره و حاصل جمعشون رو چاپ کنه.

کد کامل پروژه

این برنامه دو عدد رو از کاربر می‌خونه، اون‌ها رو از کاراکتر 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

آفرین! دوره اسمبلی تموم شد! 🤖🏆

شما با موفقیت این دوره رو به پایان رسوندین و حالا یه درک خیلی عمیق از نحوه کار کامپیوترها دارین. این دانش پایه، به شما در یادگیری هر زبان و تکنولوژی دیگه‌ای کمک خواهد کرد. خسته نباشی!