سورس ماشین حساب به زبان اسمبلی

calculator in assembly 7562 تصویر

سورس ماشین حساب به زبان اسمبلی

در این بخش سورس ماشین حساب به زبان اسمبلی را برای شما آماده کرده ایم که با استفاده از زبان برنامه نویسی 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

نوشته سورس ماشین حساب به زبان اسمبلی اولین بار در سورس سرا - آموزش برنامه نویسی. پدیدار شد.

درباره نویسنده: administrator

ممکن است دوست داشته باشید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *