ورود

View Full Version : نمایش عدد موجود در DX:AX



gholami.vahid
یک شنبه 01 دی 1392, 21:23 عصر
سلام دوستان من میخوام سینوس و کسینوس یک زاویه رو با اسمبلی حساب کنم (اگه کسی برنامه اسمبلیشو داره برام بفرسته)

یه قسمتی داره که باید اعداد رو تا توان 11 برسونید که عدد بزرگ میشه و در داخل DX:AX قرار میگیره
حالا میخوام این عدد رو چاپ کنم لطف کنید راهنمایی کنید

Delphi Coder
دوشنبه 02 دی 1392, 15:21 عصر
تقسیمات متوالی به عدد 10. باقیمانده ها از آخر نوشته میشند و زمانی که خارج قسمت به کمتر از 10 رسید عینا در ادامه نوشته میشه. ولی باید در نظر داشت اگر عدد بزرگتر از یه حدی باشه که خارج قسمت تقسیم بر 10 بزرگتر از 65535 باشه به مشکل devide overflow برخورد میکنید. به عبارتی بزرگترین عددی که میتونید با این روش بنویسید 655350 هست. اگر اعدادتون از این بزرگتر بود باید به استفاده از رجیسترهای 32 بیتی روی بیارید.

Delphi Coder
دوشنبه 02 دی 1392, 15:22 عصر
در ضمن اعداد بدست آمده باید با عدد 48 جمع بشن تا کاراکتر متناظر برای چاپ روی صفحه بدست بیاد.

gholami.vahid
دوشنبه 02 دی 1392, 15:55 عصر
سلام ممنونم از پاسخ کاملت
منظورت از رجیسترهای 32 بیتی Eax , Ebx بود اگه اره بهم بگو چرا خطا میده ونمیشه ازشون استفاده کنم (8086)
در کل من فقط میخوام عدد رو به این صورت حساب کنم
به نظر یه اگه x=180 باشه نیازی به رجیسترهای هست

http://hnq.ir/up/sin.png

Delphi Coder
دوشنبه 02 دی 1392, 16:23 عصر
اگه اره بهم بگو چرا خطا میده ونمیشه ازشون استفاده کنم (8086)

توی چه محیطی یا از چه اسمبلری استفاده میکنید که error میده؟

gholami.vahid
دوشنبه 02 دی 1392, 18:01 عصر
توی چه محیطی یا از چه اسمبلری استفاده میکنید که error میده؟

نرم افزار Emu8086

Delphi Coder
دوشنبه 02 دی 1392, 19:15 عصر
این امولاتور رجیسترهای 32 بیتی رو فکر نمیکنم ساپورت کنه چون این رجیسترها از 80386 به بعد معنی پیدا میکنند. اول برنامه این خط رو اضافه کنید:

.386
اگر جواب داد که هیچ اگر نه از یه اسمبلر برای پیاده سازی باید استفاده کنید.

gholami.vahid
دوشنبه 02 دی 1392, 19:55 عصر
این امولاتور رجیسترهای 32 بیتی رو فکر نمیکنم ساپورت کنه چون این رجیسترها از 80386 به بعد معنی پیدا میکنند. اول برنامه این خط رو اضافه کنید:

.386
اگر جواب داد که هیچ اگر نه از یه اسمبلر برای پیاده سازی باید استفاده کنید.

میدونی استادم گفته با املاتور 8086 انجام بدم و میدونم که اصلا در این مورد فکر نکرده و همینطوری پروزه داده نمیدونم باید چیکار کنم بازم ممنون

gholami.vahid
دوشنبه 02 دی 1392, 20:02 عصر
شرمنده کسی اطلاع داره 3.14 رو چطوری باید در Ax قرار بدم

Delphi Coder
دوشنبه 02 دی 1392, 20:07 عصر
تو این فرمول x بر حسب درجه هست؟

gholami.vahid
دوشنبه 02 دی 1392, 20:09 عصر
تو این فرمول x بر حسب درجه هست؟

بله بر حسب درجه است

Delphi Coder
دوشنبه 02 دی 1392, 21:12 عصر
پیاده سازی این فرمول که اون بالا میبینم اونم صرفا با دستورات 16 بیتی 8086 یکم دور از ذهنه و معقول و منطقی به نظر نمیاد. من فکر میکنم یا استاد اشتباه طرح کرده مساله رو یا شما اشتباه متوجه شدید (نمیدونم مطمئن نیستم شاید هم راهی باشه که من بلد نیستم)
به هر حال اگر خود استاد همچین کدی تونست بنویسه که جواب قابل قبول ارائه بده یا حتی کد آماده داشت لطفا اینجا هم بزارید تا ما هم استفاده کنیم.

gholami.vahid
دوشنبه 02 دی 1392, 21:17 عصر
پیاده سازی این فرمول که اون بالا میبینم اونم صرفا با دستورات 16 بیتی 8086 یکم دور از ذهنه و معقول و منطقی به نظر نمیاد. من فکر میکنم یا استاد اشتباه طرح کرده مساله رو یا شما اشتباه متوجه شدید (نمیدونم مطمئن نیستم شاید هم راهی باشه که من بلد نیستم)
به هر حال اگر خود استاد همچین کدی تونست بنویسه که جواب قابل قبول ارائه بده یا حتی کد آماده داشت لطفا اینجا هم بزارید تا ما هم استفاده کنیم.

من خودم نوشتمش و با ماشین حساب که حساب میکنم یکم اعشارش دقیق در نمیاد مثلا سینوس یک میشه 0.0174523 و تو برنامه ای که نوشتم میشه 0.0163020 و
حالا میخوام یکم دقیق ترش کنم هر چند بازم دقیقه

Delphi Coder
دوشنبه 02 دی 1392, 21:19 عصر
لطفا اگر ممکنه کدش رو اینجا هم بزارید. ممنون

gholami.vahid
دوشنبه 02 دی 1392, 21:20 عصر
باشه چشم ولی به نظرت کامله

Delphi Coder
دوشنبه 02 دی 1392, 21:27 عصر
من کلا نظری ندارم فقط مشتاق هستم کد شما رو ببینم. مثلا برای من سوال هست 9! که میشه 362880 اینکه چطور یک عدد رو به عدد به این بزرگی تقسیم کردید خودش یک داستانی شگفت انگیز هست زمانی که محدود به دستورات 16 بیت 8086 باشیم. من دوست دارم ببینم این کارها چطور انجام شده.

Delphi Coder
دوشنبه 02 دی 1392, 21:31 عصر
یا مثلا اگر بگیم 90 درجه و x=90 باشه 90 به توان 9 میشه 387420489000000000 میخوام ببینم این محاسبات چجوری انجام شده. واقعا اینها سواله