الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

نحتاااج ل حل >> لمن يفهم لغه الاسمبلي

بدأه Nadooe في 20 أغسطس 2008 · 16 رد · 3,186 مشاهدة · في أرشيف قسم الـــ Assembly
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

البرنامج مرفق ومعه ثلاث ملفات مساعده

نرجوا المساعده

Assemply.zip

#2

بسم الله الرحمن الرحيم،

أخي الكريم يبدو أنك لم تقرأ قواعد المشاركة في المنتدى جيداً

لا يمكن بحال من الأحوال مساعدتك في وظيفة إن لم تقم بعرض محاولاتك أولاً وبشكل جدي

المنتدى لا يقدم خدمة حل الوظائف.

هذا هو التنبيه الأول، برجاء مراجعة قواعد المشاركة في المنتدى لتجنب إغلاق الموضوع.

بالتوفيق

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#3

الرجاء مساعدتي حيث انه لم يقرأ مافي الملف

data.txt

hw2.rar

#4

لا يوجد فيه خطأ برمجياً حتى الجزء المتعلق بقراءة الملف.

قومي بزيادة حجم الـ buffer حتى 110 مثلاً ان كان حجم القراءة أقل.

ان كان الملف يحوي نص ربما يحاول ان يضيف null terminating

حاولي

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#5

زودت الحجم للـ

ولكن .. :(

سأكمل المحاوله ويارب

hw2.rar

#6

ارجوو افادتي بأقرب وقت

#7

تعديلات بسيطة:

1. لا تنسي وضع

.code
start:
.....
.....
end start

قد لا تؤثر على عمل البرنامج لكن من الأفضل وضعها (ليست سبب المشكلة).

2. سبب المشكلة هو استخدام المسارات الطويلة الخاصة بالويندوز مع بيئة 16بت, غير مقبول

مسار الملف للقراءة وحتى الفتح يجب ان يكون حسب الشكل القديم.

التعديل الطفيف:

FileName DB "C:\Docume~1\data.txt$" ; file to be opened

أو وضع الملف في نفس مجلد البرنامج بدون مسار أي فقط اسم الملف، وهذا الأفضل.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#8

بعد تعديل الاخطاء تم القراءه من الملف

لكن

ظهر لي سطرين بلغه غريبه تحت محتويات الملف اللي تم قراءته

وهل هناك طلب في السؤال غير القراءه من الملف

#9

ضعي الملف الذي تستخدمينه

اقتباس
b.If the file exists, your program should open it and:

i.Compare the name in it to your name and display a message saying if it is the same or not.

ii.Calculate the average of the numbers in the file.

iii.Display the average in red letters.

iv.Close the file and exit.

هناك نقاط أخرى يجب تنفيذها,

1. طلب الاسم من المستخدم ومقارنته بالاسم في الملف.

2. قراءة الارقام الموجودة في الاسطر ال 10 الباقية (اسمعي نصيحتي واستخدمي الأرقام بالشكل 00.. 01.. 09 خصوصا التي بين 0-9 حتى تقرأي رقمين دوماً من السطر دون الحاجة لفحص وجود الـ CR "carriage return")

3. جمع هذه الأرقام أي جمعها في المسجلات بصيغة نظامية فهي ستكون بقيم عشرية والمسجلات لا تفهم سوى hex أي يجب التحويل لـ hex.

4. طباعة المتوسط بلون أحمر، المتوسط يجب تحويله ضمن المسجلات من hex إلى decimal لطباعته بالشكل الصحيح.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#10

ممكن توضح لي اكثر

اطلب من المستخدم اي اسم يعني واقارنه بالاسماء اللي كتبتها انا بالملف

وثمن كيف اجمعها الارقام اللي كتبتها بالملف في السجلات

وكيف احول من HEXA الى DEC

#11

انتهي من الاجزاء جزء فجزء.

في البداية ضعي الملف الذي تستخدمينه مع الشفرة بآخر تعديل لها.

من المفترض ان تطلبي من المستخدم اسم وتقومي بمقارنته بالاسم الموجود في الملف (هذا واضح من نص الواجب المطلوب)

راجعي هذا الموضوع القديم:

/index.php?showtopic=81250

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#12

الشفره بتركها لاخر شي

الان المفترض الملف يكون كم اسم وكم رقم

وين اضع النص اللي يطلب من المستخدم ادخال اسم

وكيف بتتم المقارنه هل استخدم كود معين

ودنا نستعجل شوي لانو مافي وقت

تم تعديل هذه المشاركة بواسطة Nadooe في 22 أغسطس 2008 في 18:57

#13

أختي الكريمة,

اقرأي نص الواجب المطلوب!

الملف يجب أن يحوي على 11 سطر

في السطر الأول اسمك

في السطور ال 10 الباقية أرقام في المجال [0-100]

رقم على كل سطر من هذا المجال.

النص الذي سيطلب من المستخدم إدخال اسم سيوضع في برنامجك طبعاً!

كرسالة تظهر للمستخدم على الشاشة مثل أي رسالة أخرى من ثم في سطر جديد يقوم المستخدم بإدخال اسم ما.

المقارنة ستتم من خلال حساب طول الاسم المدخل ومقارنته مع طول الاسم الموجود في الملف.

ان تطابق الطول يتم المتابعة مع مقارنة حرف بحرف من كل اسم

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

اي حساب المتوسط مرتبط بتطابق الاسمين, حسبما اذكر من الواجب.

رجاء قراءة الواجب مرة أخرى، بدأت أشك ان الشفرة التي وضعتيها من صنع يدك.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#14

كل اللي سويته استاذي مساعده من اناس اخرين

لأني لم ادرس الفايل ,, ولا افهمه

لكن سأحاول تطبيق ماذكرت

المقارنه cmp هل لها كوود معين ويفي بالغرض

تم تعديل هذه المشاركة بواسطة Nadooe في 22 أغسطس 2008 في 20:18

#15

لحساب الطول أقوم بما يلي:

lea	dx,givenName
xor	cx,cx
@@:
cmp	byte ptr [dx+cx],0
je	@F
inc	cx
jmp	@B
@@:
dec	cx
; CX now holds the length

يعني اقوم بمقارنة البايت الحالي مع الصفر

وأزيد عداد حتى أصل إلى نهاية الاسم فأحدد الطول من خلال العداد.

ثم باعتبار ان قيمة CX تحوي على الطول المتوافق

نقوم بفحص التطابق من خلال العملية التالية

lea	di,givenName
lea	si,fileName
repe cmps byte ptr [di],byte ptr [si]
cmp	cx,0
jne	not_equal
; otherwise equal

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#16

شكرا لك اخوي على جهدك معي لكن المشكله مني انا

تأخرت في الحل وما استوعبت كلامك بشكل كامل

الوقت قرب على الانتهاء ولا فيه مجال اني اكمل واشكرك مره اخرى

#17

مثال عن اختبار تطابق سلسلتي محارف في بيئة 32بت.. لا يوجد اختلاف عن 16بت سوى في أسماء المسجلات, esi > si, edi > di وهكذا..

.586
.model flat,stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
includelib \masm32\lib\kernel32.lib

.data
givenName   db  "this is a test",0
fileName	db  "this is a t!st",0
lenGiven	dd  0
lenFile	 dd  0

.code
start:
; a method to compare
; match the length first

mov esi,offset givenName
mov edi,offset fileName

; calc given name length
xor ecx,ecx
@@:
cmp byte ptr [esi+ecx],0
je  @F
inc ecx
jmp @B
@@:
mov lenGiven,ecx

; calc name in file length
xor ecx,ecx
@@:
cmp byte ptr [edi+ecx],0
je  @F
inc ecx
jmp @B
@@:
mov lenFile,ecx

mov eax,lenGiven
mov ebx,lenFile
cmp eax,ebx
jne not_match

; compare if same or not

mov ecx,lenGiven   ; doesnt matter if lenGiven or lenFile because they match
repe cmps byte ptr [edi],byte ptr [esi]
cmp ecx,0
jne not_match

; other wise, they match because ECX becomes zero

not_match:


invoke  ExitProcess,0

end start

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…