دوستان برای ساخت یه ماشین حساب با زبان اسمبلی چی کار باید کرد ؟
کسی الان ساخته کمک میخوام .برا پروژه ترم هستش .
جمع کنه .ضرب کنه . منها .تقسیم ..
راه حل بدین .کد بدین .فقط کمک کنید دیگه هر چی در توانتونه .
دوستان برای ساخت یه ماشین حساب با زبان اسمبلی چی کار باید کرد ؟
کسی الان ساخته کمک میخوام .برا پروژه ترم هستش .
جمع کنه .ضرب کنه . منها .تقسیم ..
راه حل بدین .کد بدین .فقط کمک کنید دیگه هر چی در توانتونه .
سلام
اول مشخص کن ماشین حسابت گرافیکی یا فقط دوتا بهش عدد بدی و بعد عملگر و بعد نتیجه رو بگیری؟
اگر ماشین حسابت گرافیکی که تو این پست توضیح دادم
https://barnamenevis.org/showthread.php?476791-گرافیک-در-اسمبلی-(-طراحی-ظاهر-یک-ماشین-حساب-)
اگربه صورت معمولیه!!
خوب اول میای رشته عددی رو از ورودی میگیری با وقفه int 21h ah,0ah یا int 21/ah,01 و...
و رشنه عددی رو به عدد تبدیل میکنی (ارزش گذاری) که جستجو کنی داخل انجمن نحوه ارزش گذاری رو پیدا میکنی...
و بعد میای اون عملگر مورد نظر که "+" "-" "*" "/" رو از کاربر مگیری خوب و طبق انتخاب از این چهار عملگر عملیات مورد نظر رو روی اعداد انجام میدی..
موفق باشی.
یه ماشین حساب تو emu8086 هستش ولی 500 خطه اگه بخوایم اونو تحلیل کنیم میتونیم جمع و جورترش کنیم ؟ یعنی کمتر باشه ؟
سلام
بله امکانش هست با استفاده از تابع و ماکرو و جایگزین کردن بعضی دستورات میشه حجم کدو کاهش داد.(البته بستگی به سورس کد داره)
موفق باشی.
من واقعا نمیدونم چطور جایگزین کنم
قطعه کد هایی که زیاد تو برنامت تکرار شده رو به صورت ماکرو بنویسی یا تابع میتونی کدت رو بزاری تا راهنماییت کنم
موفق باشی..
میرم تا سورس ماشین حساب emulator 8086 رو بررسی کنم تا هر جا گه بتونم پیش میرم ممنون
خود ماشین حساب رو هنوز شروع نکردم .
ولی تو کتاب یه کد اسمبلی پیدا گردم برای جمع دو عدد اسکی که اگه درست بشه شاید جمع ماشین حساب درست بشه.
ولی با emo8086 زدم بهم جواب نداد .هر کسی میتونه یه نگاه به کد بندازه برام درستش کنه ممنون میشم .
دوستان فقط اگه ممکنه زودتر کمک کنید .پس فردا پایانترم دارم که باید پروژه ماشین حساب با گرافیک رو را تحویل بدم .
stseg segment db 64 dup (?)
stseg ends
;----------------------
data segment
number1 db "0123456789"
org 0020h
number2 db "0779563678"
org 0040h
result1 db 10 dup(?)
org 0060h
result2 db 10 dup(?)
data ends
;----------------------
cdseg segment
main proc far
assume cs:cdseg,ds:data,ss:stseg
mov ax,data
mov ds,ax
call asc_add
call convert
mov ah,4ch
int 21h
main endp
asc_add proc
clc
mov cx,10
mov bx,9
back: mov al,number1[bx]
adc al,number2[bx]
aaa
mov result1[bx],al
dec bx
loop back
ret
asc_add endp
convert proc
mov bx,offset result1
mov si,offset result2
mov cx,05
back2: mov ax,word ptr[bx]
or ax,3030h
mov word ptr [si],ax
add bx,2
add si,2
loop back2
ret
convert endp
cdseg ends
end main
سلام
اگه تو فرم دنبال میگشتی دربارش خیلی توضیح دادم..توی همین پست نگاه کن...
برنامه خطا داره وهمچنین عمل جمعو اشتباه انجام میده.. این برنامه جوری که من فهمیدم داره دوتا عدد بزرگ رو جمع میکنه..و بیشتر برنامت اشتباهه..
سعی کن با توضیحاتی که من دادم برنامتو بنویسی..
موفق باشی.
آخرین ویرایش به وسیله masoud.8086 : جمعه 19 دی 1393 در 14:27 عصر