PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : دانلود رایگان پروژه ماشین حساب ساده به زبان برنامه نوریب ااسمبلی Calculator Assembly



Borna66
05-18-2013, 01:09 PM
ماشین حساب اسمبلی

http://pnu-club.com/imported/2013/05/1875.jpg
با سلام. این سورس یه برنامه تقریبا ساده ماشین حساب به زبان اسمبلی است که با نرم افزار شبیه ساز EMU نوشته شده.این برنامه با ماوس کار میکنه و همون چهار عمل اصلی رو با محدودیت پنج رقم و بدون اعشار انجام میده. (شرمنده که کامل نیستش!) (بازهم شرمنده که تو 64 بیتی ها اجرا نمیشه)



دانلود از بخش ضمیمه همین پست بصورت رایگان


دستورات اصلی بدین شرح هستند:

0)عدد موجود در x را چاپ کن
1)عدد اول را دریافت کن(رشته را در buffer قرار بده، و عدد را در x قرار بده)
2)بعد از آن عملگر اول را دریافت کن
3)اگر عملگر "=" بود ، به خط صفر برگرد؛در غبر این صورت ادامه بده :
4)عدد دوم را دریافت کن(رشته را در buffer قرار بده و عدد را درy قرار بده)
5)عملگر دوم را دریافت کن
6)با فراخوانی calculatore نتیجه عبارت x(عملگر اول)y را حساب کن و حاصل را در xقرار بده
7)اگر عملگر دوم "=" بود، به خط 0 برگرد؛در غیر اینصورت ادامه بده:
8)عملگر دوم را در عملگر اول قرار بده و به خط 5 برگرد.


با این دستورات مثلا شما میتوانید عبارت 3*6-4+8= و یا 4+5= ویا -6/5= را وارد کنید.

البته به این دلیل که x,y را word تعریف کردم و از همان ثبات های دوبیتی استفاده کردم فقط میشود اعداد تا پنج رقم را استفاده کرد و اگر حاصل از آن بیشتر شد علامت o بمعنی سرریز در گوشه صفحه چاپ میشود که باید در اینصورت دکمه C را کلیک کرد تا برنامه به خط صفر برگردد.
برنامه فقط تا پنج رفم را دریافت میکند و رقم بعدی را _هرچه باشد_ عملگر "=" حساب میکند.
ضمنا اعداد مثبت و منفی را هم در محاسبات درنظر میگیرد.برای وارد کردن عدد منفی باید بنویسی -8= یا -8*... .

این هم دستورات اصلی برنامست:




call print_screen
begin:
reset
calc1:
putrez buffer,x ;print x
number_in x,operand1,lenth
mov al,operand1
cmp al,'='
je calc1
calc2:
number_in y,operand2,lenth
call calculate ;x = x (operand1) y
mov al,operand2
cmp al,'='
je calc1 ;if(operand2=='='):printx,start again.
mov operand1,al ;else:operand1=operand2,printx,get buffer again.
putrez buffer,x
jmp calc2


امیدوارم بدردتون بخوره.


دانلود از بخش ضمیمه همین پست بصورت رایگان