در قسمت جمع دچار مشکل شدیم، ما وقتیکه عملیات جمع بصورت لیبل بود کد مورد نظر رو نوشتیم اما در این جایگاه جواب نمیده ، خطاهایی که بوجود اومد رو گرفتیم اما فکر نکنم با این دو خط کد برنامه بتونه دو تا رشته رو با هم جمع کنه ،ممنون میشم راهنمایی بفرمایید ، بااحترام
خیلی خب . میشه متن ارورهاتون روهم بنویسید ؟
چیزی که مشخصه عین روز این هست که کد بالا به هیچ عنوان درست نیست . و همونطور که خودتون هم گفتید شما نمیتونید دو تا رشته رو با هم جمع کنید . اول باید رشته ها رو تبدیل به عدد متناظرشون کنید و بعد با استفاده از دستور Add اون دو عدد رو با هم جمع کنید .
برای تبدیل هم از همون Atoi که کامنتش کردید میتونید استفاده کنید . بعد از استفاده از این دستور عدد مورد نظر شما تو ثبات AX قرار میگیره و میتونید ازش استفاده کنید.
اشتباه شما تو دستور بالا این هست . که قبل از اینکه مقدار عدد اول که تو ثبات AX قرار گرفت رو یکجای دیگه ذخیره کنید بلافاصله اومدید و عدد دورم رو تبدیل کردید! و اینطور مقدار عدد اول از بین رفته و در نتیجه جمع درست کار نخواهد . کرد . شما بجای دستور بالا باید اینطور مینوشتید :
ما متد جمع اعداد رو براساس قواعد تعین شده نوشتیم اما جواب نمیده، باید دو رشته مربوطه رو به عدد تبدیل کنیم و این کار باید از طریق atoi انجام بشه ما این کار رو میکنیم اما به برنامه خطا میده ، الان سوالی که برام پیش اومده اینه که این تبدیل رشته به عدد رو باید کجای برنامه بهش گفت ؟ ، در داخل متد وقتی این تبدیل انجام میشه بهش خطا میگیره ، ممنون میشم توضیح بدین. بااحترام
همونطور که فرمودین اون کدها رو اعمال کردم اما برنامه باز هم دچار خطا میشه در قسمتهای atoi و itoa
;=================add==============;??? mogheyee ke mikhad be adad tabdil beshe khata migire ???????
do_add proc
;atoi string
mov bx,ax
;atoi string2
add ax,bx
gotoxy 8,19
mov c,ax
;itoa c,ax
;mov ah,09h
;lea dx,y
;int 21h
mov ah,01h
int 21h ;;getch
ret
do_add endp
ویرایش توسط NIIT : 11th August 2011 در ساعت 11:12 PM
قبل از اینکه مشکل بالا رو خدمتتون بگم لطفا از این به بعد بجای اینکه تاپیک جدیدی بزنین سوالتون رو در همون تاپیک قدیمی عنوان کنین تا وقتی که به نتیجه برسه .
برای حواب دادن هم میتونید از پایین همین صفحه برای جواب دادن یا بیان مشکلتون در مورد این تاپیک استفاده کنید .
حالا بریم سر اصل مطلب .
من ازتون خواسته بودم Error که میگیرید رو اینجا بنویسید . الان مشخص نیست خطایی که دارید ازش صحبت میکنید در زمان کامپایل اتفاق می افته براتون یا اینکه یه خطای منطقی هست و مثلا نتیجه جمع اون چیزی که میخوایید نیست !
خب بریم سر کدتون .
این کدی که قرار دادید یه مشکل منطقی داره . و اون هم مربوط میشه به موقعی که شما قصد دارید نتیجه جمع رو وارد متغیر C کنید . یعنی اینجا
gotoxy 8,19
mov c,ax
;itoa c,ax
اول اینکه اون دستور MOV که نوشتید بی فایده و زائد هست .
mov c,ax
چرا که با استفاده از دستور بعدیش یعنی دستور ITOA مقدار موجود در AX به رشته تبدیل شده و وارد متغییر C میشه . و شما فقط به همین دستور نیاز دارید .
حالا یک خط بالاترش یعنی خط 10 که نوشتید :
gotoxy 8,19
این ماکرو مقدار AX شما رو خراب میکنه . اگه دوباره به تعریف این ماکرو نگاه کنید میبینید که AH داخل اون داره مقدار دهی میشه .
برای اینکه مقدار AX که حاوی نتیجه جمع دو عدد ماست قبل از تبدیل شدن خراب نشه میتونیم این کارو انجام بدیم .
GOTOXY فقط برای انتقال مکان نما استفاده میشه و عموما هم این کار رو برای چاپ کردن یک چیزی استفاده میکنن مثل نمونه شما . بنابر این خیلی راحت میتونید دقیقا بلافاصله همونجایی که میخوایید رشتتون رو چاپ کنید دقیقا قبلش از این GOTOXY استفاده کنید .
حالا باز اگه ارور دیگه ای میده لطفا کنید حتما ارور رو بنویسید که بدونم چیکار دارید میکنید .
در متد جمع دچار مشکل شدم ، همونطور که گفتین اون کدها رو اعمال کردم اما باز هم در قسمتهای atoi , itoaخطا میده و خطایی که میده در هر سه جایی که از itoa, atoi استفاده شده اینه: Expected: instruction , directive , or lable
شما باید ابتدای سورس کدتون io.h رو اینکلود کنید که نکردید . تعریف atoi , itoa در این فایل قرار داره .
برنامه دچار مشکل include io.h ، وقتی ننوشته بودیم و از atoi و itoa استفاده کرده بودیم 3 تا خطا میداد الان که ازش استفاده کردیم دیگه اصلا برنامه رو اجرا نمیکنه و این خطا رو میده
برنامه دچار مشکل include io.h ، وقتی ننوشته بودیم و از atoi و itoa استفاده کرده بودیم 3 تا خطا میداد الان که ازش استفاده کردیم دیگه اصلا برنامه رو اجرا نمیکنه و این خطا رو میده
include file not found : io.h
ممنون میشم راهنمایی بفرمایید
بااحترام
این فایلها موقع کامپایل برنامتون کنار سورس کدتون باشه .
نباید ارور بده .
اگر باز ارور داد لطفا دستوری که برای لینک مینویسید اینجا بنویسید ببینم درست این کارو انجام میدید یا خیر.
برنامه برای جمع خطا نمیده که بتونم متن خطایی براتون بفرستم، فقط اجرا نمیکنه . میشه یه راهنمایی ای بفرمایین که مشکل ما حل بشه. خیلی ازتون ممنون میشم ، براتون اصل برنامه رو میفرستم ، ممنون میشم چک بفرمایین.بااحترام
ویرایش توسط NIIT : 12th August 2011 در ساعت 10:37 PM
علاقه مندی ها (Bookmarks)