سورس ماشین حساب به زبان اسمبلی
در این بخش سورس ماشین حساب به زبان اسمبلی را برای شما آماده کرده ایم که با استفاده از زبان برنامه نویسی Assembly نوشته شده است. در ادامه می توانید توضیحات، تصاویر و همچنین فیلمی از نحوه اجرای پروژه را مشاهده کنید.
توضیحات پروژه
در این پروژه یک ماشین حساب ساده طراحی شده است که قابلیت انجام چهار عمل اصلی (یعنی جمع، تفریق، ضرب و تقسیم) را دارد. بعد از اجرا شدن برنامه، دو عدد به همراه یکی از عملگرهای مشخص شده از کاربر گرفته می شود. بعد از فشار دادن کلید Enter برنامه نتیجه عملیات را محاسبه کرده و در خروجی چاپ می کند. این یک پروژه ساده اما پر کاربرد است که افراد مبتدی می توانند با مطالعه سورس کد آن نحوه انجام محاسبات ریاضی را یاد گرفته و دانش خود در زمینه برنامه نویسی Assembly را ارتفا دهند. این برنامه با استفاده از برنامه Emu8086 نوشته شده است که می توانید آن از لینک مورد نظر دانلود کنید.
قسمت های از سورس کد
exit macro ماکروی خروج از برنامه mov ax,4c00h کد خروج int 21h endm ;---------------------- gets macro str ماکروی گرفتن اطلاعات از کاربر pushreg lea dx,str ادرس رشته در اینجا توی دی ایکس ذخیره میشه mov ah,0ah تابع گرفتن اطلاعات int 21h popreg endm ;---------------------- prints macro str چاپ اطلاعات pushreg lea dx,str mov ah,09h int 21h popreg endm ;---------------------- atoi macro str,n,len تبدیل رشته به عدد local while1 pushreg lea di,str mov ax,0 mov bx,10 mov ch,0 mov cl,len while1: mul bl mov dx,0 mov dl,byte ptr[di] sub dx,48 add ax,dx inc di loop while1 mov n,al popreg endm ;---------------------- .model small .stack 64 .data strlist1 label byte تعریف برچسب برای ورودی عدد اول max1 db 5 len1 db ? str1 db 6 dup('$') strlist2 label byte تعریف برچسب برای ورودی عدد دوم max2 db 5 len2 db ? str2 db 6 dup('$') strlist3 label byte تعریف برچسب برای ورودی عملگر max3 db 2 len3 db ? op db 2 dup('$') str3 db 5 dup(' '),'$' نتیجه در اینجا ذخیره میشه msgn1 db 10,13,"Enter Number1:$" اینها پیفام ها هستند 10و13 یعنی یه خط برو پایین msgn2 db 10,13,"Enter Number2:$" msgop db 10,13,"Enter op(+ , - , * , /):$" msgR db 10,13,"Result:$" n1 db 0 رشته اول بعد اینکه به عدد تبدیل شد در این متغیر ذخیره میشه n2 db 0 رشته دوم بعد اینکه به عدد تبدیل شد در این متغیر ذخیره میشه R db 0 حاصل اینجا ذخیره میشه .code main proc far mov ax,@data mov ds,ax prints msgn1 چاپ پیغام دریافت عدد اول gets strlist1 گرفتن عدد اول prints msgn2 چاپ پیغام دریافت عدد دوم gets strlist2 گرفتن عدد دوم prints msgop چاپ پیغام دریافت عملگر gets strlist3 گرفتن عملگر atoi str1,n1,len1 تبدیل رشته عددی اول به عدد و قرار دادن آن در ان1 atoi str2,n2,len2 تبدیل رشته عددی دوم به عدد و قرار دادن آن در ان2 cmp op,'+' مقایسه عمگر با جمع jne skipplus برابر نباشه به پر و جمع رو رد کن mov al,n1 عدد اول در ا ال add al,n2 جمع ا ال با ان 2 و ذخیره در ا ال mov R,al حاصل رو به ار بده jmp endcalc پرش کن به اخر و نتیجه رو اونجا چاپ کن skipplus: cmp op,'-' jne skipmin برابر نباشه به پر و تفریق رو رد کن mov al,n1 عدد اول در ا ال sub al,n2 تفریق ا ال با ان 2 و ذخیره در ا ال mov R,al حاصل رو به ار بده jmp endcalc پرش کن به اخر و نتیجه رو اونجا چاپ کن skipmin: cmp op,'*' getc کلید میگیره exit پایان main endp end main
نوشته سورس ماشین حساب به زبان اسمبلی اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.