ماريا اسلام

[ تمت الإجابة ]سؤال يتعلق بقلب مصفوفة

10 ردود في هذا الموضوع

لو سمحتم أريد كود برنامج لقلب مصفوفة بلغة التجميع  .. أنا مستعجلة ممكن يكون الرد بسرعة !

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

انسخ الكود
  1. INCLUDE Irvine32.inc
  2. .data
  3. msg byte "Enter the string",0
  4. msg1 byte "the reversed string",0
  5. arr byte "assemply",0
  6. arr1 byte ?
  7. arrsize= ($-arr)-2
  8. .code
  9. main PROC
  10.  
  11. mov edx,offset msg
  12. call writestring
  13. call crlf
  14. call readstring
  15.  
  16. mov esi ,0
  17. mov ecx ,arrsize
  18. l:
  19. movzx eax,arr[esi]
  20. push eax
  21. inc esi
  22. loop l
  23.  
  24. mov ecx ,arrsize
  25. mov esi ,0
  26. l1:
  27. pop eax
  28. mov arr1[esi],al
  29. inc esi
  30. loop l1
  31.  
  32. mov edx,offset arr1
  33. call writestring
  34. call crlf
  35. main ENDP
  36.  
  37. END main
  38.  

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

توقعت أن تكون البيئة 16 بت

يمكن تحويله ليعمل مع 32بت بسهولة

انسخ الكود
  1.  
  2. [color= #ff007f;]jmp[/color] real_s
  3.  
  4. [color= #007f00; font-style: italic;]; data[/color]
  5. arr [color= #7f00ff;]db[/color] [color= #ff0000;]1h[/color][color= #0000ff;],[/color][color= #ff0000;]2h[/color][color= #0000ff;],[/color][color= #ff0000;]3h[/color][color= #0000ff;],[/color][color= #ff0000;]4h[/color][color= #0000ff;],[/color][color= #ff0000;]5h[/color][color= #0000ff;],[/color][color= #7f7f7f;]0[/color] [color= #007f00; font-style: italic;]; any length[/color]
  6.  
  7. real_s[color= #0000ff;]:[/color]
  8. [color= #007f00; font-style: italic;]; now let the fun begin[/color]
  9. [color= #ff007f;]lea[/color] [color= #7f7f40;]si[/color][color= #0000ff;],[/color]arr
  10. [color= #ff007f;]xor[/color] [color= #7f7f40;]cx[/color][color= #0000ff;],[/color][color= #7f7f40;]cx[/color]
  11. @@[color= #0000ff;]:[/color]
  12. [color= #ff007f;]mov[/color] [color= #7f7f40;]bl[/color][color= #0000ff;],[/color][color= #0000a0; font-weight: bold;][[/color][color= #7f7f40;]si[/color][color= #0000ff;]+[/color][color= #7f7f40;]cx[/color][color= #0000a0; font-weight: bold;]][/color]
  13. [color= #ff007f;]add[/color] [color= #7f7f40;]cx[/color][color= #0000ff;],[/color][color= #7f7f7f;]1[/color]
  14. [color= #ff007f;]test[/color] [color= #7f7f40;]bl[/color][color= #0000ff;],[/color][color= #7f7f40;]bl[/color]
  15. [color= #ff007f;]jne[/color] [color= #aa007f;]@B[/color]
  16. [color= #ff007f;]lea[/color] [color= #7f7f40;]si[/color][color= #0000ff;],[/color]arr
  17. [color= #ff007f;]lea[/color] [color= #7f7f40;]di[/color][color= #0000ff;],[/color]arr
  18. [color= #ff007f;]sub[/color] [color= #7f7f40;]cx[/color][color= #0000ff;],[/color][color= #7f7f7f;]1[/color]
  19. [color= #ff007f;]lea[/color] [color= #7f7f40;]di[/color][color= #0000ff;],[/color][color= #0000a0; font-weight: bold;][[/color][color= #7f7f40;]di[/color][color= #0000ff;]+[/color]cx[color= #7f7f7f;]-1[/color][color= #0000a0; font-weight: bold;]][/color]
  20. [color= #ff007f;]shr[/color] [color= #7f7f40;]cx[/color][color= #0000ff;],[/color][color= #7f7f7f;]1[/color]
  21. [color= #ff007f;]neg[/color] [color= #7f7f40;]cx[/color]
  22. [color= #ff007f;]sub[/color] [color= #7f7f40;]si[/color][color= #0000ff;],[/color][color= #7f7f40;]cx[/color]
  23. @@[color= #0000ff;]:[/color]
  24. [color= #ff007f;]mov[/color] [color= #7f7f40;]al[/color][color= #0000ff;],[/color][color= #0000a0; font-weight: bold;][[/color][color= #7f7f40;]si[/color][color= #0000ff;]+[/color][color= #7f7f40;]cx[/color][color= #0000a0; font-weight: bold;]][/color]
  25. [color= #ff007f;]mov[/color] [color= #7f7f40;]bl[/color][color= #0000ff;],[/color][color= #0000a0; font-weight: bold;][[/color][color= #7f7f40;]di[/color][color= #0000a0; font-weight: bold;]][/color]
  26. [color= #ff007f;]mov[/color] [color= #0000a0; font-weight: bold;][[/color][color= #7f7f40;]si[/color][color= #0000ff;]+[/color][color= #7f7f40;]cx[/color][color= #0000a0; font-weight: bold;]][/color][color= #0000ff;],[/color][color= #7f7f40;]bl[/color]
  27. [color= #ff007f;]mov[/color] [color= #0000a0; font-weight: bold;][[/color][color= #7f7f40;]di[/color][color= #0000a0; font-weight: bold;]][/color][color= #0000ff;],[/color][color= #7f7f40;]al[/color]
  28. [color= #ff007f;]sub[/color] [color= #7f7f40;]di[/color][color= #0000ff;],[/color][color= #7f7f7f;]1[/color]
  29. [color= #ff007f;]add[/color] [color= #7f7f40;]cx[/color][color= #0000ff;],[/color][color= #7f7f7f;]1[/color]
  30. [color= #ff007f;]jne[/color] [color= #aa007f;]@B[/color]
  31.  
  32. [color= #007f00; font-style: italic;]; at this point, the array has been swapped.[/color]
  33. [color= #ff007f;]mov[/color] [color= #7f7f40;]ax[/color][color= #0000ff;],[/color] [color= #ff0000;]4c00h[/color]
  34. [color= #ff007f;]int[/color] [color= #ff0000;]21h[/color]
  35.  

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

مبدع كالعاده Xacker

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

بشكركم على الرد بسرعة .. بس طلع معاي أخطاء تقريباً سبعة أخطاء 

للإيضاح أنا أعمل على برنامج turbo assembler 4.1

بالنسبة لبرنامج xacker كان قريب نوعاً ما

يمكن تقولوا أني غبية بهذه اللغة لأنه بصراحة ما في عندنا تدريس بشكل جيد لهذه اللغة ، بس طرحوا خطتهم وخلونا حقل تجارب 

أتمنى تردوا بسرعة 

معايا محاضرة غداً الأربعاء الساعة العاشرة 

 

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

السلام عليكم ورحمة الله وبركاته

للعلم الشفرة التي وضعتها في الأعلى ليست برنامج كامل تقوم بنسخه ولصقه في assembler للحصول على برنامج تنفيذي وإنما هو الجزء الذي يقوم بالعملية المطلوبة.

قمت بتحويله ليتناسب مع TASM (استخدمت TASM 1.x في التجميع و debug في اختبار نجاح التنفيذ)

* يرجى الانتباه إلى تغير استخدام المسجلات داخل الشفرة الجديدة حيث تم استخدام BX كـ Base Register وتعديل المستخدمة في حمل البايتات.

انسخ الكود
  1.  
  2. [color= #007f00; font-style: italic;]; flip an array algorithm[/color]
  3.  
  4. _stack [color= #7f00ff;]segment[/color] [color= #aa007f;]para[/color] [color= #7f00ff;]stack[/color] [color= #0000a0;]'stack'[/color]
  5. [color= #7f00ff;]dw[/color] [color= #7f7f7f;]32[/color] [color= #7f00ff;]dup[/color] [color= #0000a0; font-weight: bold;]([/color]?[color= #0000a0; font-weight: bold;])[/color]
  6. _stack [color= #7f00ff;]ends[/color]
  7.  
  8. _dataseg [color= #7f00ff;]segment[/color] [color= #aa007f;]para[/color] [color= #0000a0;]'data'[/color]
  9.  
  10. _dataseg [color= #7f00ff;]ends[/color]
  11.  
  12. [color= #7f00ff;]assume[/color] [color= #7f7f40;]ss[/color][color= #0000ff;]:[/color]_stack[color= #0000ff;],[/color][color= #7f7f40;]ds[/color][color= #0000ff;]:[/color]_dataseg[color= #0000ff;],[/color][color= #7f7f40;]cs[/color][color= #0000ff;]:[/color]_codeseg
  13.  
  14. _codeseg [color= #7f00ff;]segment[/color] [color= #aa007f;]para[/color] [color= #0000a0;]'code'[/color]
  15.  
  16. main [color= #7f00ff;]proc[/color] [color= #aa007f;]far[/color]
  17.  
  18. [color= #ff007f;]jmp[/color] real_s
  19.  
  20. [color= #007f00; font-style: italic;]; data[/color]
  21. arr [color= #7f00ff;]db[/color] [color= #ff0000;]1h[/color][color= #0000ff;],[/color][color= #ff0000;]2h[/color][color= #0000ff;],[/color][color= #ff0000;]3h[/color][color= #0000ff;],[/color][color= #ff0000;]4h[/color][color= #0000ff;],[/color][color= #ff0000;]5h[/color][color= #0000ff;],[/color][color= #7f7f7f;]0[/color] [color= #007f00; font-style: italic;]; any length[/color]
  22.  
  23. real_s[color= #0000ff;]:[/color]
  24. [color= #007f00; font-style: italic;]; now let the fun begin[/color]
  25. [color= #ff007f;]mov[/color] [color= #7f7f40;]ax[/color][color= #0000ff;],[/color]_dataseg
  26. [color= #ff007f;]mov[/color] [color= #7f7f40;]ds[/color][color= #0000ff;],[/color][color= #7f7f40;]ax[/color]
  27.  
  28. [color= #ff007f;]mov[/color] [color= #7f7f40;]si[/color][color= #0000ff;],[/color][color= #7f00ff;]offset[/color] arr
  29. [color= #ff007f;]xor[/color] [color= #7f7f40;]bx[/color][color= #0000ff;],[/color][color= #7f7f40;]bx[/color]
  30. @[color= #7f7f7f;]1[/color][color= #0000ff;]:[/color]
  31. [color= #ff007f;]mov[/color] [color= #7f7f40;]dl[/color][color= #0000ff;],[/color][color= #0000a0; font-weight: bold;][[/color][color= #7f7f40;]si[/color][color= #0000ff;]+[/color][color= #7f7f40;]bx[/color][color= #0000a0; font-weight: bold;]][/color]
  32. [color= #ff007f;]add[/color] [color= #7f7f40;]bx[/color][color= #0000ff;],[/color][color= #7f7f7f;]1[/color]
  33. [color= #ff007f;]test[/color] [color= #7f7f40;]dl[/color][color= #0000ff;],[/color][color= #7f7f40;]dl[/color]
  34. [color= #ff007f;]jne[/color] @[color= #7f7f7f;]1[/color]
  35. [color= #ff007f;]mov[/color] [color= #7f7f40;]si[/color][color= #0000ff;],[/color][color= #7f00ff;]offset[/color] arr
  36. [color= #ff007f;]mov[/color] [color= #7f7f40;]di[/color][color= #0000ff;],[/color][color= #7f00ff;]offset[/color] arr
  37. [color= #ff007f;]sub[/color] [color= #7f7f40;]bx[/color][color= #0000ff;],[/color][color= #7f7f7f;]1[/color]
  38. [color= #ff007f;]lea[/color] [color= #7f7f40;]di[/color][color= #0000ff;],[/color][color= #0000a0; font-weight: bold;][[/color][color= #7f7f40;]di[/color][color= #0000ff;]+[/color]bx[color= #7f7f7f;]-1[/color][color= #0000a0; font-weight: bold;]][/color]
  39. [color= #ff007f;]shr[/color] [color= #7f7f40;]bx[/color][color= #0000ff;],[/color][color= #7f7f7f;]1[/color]
  40. [color= #ff007f;]neg[/color] [color= #7f7f40;]bx[/color]
  41. [color= #ff007f;]sub[/color] [color= #7f7f40;]si[/color][color= #0000ff;],[/color][color= #7f7f40;]bx[/color]
  42. @[color= #7f7f7f;]2[/color][color= #0000ff;]:[/color]
  43. [color= #ff007f;]mov[/color] [color= #7f7f40;]al[/color][color= #0000ff;],[/color][color= #0000a0; font-weight: bold;][[/color][color= #7f7f40;]si[/color][color= #0000ff;]+[/color][color= #7f7f40;]bx[/color][color= #0000a0; font-weight: bold;]][/color]
  44. [color= #ff007f;]mov[/color] [color= #7f7f40;]dl[/color][color= #0000ff;],[/color][color= #0000a0; font-weight: bold;][[/color][color= #7f7f40;]di[/color][color= #0000a0; font-weight: bold;]][/color]
  45. [color= #ff007f;]mov[/color] [color= #0000a0; font-weight: bold;][[/color][color= #7f7f40;]si[/color][color= #0000ff;]+[/color][color= #7f7f40;]bx[/color][color= #0000a0; font-weight: bold;]][/color][color= #0000ff;],[/color][color= #7f7f40;]dl[/color]
  46. [color= #ff007f;]mov[/color] [color= #0000a0; font-weight: bold;][[/color][color= #7f7f40;]di[/color][color= #0000a0; font-weight: bold;]][/color][color= #0000ff;],[/color][color= #7f7f40;]al[/color]
  47. [color= #ff007f;]sub[/color] [color= #7f7f40;]di[/color][color= #0000ff;],[/color][color= #7f7f7f;]1[/color]
  48. [color= #ff007f;]add[/color] [color= #7f7f40;]bx[/color][color= #0000ff;],[/color][color= #7f7f7f;]1[/color]
  49. [color= #ff007f;]jne[/color] @[color= #7f7f7f;]2[/color]
  50.  
  51. [color= #007f00; font-style: italic;]; at this point, the array has been swapped.[/color]
  52. [color= #ff007f;]mov[/color] [color= #7f7f40;]ax[/color][color= #0000ff;],[/color] [color= #ff0000;]4c00h[/color]
  53. [color= #ff007f;]int[/color] [color= #ff0000;]21h[/color]
  54.  
  55. main [color= #7f00ff;]endp[/color]
  56.  
  57. _codeseg [color= #7f00ff;]ends[/color]
  58. [color= #7f00ff;]end[/color]
  59.  
  60.  
  61.  
  62.  
  63.  

تم تعديل بواسطه Xacker
إضافة ملاحظة*
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

	MODEL	TINY
.CODE

jmp BEGIN

array_start db 1,3,5,9,0,2
array_end:

BEGIN:
push cs
pop ds

lea si, array_start
lea di, array_end - 1

mov cx, (array_end - array_start + 1)/2
xchg_next:
mov al, [di]
xchg al, [si]
mov [di], al
inc si
dec di
loop xchg_next

; Exit
mov ax,4C00h
int 21h

END BEGIN

هذا الكود لا يشترط أن تنتهى المصفوفة ب (0) - كما يعمل أيضاً بشكل صحيح إذا احتوت بيانات المصفوفة على (0)

للحصول على الملف التنفيذى exe انسخ الكود السابق فى ملف جديد بأسم file.asm ثم نفذ:

	tasm.exe file.asm
tlink.exe file.obj

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أولاً بحب أشكر الجميع على تفاعلهم معي .. 

بالنسبة لبرنامج xacker كان يطلع خطأ وهو :

unmatched ends :dataseg

وعند التنفيذ يتجمد تماماً واضطر للخروج ..

أما بالنسبة لبرنامجa3ghadeer فكان على ما يرام ف..

وأنا أكرر شكري مرة أخرى للجميع وخاصة XACKER و rewsh لتجاوبهم معي بسرعة .. 

 

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

أولاً بحب أشكر الجميع على تفاعلهم معي ..

بالنسبة لبرنامج xacker كان يطلع خطأ وهو :

unmatched ends :dataseg

وعند التنفيذ يتجمد تماماً واضطر للخروج ..

ربما لاختلاف الإصدار فقد اختبرته لدي على TASM 1.x كما ذكرت، بكل الأحوال بالتوفيق وإن شاء الله يكون في الموضوع فائدة وليس مجرد "نسخ" :wink:

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

استبدل السطر

mov	cx, (array_end - array_start + 1)/2

بالسطر

mov	cx, (array_end - array_start)/2

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .