PDA

View Full Version : بازی هوپ



r_oscar2007
جمعه 25 آذر 1390, 15:07 عصر
سلام دوستان ,وقت بخیر چه طوری میشه در اسمبلی بازی هوپ را پیداه کرد برای مضارب سه نه پنج منخود در حد معلوماتم یه چیزایی نوشتم ولی خب این برنامه کامل نیست فقط عدد را از کاربر گرقته وچاپ میکند من میحوام با کمک شما دوستان این برنامه رت طئری کامل کنم که به جای مضارب سه بنوسد HOOP مثلا1 2 HOOP والا اخر

include "EMU8086.INC"
org 100h
call scan_num
loop1:
call print_num
mov ax,cx
dec cx
jns loop1
ret
define_scan_num
define_print_num
define_print_num_uns

xman_1365_x
جمعه 25 آذر 1390, 17:59 عصر
خوب برای این کار باید از 1 تا n رو نمایش بدین و در این حین چک کنید که باقیمانده صفر میشه یا نه اگر شد یعنی مضربی از عدد شما بوده و پیغامتون رو نمایش میدین در غیر اینصورت عدد رو یا کلا چیزی نمایش نمیدین،برای تقسیم هم از 1 تا n/2 باید پیش برین
موفق باشی

r_oscar2007
جمعه 25 آذر 1390, 23:09 عصر
دوست عزیز سلام مرسی از پاسخ سریعتون میشه کدش را برام بذارین سپاسگذارم

xman_1365_x
شنبه 26 آذر 1390, 11:35 صبح
دوست عزیز سلام مرسی از پاسخ سریعتون میشه کدش را برام بذارین سپاسگذارم
نه دوست گرامی تمرین دانشجویی هست و شما باید بنویسید اگر به مشکل خوردین، من و دیگر دوستان راهنمایی میکنیم
من که الگوریتم کلی کارو گفتم الان مشکلتون چیه ؟

r_oscar2007
شنبه 26 آذر 1390, 13:07 عصر
بازهم سلام و ممنون از پاسختون مشکل من اینجاست که نمیدنم چطئر باید چک کنم که با قیمانده صفر شده است یا نه در ضمن برای تقسیم باید از دستئر div استفاده کنم ؟

xman_1365_x
شنبه 26 آذر 1390, 16:08 عصر
بازهم سلام و ممنون از پاسختون مشکل من اینجاست که نمیدنم چطئر باید چک کنم که با قیمانده صفر شده است یا نه در ضمن برای تقسیم باید از دستئر div استفاده کنم ؟
خوب برای این مشکلتون باید درباره دستورالعمل تقسیم مطالعه کنید.
The Division Instructions: DIV, IDIV, and AAD (http://www.arl.wustl.edu/~lockwood/class/cs306/books/artofasm/Chapter_6/CH06-2.html#HEADING2-451)
و از دستور cmp هم برای چک کردن

r_oscar2007
یک شنبه 27 آذر 1390, 16:42 عصر
include "EMU8086.INC"
org 100h
jmp main
r db ?
q db ?
main:
call scan_num
loop1:
mov ax,cx
mov cl,3
div cl
mov q,al
mov r,ah
cmp r,0
call print_num

dec cx

jns loop1

ret
define_scan_num
define_print_num
define_print_num_uns
سلام خسته نباشید من هر چقد بیشتر مطالعه میکنم بیشتر گیج میشم میشه راهنمایی کنید

xman_1365_x
یک شنبه 27 آذر 1390, 18:23 عصر
سلام خسته نباشید من هر چقد بیشتر مطالعه میکنم بیشتر گیج میشم میشه راهنمایی کنید
بزارین مرحله به مرحله بهتون بگم ،هر مرحله که انجام دادین قسمت بعد رو میگم بنویسید!

یک پروسیجر بنویسید که از 1 تا 65535 یا تعدادی که بهتون گفته شده رو به ترتیب نمایش بدین!
یک عدد از کاربر بگیرین و در آدرسی در حافظه قرار بدین

ادامه دارد...

موفق باشی

r_oscar2007
دوشنبه 28 آذر 1390, 00:05 صبح
من تا به اینجای کار هیچ مشکلی ندارم از کاربر یک عدد میگیرم و از یک تا اون عددی را که کاربر وارد کرده را نشان میدم با این کد

include "EMU8086.INC"
org 100h
call scan_num
loop1:
call print_num
mov ax,cx
dec cx
jns loop1
ret
define_scan_num
define_print_num
define_print_num_uns
مشکل از اینجا شروع میشود که من از اینجا به بعد نمیدونم چطوری به فاصله سه تا سه تا بجای مقدار اون عدد بنوسم hoop مثلا 1 2 hoop 4 5 hoop

xman_1365_x
دوشنبه 28 آذر 1390, 16:02 عصر
من تا به اینجای کار هیچ مشکلی ندارم از کاربر یک عدد میگیرم و از یک تا اون عددی را که کاربر وارد کرده را نشان میدم با این کد
مطمئن هستین مشکلی ندارین؟ پس برنامه رو اجرا کنید خروجی رو مشاهده کنید، این برنامه که نوشتین اولا معکوس نمایش میده دوما اشتباهی هم که همین نمایش معکوس داره باید خط 5و6 جاشون تعویض شه ، حال برای 1 تا n بنویسید!

مشکل از اینجا شروع میشود که من از اینجا به بعد نمیدونم چطوری به فاصله سه تا سه تا بجای مقدار اون عدد بنوسم hoop مثلا 1 2 hoop 4 5 hoop
بعد از نمایش اعداد یک تا n که در حال نمایش هستن با عدد ورودی شما مقایسه شه اگر کوچکتر از عدد شما هست نمایش بده در غیر اینصورت باید تقسیمات رو انجام داد اگر باقیمانده صفر بشه یعنی هوپ نمایش میدین در غیر اینصورت بازم ادامه n
حال خود تقسیم هم باید بررسی بشه که اگر حاصل ضرب مقسوم علیه در خارج قسمت بزرگتر از مقسوم شده تقسیم متوقف بشه و n نمایش داده بشه در غیر اینصورت باید از یک تا نصف مقسوم تقسیم رو ادامه بدین اگر باقیمانده صفر شد باید هوپ رو نمایش بدین،همین

موفق باشی