دوستان میخوام روش شمارش یاد بگیرم یه برنامه خیلی خیلی ساده نیاز دارم مثلا
از 1تا 10 جمع کنه نتیجه چاپ کنه 1+2+3+4+5+6+7+8+9+10
به این صورت نیاز دارم البته برنامه من اشتباه هسته درستشو نیاز دارم شرمنده سوالم ابتدایی
کد:
mov cl,10
mov ch,0
l1:
add a,1
jcxz l2
dec cx
jmp l1
l2:
mov dx,a
mov ah,9h
int 21h
نکته کنکوری:
استفاده از loop باعث میشه که هر بار که حلقه اجرا میشه یک واحد از cx کم بشه
نکته کنکوری ۲:
xor ax , ax یعنی ax رو 0 کن کلا؛ فرقی نداره که 0 رو mov کنی تو ax ؛ اما میگن سرعتش بیشتره. چون از یه گیت استفاده میشه؛ اما عدد بخواییم بدیم یکی یکی باید وارد بشه و ...
کد php:
org 100h
mov cx ,10
xor ax, ax
l1:
add ax , cx
loop l1
ret
سلام ممنون ولی شرمنده یه روش خیلی ساده تر دگه که فقط از
dec
add
jcxz
jmp
استفاده بشه میتونی بذاری فقط فقط از همین چهارتایی من گفتم استفاده بشه و روش چاپشم بنویس ممنون
میخوام یه عدد مثلا کاربر عددوارد کنه برنامه
1+2+3+4+5
با استفاده از این چهار تایی که خودم گفتم بدست بیاره و چاپ کنه
(۰۲-اردیبهشت-۱۳۹۲, ۱۶:۰۹:۰۳)aleas نوشته است: [ -> ]سلام ممنون ولی شرمنده یه روش خیلی ساده تر دگه که فقط از
dec
add
jcxz
jmp
استفاده بشه میتونی بذاری فقط فقط از همین چهارتایی من گفتم استفاده بشه و روش چاپشم بنویس ممنون
میخوام یه عدد مثلا کاربر عددوارد کنه برنامه
1+2+3+4+5
با استفاده از این چهار تایی که خودم گفتم بدست بیاره و چاپ کنه
اونی که نوشتم سادهتره ها!
خب یهو بگو loop رو دستی پیاده سازی کن دیگه
کد php:
org 100h
mov cx , 10
mov ax, 0
l1:
add ax , cx
jcxz l2
dec cx
jmp l1
l2:
;ETC
ret
اره دگه خوشم میاد خودت خوب میفهمی
عزیز من این ترم درس اسمبلی دارم برای همین تازه واردم !!!
اگر امکان داره برنامه کامل بنویس اخه من اینجوری نوشتم ولی عمل نمیکنه
کد:
mov cx , 10
mov ax, 0
l1:
add ax , cx
jcxz l2
dec cx
jmp l1
l2:
;ETC
mov dx,ax
mov ah,9h
int 21h
ضمنا" اینم مطمن باش این برنامه پروژه به هیچ عنوان نیسته فقط جهت یاد گیری هسته !!
میخوام یادم بگیرم با این دستوراتی گفتم حلقه رو خودم شبیه سازی کنم
میخوام برنامه یه عدد از ورودی بگیره مثلا
7
بعد
1+2+3+4+5+6+7
حساب کنه بعد نتیجه را چاپ کنه
بازم تاکید میکنم فقط فقط از
dec
add
jcxz
jmp
استفاده بشه
مهندس رفتم تحقیقات؛ واسه چاپ اعداد که معادل هگزش توی خونه هست وقفهای وجود نداره چاپش کنی
باید خودت بنویسی؛ البته یجا خوندم اعداد به دو روش ذخیره میشوند؛ یکی معمولی و یکی BCD و یه دستور بود بنام AAA که اعداد رو تبدیل میکرد و....
یه همچین چیزایی بود
در انتظار مدیر بخش میمانیم تا پاسخو باشد
ممنون عزیز انشالا مدیر بخش جواب بدن !
چون منم هر چی گشتم روش مناسبی ندیدم البته روش هایی دیدم ولی بکار من نمیاد چون ازشون سر در نمی یارم هر کدوم از روش هایی دیدم بالا 200 خط برنامه بود که صرف نمیکنه باید احتمالا روش ساده ای که در چند خط نوشته بشه وجود داشته باشه!
سلام الیاس
برای گرفتن ورودی به صورت عدد یا باید از توابع کتابخونه ای استفاده کنی یابیای خودت کاراکترهای عددی رو به عدد تبدیل کنی برای این کار باید هر کاراکتر عددی رو از مقدار 48 کم کنی چون کداسکی کاراکتر '0' برابر 48 هستش فقط یه مسئله میمونه اگه کاربر بخواد یه عدد دو رقمی به بالا رو وارد کنه باید توی حلقه تعریف کنی تا زمانی که enter وارد نکرده از اولین رقم باید به عدد تبدیل کنی و ضرب در 10 کنی با رقم بعد جمع کنی
ممنون من الان مشکلم چاپ عدد هسته
سلام.
برای چاپ هر نوع داده ای در emu8086 راه های بسیاری هست.
برای مثال شما جمع اعداد یک تا ده حساب می کنی بعد داخل یک متغییر میریزی که مقدار هگز است و بعد با استفاده از دکمه vars مقدار تمام متغییر ها را به شما نشان میدهد و می توانید به بقیه مبناها هم تبدیل کنید و ....
موفق باشید.