برای مشاهده مفیدترین ارسال در این موضوع اینجا کلیک کنید

صفحه 1 از 2 12 آخرینآخرین
نمایش نتایج: از شماره 1 تا 10 از مجموع 15
  1. #1
    مهشید فلاح
    تاریخ عضویت
    2012 January
    سن
    31
    ارسال ها
    294
    تشکر
    1,374
    تشکر شده 863 بار در 337 پست
    نوشته های وبلاگ
    10


    آيا اين پست براي شما سودمند بود؟ بله | خیر

    Question حل چند تمرین درس اسمبلی

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

    1) وارون کردن دو رشته (وارون یک رشته را در رشته دیگری بریزید)

    2)تکه برنامه ای بنویسید که 10 خانه اول رشته str1 را به ابتدای str2 ببرد؟ (بدون دستور movsb یا movsw )

    3) با لود کردن 10 خانه آخر رشته str2 در آکومالاتور به ان یه بایت اضافه کند؟ (بدون دستور رشته ای)

    4) تعداد کاراکتر های "A" در رشته "str1" را در DX بریزید؟


    لطفا اگه میتونید کمک کنین

    امام جواد علیه السلام :
    ثَلاثٌ مَن کُنَّ فِیهِ لَم یَندَم: تَرکُ العَجَلة ، وَ المَشوِرَة ، وَ التَّوَکُلُ عَلَی اللهِ عِندَ العَزمِ؛
    سه چیز است که هر ** آن را مراعات کند ، پشمیان نگردد : 1 - اجتناب از عجله ، 2 - مشورت کردن ، 3 - و توکل بر خدا در هنگام تصمیم گیری .





  2. #2
    مهشید فلاح
    تاریخ عضویت
    2012 January
    سن
    31
    ارسال ها
    294
    تشکر
    1,374
    تشکر شده 863 بار در 337 پست
    نوشته های وبلاگ
    10


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    اینو واسه سوال 4 نوشتیم
    نمیدونیم درسته یا نه
    دوستان اگه میشه یه چک کنید لطقا



    mov counter,0
    lea si,str
    mov di,0
    mov cx,50
    l1:
    cmp byte ptr [si+di],'A'
    jne l3
    inc counter
    l3: inc di
    loop l1


    mov DX,counter
    .
    .
    ..
    .


    ویرایش توسط Mahshid : 7th January 2013 در ساعت 10:42 AM
    امام جواد علیه السلام :
    ثَلاثٌ مَن کُنَّ فِیهِ لَم یَندَم: تَرکُ العَجَلة ، وَ المَشوِرَة ، وَ التَّوَکُلُ عَلَی اللهِ عِندَ العَزمِ؛
    سه چیز است که هر ** آن را مراعات کند ، پشمیان نگردد : 1 - اجتناب از عجله ، 2 - مشورت کردن ، 3 - و توکل بر خدا در هنگام تصمیم گیری .





  3. #3
    SUPERMODERATOR
    تاریخ عضویت
    2012 May
    ارسال ها
    430
    تشکر
    750
    تشکر شده 961 بار در 440 پست
    نوشته های وبلاگ
    4


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    نقل قول نوشته اصلی توسط mahshid نمایش پست ها
    اینو واسه سوال 4 نوشتیم
    نمیدونیم درسته یا نه
    دوستان اگه میشه یه چک کنید لطقا



    mov counter,0
    lea si,str
    mov di,0
    mov cx,50
    l1:
    Cmp byte ptr [si+di],'a'
    jne l3
    inc counter
    l3: Inc di
    loop l1


    mov dx,counter
    .
    .
    ..
    .

    به نظرم کد شما اشتباست ...
    1.چرا cx رو 50 گذاشتین؟؟!! شاید مثلا طول رشته 100 باشه !! سوال که طول رشته رو مشخص نکرد!!!
    2.cmp دو عملوند رو از هم کم و بعد 2تا رو با هم مقایسه میکنه.... درسته که مثل sub عمل نمیکنه(حاصل رو در اولی نمیریزه و با هم مقایسه میکنه) ولی به نظرم اینجا از دستورات رشته ای استفاده بشه بهتره...


    ویرایش توسط Tishab : 7th January 2013 در ساعت 07:36 PM
    سه جمله برای کسب موفقیت: ..... 1. بیشتر از دیگران بدانید.....2. بیشتر از دیگران کار کنید......3. کمتر انتظار داشته باشید. ( ویلیام شکسپیر )

  4. #4
    بنیانگذار
    تاریخ عضویت
    2010 January
    محل سکونت
    زیر سایه خدا
    سن
    37
    ارسال ها
    1,308
    تشکر
    2,923
    تشکر شده 2,205 بار در 886 پست
    نوشته های وبلاگ
    37


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    نقل قول نوشته اصلی توسط Mahshid نمایش پست ها
    سلام
    استاد نوریان سر کلاساشون چند تا تمرین داده بودن که حل کنیم
    اگه میشه کمک کنین تا اینا رو حل کنیم

    1) وارون کردن دو رشته (وارون یک رشته را در رشته دیگری بریزید)

    2)تکه برنامه ای بنویسید که 10 خانه اول رشته str1 را به ابتدای str2 ببرد؟ (بدون دستور movsb یا movsw )

    3) با لود کردن 10 خانه آخر رشته str2 در آکومالاتور به ان یه بایت اضافه کند؟ (بدون دستور رشته ای)

    4) تعداد کاراکتر های "A" در رشته "str1" را در DX بریزید؟


    لطفا اگه میتونید کمک کنین


    نقل قول نوشته اصلی توسط Mahshid نمایش پست ها
    1) وارون کردن دو رشته (وارون یک رشته را در رشته دیگری بریزید)
    یه حلقه بسازید تا وقتی که کاربر مثلا کلید انتر رو نزد از کاربر رشته رو دریافت کنه (یعنی کاراکتر به کاراکتر ) . بعد هر کاراکتری که دریافت شد یه کانتر بزارید و بشمارید . وقتی کاربر انتر رو زد یه اشاره گر میسازید که اشاره داره به ابتدای رشته دوم (مثلا di ) و بعد یه اشاره گر دیگه مثلا si رو اشاره بدید به انتهای رشته اول . (میتونید اول si رو به ابتدای رشته اول اشاره بدید بعد جمعش کنید با اون کانتر . اینطوری به انتهای رشته اشاره میکنه ) . (یا اینکه همون موقع که دارید رشته رو کاراکتر به کاراتر دریافت میکنید si افزایش پیدا کنه (اول به ابتدای رشته اول اشاره داره هر کاراکتر که میاد و انتر نیست وارد رشته میکنه و si یک واحد میره جلو و همینطور تا اخر و اینطور si به اخر رشته اول اشاره خواهد کرد .
    بعد در یک حلقه تا زمانی که کانتر صفر نشده شروع به کپی کردن از جایی که si اشاره میکنه به جایی که di اشاره میکنه بکنید. si رو یک واحد کم و di رو یکواحد زیاد کنید .
    وقتی حلقه تموم بشه رشته دوم شما معکوس رشته اول خواهد بود.
    (اگه از ماکروهای IO.h استفاده کنید فکر کنم طول رشته ورودی رو در بایت اول بزاره و اینطور نیازی به محاسبه اون توسط خودتون نیست).
    کاری که باید بکنید اینه
    نقل قول نوشته اصلی توسط Mahshid نمایش پست ها
    2)تکه برنامه ای بنویسید که 10 خانه اول رشته str1 را به ابتدای str2 ببرد؟ (بدون دستور movsb یا movsw )
    از همون الگوریتم بالا میتونید برای همین استفاده کنید . بجای کل رشته کافیه si رو با 10 جمع کنید . بقیه اش یکسانه.

    نقل قول نوشته اصلی توسط Mahshid نمایش پست ها
    ) با لود کردن 10 خانه آخر رشته str2 در آکومالاتور به ان یه بایت اضافه کند؟ (بدون دستور رشته ای)
    مثل بالا .

    mov counter,0
    lea si,str
    mov di,0;ezafe hast
    mov cx,50
    l1:
    cmp byte ptr [si],'A'
    jne l3
    inc counter
    l3: inc si
    loop l1


    mov DX,counter
    .
    .
    ..
    .

    4 . برای گزینه اخر هم کارتون درسته .منتها نیازی نیست که si رو با di جمع کنید. همون si کافیه . و si رو هر بار یکواحد افزایش بدید که به کاراکتر بعدی رشته اشاره کنه . cx هم برابر با طول رشته قرار بدید نه 50. برای بدست اوردن طول رشته هم میتونید از راهنمایی بالا استفاده کنید .

    ویرایش توسط friendchp : 7th January 2013 در ساعت 07:38 PM

  5. #5
    مهشید فلاح
    تاریخ عضویت
    2012 January
    سن
    31
    ارسال ها
    294
    تشکر
    1,374
    تشکر شده 863 بار در 337 پست
    نوشته های وبلاگ
    10


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    در مورد اون 50 نمیدونستم واسه طولش چه کنم گفتم همین باشه فعلا
    واسه cmp هم آخر جزوه های استاد یه مثالی تقریبا شبیه این بود به خاطر همین یکی از دوستان اینو پیشنهاد کردن

    امام جواد علیه السلام :
    ثَلاثٌ مَن کُنَّ فِیهِ لَم یَندَم: تَرکُ العَجَلة ، وَ المَشوِرَة ، وَ التَّوَکُلُ عَلَی اللهِ عِندَ العَزمِ؛
    سه چیز است که هر ** آن را مراعات کند ، پشمیان نگردد : 1 - اجتناب از عجله ، 2 - مشورت کردن ، 3 - و توکل بر خدا در هنگام تصمیم گیری .





  6. #6
    SUPERMODERATOR
    تاریخ عضویت
    2012 May
    ارسال ها
    430
    تشکر
    750
    تشکر شده 961 بار در 440 پست
    نوشته های وبلاگ
    4


    1 امتياز مثبت از 1 راي
    آيا اين پست براي شما سودمند بود؟ بله | خیر

    پاسخ سوالات...

    نقل قول نوشته اصلی توسط Mahshid نمایش پست ها
    سلام
    استاد نوریان سر کلاساشون چند تا تمرین داده بودن که حل کنیم
    اگه میشه کمک کنین تا اینا رو حل کنیم

    1) وارون کردن دو رشته (وارون یک رشته را در رشته دیگری بریزید)

    2)تکه برنامه ای بنویسید که 10 خانه اول رشته str1 را به ابتدای str2 ببرد؟ (بدون دستور movsb یا movsw )

    3) با لود کردن 10 خانه آخر رشته str2 در آکومالاتور به ان یه بایت اضافه کند؟ (بدون دستور رشته ای)

    4) تعداد کاراکتر های "A" در رشته "str1" را در DX بریزید؟


    لطفا اگه میتونید کمک کنین
    بعده چند روز بالاخره قضیه اینترنت ما هم حل شد...

    کد 4تا سوال رو نوشتم....ولی مطمئن نیستم که درست باشه... اگه به نظر کسی اشتباست... بگه؟؟؟!!

    جواب1) با فرض اینکه دو رشته هم طول هستند :

    Mov CX,Length STR1
    LEA SI,STR1
    LEA DI,STR2
    REP LODSB
    Mov CX,length STR1
    L1: Mov DI,CX
    STOSB
    Loop L1



    جواب2)

    LEA SI,STR1
    LEA DI,STR2
    Mov CX,10
    L1: Mov DI,[SI]
    INC SI
    INC DI
    Loop L1



    جواب3)

    Mov CX,10
    LEA SI,STR1
    Mov AX,Length STR1
    ADD SI,AX
    SUB SI,10
    L1: Mov AL,[SI]
    INC AL
    INC SI
    Loop L1




    جواب4)

    Counter DB 0
    Mov CX,Length STR1
    LEA DI,STR1
    Mov AL,"A"

    L1: REPNE SCASB
    JZ L2
    INC Counter
    INC DI
    DEC CX
    Loop L1
    L2: Mov DX,Counter



    سه جمله برای کسب موفقیت: ..... 1. بیشتر از دیگران بدانید.....2. بیشتر از دیگران کار کنید......3. کمتر انتظار داشته باشید. ( ویلیام شکسپیر )

  7. #7
    مهشید فلاح
    تاریخ عضویت
    2012 January
    سن
    31
    ارسال ها
    294
    تشکر
    1,374
    تشکر شده 863 بار در 337 پست
    نوشته های وبلاگ
    10


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    نقل قول نوشته اصلی توسط Tishab نمایش پست ها
    جواب1) با فرض اینکه دو رشته هم طول هستند :

    Mov CX,Length STR1
    LEA SI,STR1
    LEA DI,STR2
    REP LODSB
    Mov CX,length STR1
    L1: Mov DI,CX
    STOSB
    Loop L1



    ببخشید میشه سوال یک رو توضیح بدید؟؟

    امام جواد علیه السلام :
    ثَلاثٌ مَن کُنَّ فِیهِ لَم یَندَم: تَرکُ العَجَلة ، وَ المَشوِرَة ، وَ التَّوَکُلُ عَلَی اللهِ عِندَ العَزمِ؛
    سه چیز است که هر ** آن را مراعات کند ، پشمیان نگردد : 1 - اجتناب از عجله ، 2 - مشورت کردن ، 3 - و توکل بر خدا در هنگام تصمیم گیری .





  8. #8
    SUPERMODERATOR
    تاریخ عضویت
    2012 May
    ارسال ها
    430
    تشکر
    750
    تشکر شده 961 بار در 440 پست
    نوشته های وبلاگ
    4


    1 امتياز مثبت از 1 راي
    آيا اين پست براي شما سودمند بود؟ بله | خیر
    خط به خط ؟؟؟!!!!

    1.طول STR1 رو در CX میریزه.
    2. آدرس STR1 رو در DI میریزه.
    3. آدرس STR2 رو در SI میریزه.
    4. محتویات SI رو در ثبات اکومولاتور میریزه ، در AL یا AX ، دستور REP این خط رو به تعداد طول رشته یعنی CX تکرار میکنه... پس تا اینجا محتویات STR1 رفته به AX
    5. دوباره طول رشته رو گرفتیم... اینطوری هم میشد که همون بالا طول رشته رو در BX هم بریزیم وایجا دوباره BX رو بریزیم در CX
    6. حالا که حلقه شروع شد هر بار مقدارCX رو در DI میریزیم
    7. STOSB : محتویات AX یا AL رو در DI میریزه... خب حالا چون در خط قبلی مقدارCX رو در DI ریختیم پس از انتهای رشته داریم جای گذاری رو انجام میدیم... یعنی اولین داده میره به انتهای رشته دومی... حالا STOSB مقدار DI رو هم یکی زیاد میکنه ولی چون در ابتدای حلقه هر بار مقدارCX رو در DI میریزیم این یکی زیاد شدن تاثیر نداره...

    همین مراحلی که نوشتم رو روی کاغذ پیاده کنید متوجه میشید...


    سه جمله برای کسب موفقیت: ..... 1. بیشتر از دیگران بدانید.....2. بیشتر از دیگران کار کنید......3. کمتر انتظار داشته باشید. ( ویلیام شکسپیر )

  9. #9
    SUPERMODERATOR
    تاریخ عضویت
    2012 May
    ارسال ها
    430
    تشکر
    750
    تشکر شده 961 بار در 440 پست
    نوشته های وبلاگ
    4


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    یه چیز یادم رفت بگم...اینکه محتویات در ax بره یا فقط al بستگی به این داره که محتویات چند بیتی باشه... برا همین چند جا گفتم ax یا al !!!

    سه جمله برای کسب موفقیت: ..... 1. بیشتر از دیگران بدانید.....2. بیشتر از دیگران کار کنید......3. کمتر انتظار داشته باشید. ( ویلیام شکسپیر )

  10. #10
    مهشید فلاح
    تاریخ عضویت
    2012 January
    سن
    31
    ارسال ها
    294
    تشکر
    1,374
    تشکر شده 863 بار در 337 پست
    نوشته های وبلاگ
    10


    آيا اين پست براي شما سودمند بود؟ بله | خیر
    بله
    اینا رو دیگه میدونم

    امام جواد علیه السلام :
    ثَلاثٌ مَن کُنَّ فِیهِ لَم یَندَم: تَرکُ العَجَلة ، وَ المَشوِرَة ، وَ التَّوَکُلُ عَلَی اللهِ عِندَ العَزمِ؛
    سه چیز است که هر ** آن را مراعات کند ، پشمیان نگردد : 1 - اجتناب از عجله ، 2 - مشورت کردن ، 3 - و توکل بر خدا در هنگام تصمیم گیری .





 

 
صفحه 1 از 2 12 آخرینآخرین

کاربران برچسب خورده در این موضوع

علاقه مندی ها (Bookmarks)

علاقه مندی ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •  


Powered by vBulletin
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO 3.6.0
Persian Language By Ustmb.ir
این انجمن کاملا مستقل بوده و هیچ ارتباطی با دانشگاه علوم و فنون مازندران و مسئولان آن ندارد..این انجمن و تمامی محتوای تولید شده در آن توسط دانشجویان فعلی و فارغ التحصیل ادوار گذشته این دانشگاه برای استفاده دانشجویان جدید این دانشگاه و جامعه دانشگاهی کشور فراهم شده است.لطفا برای اطلاعات بیشتر در رابطه با ماهیت انجمن با مدیریت انجمن ارتباط برقرار کنید
ساعت 09:53 AM بر حسب GMT +4 می باشد.