ورود

View Full Version : سوال: مشکل در اجرای برنامه



majid-promakers
پنج شنبه 25 آذر 1389, 17:38 عصر
سلام دوستان
من میخوام که یک برنامه بنویسم که یک رشته رو از ورودی بگیره و سپس حروف بزرگ رو به کوچک تبدیل کنه و در صفحه نمایش چاپ کنه . برنامه رو در محیط EMU 8086 نوشتم اما موقع run ازم خطا میگیره . این کد برنامه ای هست که من نوشتم :



dseg segment
str1 dB 21 Dup("$")
dseg ends
cseg segment
assume cs;cseg,ds;dseg
main proc far
l1: mov ah,08h
int 21h
cmp al,41h
jb l2
cmp al,5Ah
ja l2
or al,0DFh
mov [bx],al
inc bx
jmp l1
l2:mov ah,09h
lea dx,str1
int 21h
mov ah,4ch
int 21h
main endp
end main


به قسمت l1:move ah,08h گیر میده و اجراش نمیکنه . لطفا اگه کسی میدونه مشکل این برنامه کجاست بهم بگه . راستش من تازه اسمبلی رو شروع کردم و خیلی حرفه ای نیستم ، خواهش میکنم طوری توضیح بدید که بفهمم .

ممونم ...

majid-promakers
پنج شنبه 25 آذر 1389, 19:41 عصر
دوستان کسی نیست که بتونه به من کمک کنه ؟؟؟؟

xman_1365_x
پنج شنبه 25 آذر 1389, 20:19 عصر
من میخوام که یک برنامه بنویسم که یک رشته رو از ورودی بگیره و سپس حروف بزرگ رو به کوچک تبدیل کنه و در صفحه نمایش چاپ کنه .
خوب از اول با وقفه عدد رو بگيريد
بعد مقايسه كنيد بيت ششم رو كه ببينيد بزرگ هست يا كوچك
اگر بزرگ بود تبديل به كوچك بعد هم با وقفه نمايش بديد

برنامه رو در محیط EMU 8086 نوشتم اما موقع run ازم خطا میگیره .
با emu 4.08 تست كردم مشكلي در اجرا نداشت اما در خروجي چرا براي همين طبق توضيح بالا عمل كنيد.

majid-promakers
پنج شنبه 25 آذر 1389, 21:22 عصر
ببخشید ولی من اصلا متوجه نشدم :گریه:
همونطور که گفتم تازه وارد هستم اگر ممکنه یه خوردی واضح تر توضیح بدید واقعا ممنون میشم .

من میخوام برنامه خروجی بده و بتونم باهاش کار کنم

ممکنه بگید این کدهایی که من نوشتم کجاش مشکل داره و باید چطوری درستشون کنم ؟

xman_1365_x
پنج شنبه 25 آذر 1389, 21:52 عصر
عزيزم از اين واضح تر بايد بياي اسمبلي يادت بدم!:لبخندساده: فعلا وقت ندارم اگر نه توضيخ خط بخط برات مينوشتم
براي خروجي گرفتن بايد توسط اسمبلر به زبان ماشين تبديل شه پس نياز به اسمبلر داريد،اينو با fasm به فايل اجرايي تبديل كن

majid-promakers
پنج شنبه 25 آذر 1389, 22:17 عصر
ممنونم دوست عزیزم از راهنمایی که کردی

فقط یه سوال کوچولوی دیگه داشتم . چطوری می تونم این کدهایی که نوشتم رو پس از اینکه در Note Pad با پسوند asm سیو کردم ، کاری کنم که با پسوند OBJ و exe هم سیو بشه ؟

در حقیقت من میخوام این کدها رو با سه فرمت asm ، obj و exe ذخیره کنم . چطوری باید اینکار رو انجام بدم ؟
(راستی پیغامی به دست من نرسیده )

xman_1365_x
پنج شنبه 25 آذر 1389, 22:25 عصر
قبلا من و دوستاي ديگه گذاشتن توي فروم جستجو كني پيدا ميكنيد!
من شما رو با دوست ديگه اي كه از مشهد بود اشتباه گرفتم:لبخند:
براي همين پست هاي بالا رو ويرايش كردم
و اينجا دوباره ميگم

من میخوام که یک برنامه بنویسم که یک رشته رو از ورودی بگیره و سپس حروف بزرگ رو به کوچک تبدیل کنه و در صفحه نمایش چاپ کنه برنامه اي كه نوشتي رو وقت ندارم ببينم مشكلتو بگم
اما الگوريتمش مشخص هست مواردي كه نياز داري
1- از ورودي رشته بگير بريز توي يك آرايه(با وقفه)
2-تابعي براي تبديل اسكي به باينري و بلعكس(كم كردن يا اضافه كردن 48)
3-كاري كني بيت ششم كه نشان دهنده حروف كوچك بزرگ هست هميشه كوچه بشود يا مقايسه كني اگه بزرك بود بعد كوچك كني
4-چاپ در صفحه نمايش(وقفه)
5- در همون emu8086 ميتوني به فايل اجرايي تبديلش كني! فقط موقع اجرا بر روي exe بزن
موفق باشي

majid-promakers
پنج شنبه 25 آذر 1389, 23:14 عصر
متوجه نمیشممممم :گریه:

از کمکت ممنونم دوست گلم ولی من اصلا نفهمیدم ، میدونم سرت شلوغه و واقعا ازت ممنونم که جواب دادی

از دوستان دیگه خواهش میکنم منو کمک کنن ، بهم بگن کجای برنامه مشکل داره و چی باید بنویسم تا درست بشه :گریه: خواهش میکنم ...

majid-promakers
جمعه 26 آذر 1389, 11:22 صبح
دوستان خواهش میکنم جوابی بدید

xman_1365_x
جمعه 26 آذر 1389, 13:47 عصر
spam=خدا اين پيام خصوصي رو از شما دوستان نگيره :لبخند: موقع امتحانا شده همه به تكاپو افتادن هي پيام ميدن بهم:لبخند: منم درس دارما
شما در اول اومدي از كيبورد يك ورودي گرفتي بقيه برنامت اشتباهه:لبخند:
مگه خودت ننوشتي رشته بگيري؟ مگه نگفتم ارايه ميخواي؟
تو از ورودي تكي داري ميگيري خوب بايد يك حلقه بزاري تا به تعداد مشخص رشته بگيري بعد ذخيره كني در ارايه
حالا همه خونه هاي آرايه رو يكي يكي OR كن با 00100000B تا همه حروف چه بزرگ باشه چه كوچك به حروف كوچك تبديل ميشه(اين كارو براي سريعتر شدم ميشه هموم موقع گرفتن عدد انجام داد!)
حالا نمايش بده همين
اين تكه برنامه يك كاراكتر رو ميگيره بزرگ يا كوچك فرقي نداره،كوچك نمايش ميده! ،حالا شما بلدي يك حلقه بنويسي و يك آرايه؟


mov ah,08h
int 21h

or al,00100000b


mov dl,al
mov ah,02h
int 21h

xman_1365_x
جمعه 26 آذر 1389, 13:55 عصر
راستي نمي دونم چرا no echo استفاده كردي براي همين در اين برنامه
خط اول رو به اين تغيير بده تا كاراكتري كه وارد ميكني ببيني!
AH = 01h

majid-promakers
جمعه 26 آذر 1389, 16:30 عصر
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aa

xman_1365_x
جمعه 26 آذر 1389, 19:40 عصر
پست بالا رو چرا پاك كردين؟
منتظرم بنويسيش بياي خط به خط بگي با چه استدلالي نوشتي(يعني از ديد خودت اون خط چي كار ميكنه!)

majid-promakers
جمعه 26 آذر 1389, 19:50 عصر
ccccccccccccccccc

xman_1365_x
جمعه 26 آذر 1389, 20:50 عصر
دوست عزيزم سورس كامل برات نوشتم كه از اينجا برش ميدارم تا ديگراني كه از اين به بعد ميان تحقيق كنند.
اما براي يادگيري
0-الگوريتم اوني كه من گفتم يا خودت بگو هر چي دوست داري
1- نگاهي به خطوطي كه نوشتم بنداز هز جاشو نمي فهمي بگو
2-برنامه اي كه خودت نوشتي هم برام خط بخخط توضيح بده ببينم با چه استدلالي نوشتي
3-يك سورس سي (كنسولي) بنويس كه همين كاروو انجام بده
موفق باشي

majid-promakers
جمعه 26 آذر 1389, 21:06 عصر
bbbbbbbbbbbbbbbbbbbb