Meme 55555 نشر 13 فبراير 2021 أرسل تقرير نشر 13 فبراير 2021 معطى سؤال بلغه c# وحوله الى اسمبلر Int I,sum=0; For(I=1;I<=100;I++) { Sum=sum+i*2; } 1 اقتباس
0 Meme 55555 نشر 13 فبراير 2021 الكاتب أرسل تقرير نشر 13 فبراير 2021 لو شرح بسيط مع مثال لاعرف طريقه الحل اقتباس
0 Abdulraheem Barghouthi نشر 13 فبراير 2021 أرسل تقرير نشر 13 فبراير 2021 سأوضح لك كل الخطوات اللازمة لكتابة نفس الكود في لغة Assembly ثم سأدعك تحاولين بنفسك. أولاً: لدينا الكود التالي بلغة C#: int i, sum = 0; سنبدأ بتعريف متغير إسمه sum لنحفظ فيه القيمة النهائية، لاحظي الكود التالي بلغة Assembly: .data ; هنا نقوم بتعريف القسم الذي سنعرف المتغيرات فيه sum DD 0 ; نعرف متغير بإسم ;sum ;بحيث يأخذ الحجم ;DD ; وهو إختصار لـ ; Define Doubleword ; أي سيكون حجمه 4 بايت لم أقم بتعريف المتغير i لأننا لن نحتاجه بل سنقوم بعملية التكرار تبعاً للقيمة الموجودة في الـregisters كما سأوضح لاحقاً. ثانياً: سنرى كيف يمكننا عمل Loop في لغة Assembly بحيث يتم تنفيذه 100 مرة كما في الكود المرفق من قبلك: mov ECX,100 ; نضع القيمة التي نريد أن نبدأ بها في المسجل ECX ; حيث سيتم طرح واحد من القيمة في كل تكرار وسيتوقف عند الوصول إلى الرقم صفر myloop: ; تعريف القسم الذي نريد تكرار تنفيذه بحيث يمكننا الإشارة إليه لاحقاً ... ;بعد تعريف القسم نكتب التعليمات التي نريد تكرارها هنا loop myloop ;في هذه التعليمة تعني قم بتكرار الـ ;label ; أو القسم الذي قمنا بتعريفه وهو بإسم ; myloop ملاحظة: الأمر mov يقوم بنقل القيمة الواقعة بعد الفاصل إلى المتغير أو المسجل الذي قبلها، لتوضيح الأمر إليك شرح لتعليمة بسيطة تستخدم الأمر mov : mov ax,5 ;نقوم بإسناد الرقم 5 في المسجل ;ax 1 اقتباس
0 Ahmed Sallam12 نشر 12 ديسمبر 2023 أرسل تقرير نشر 12 ديسمبر 2023 الكود المرفق يستخدم لتحكم في روبوت يتبع الإنسان باستخدام لوحة Arduino. أدناه شرح مفصل لكل سطر مع شرح عام للكود: ```c // تعليق: روبوت تتبع الإنسان باستخدام Arduino // تعليق: تم إنشاء الكود بواسطة DIY Builder // تعليق: يجب تثبيت مكتبات AFMotor و NewPing قبل تحميل الشيفرة // تعليق: يمكن العثور على جميع المكتبات الضرورية من مدير مكتبات Arduino. // تعليق: تواصل معي على Instagram لأي استفسار (Insta Id: diy.builder) // تعليق: تم التعديل في 7 مارس 2022 // تعليق: الإصدار 1.1 // تضمين شيفرة المكتبة: #include <NewPing.h> #include <Servo.h> #include <AFMotor.h> // تعريف توصيلات الأقراص والمحركات: #define RIGHT A2 // مستشعر الأشعة تحت الحمراء الأيمن متصل بالمدخل التناظري A2 في Arduino Uno: #define LEFT A3 // مستشعر الأشعة تحت الحمراء الأيسر متصل بالمدخل التناظري A3 في Arduino Uno: #define TRIGGER_PIN A1 // دبوس الإرسال متصل بالمدخل التناظري A1 في Arduino Uno: #define ECHO_PIN A0 // دبوس الاستقبال متصل بالمدخل التناظري A0 في Arduino Uno: #define MAX_DISTANCE 200 // المسافة القصوى لقياس المسافة: // متغيرات لتخزين قراءات المستشعرات: unsigned int distance = 0; // متغير لتخزين مسافة مستشعر الموجات فوق الصوت: unsigned int Right_Value = 0; // متغير لتخزين قراءة مستشعر الأشعة تحت الحمراء الأيمن: unsigned int Left_Value = 0; // متغير لتخزين قراءة مستشعر الأشعة تحت الحمراء الأيسر: // إعداد NewPing مع تعريف الدبابات والمحركات: NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // إنشاء كائنات المحركات: AF_DCMotor Motor1(1, MOTOR12_1KHZ); AF_DCMotor Motor2(2, MOTOR12_1KHZ); AF_DCMotor Motor3(3, MOTOR34_1KHZ); AF_DCMotor Motor4(4, MOTOR34_1KHZ); // إنشاء كائن سيرفو للتحكم في المحرك: Servo myservo; int pos = 0; // متغير لتخزين وضعية المحرك: void setup() { // تهيئة التواصل التسلسلي: Serial.begin(9600); // توصيل المحرك السيرفو بالدبوس 10 في Arduino UNO: myservo.attach(10); // دورة لتحريك المحرك السيرفو إلى وضعية ابتدائية: for (pos = 90; pos <= 180; pos += 1) { myservo.write(pos); delay(15); } for (pos = 180; pos >= 0; pos -= 1) { myservo.write(pos); delay(15); } for (pos = 0; pos <= 90; pos += 1) { myservo.write(pos); delay(15); } // تعيين وضع الدبابات كإدخال: pinMode(RIGHT, INPUT); pinMode(LEFT, INPUT); } void loop() { // انتظار 50 مللي ثانية بين القياسات: delay(50); // قياس المسافة باستخدام مستشعر الموجات فوق الصوت: distance = sonar.ping_cm(); // طباعة المسافة في منفذ التسلسل: Serial.print("distance"); Serial.println(distance); // قراءة قيم أقراص الأشعة تحت الحمراء وطباعتها: Right_Value = digitalRead(RIGHT); Left_Value = digitalRead(LEFT); Serial.print("RIGHT"); Serial.println(Right_Value); Serial.print("LEFT"); Serial.println(Left_Value); // فحص ما إذا كانت قيمة مستشعر الموجات فوق الصوت في النطاق من 1 إلى 15: if ((distance > 1) && (distance < 15)) { // التحرك إلى الأمام: Motor1.setSpeed(130); Motor1.run(FORWARD); Motor2.setSpeed(130); Motor2.run(FORWARD); Motor3.setSpeed(130); Motor3.run(FORWARD); Motor4.setSpeed(130); Motor4.run(FORWARD); } else if ((Right_Value == 0) && (Left_Value == 1)) { // الدوران لليسار: Motor1.setSpeed(150); Motor1.run(FORWARD); Motor2.setSpeed(150); Motor2.run(FORWARD); Motor3.setSpeed(150); Motor3.run(BACKWARD); Motor4.setSpeed(150); Motor4.run حول الكود اسمبلي اقتباس
السؤال
Meme 55555
معطى سؤال بلغه c#
وحوله الى اسمبلر
Int I,sum=0; For(I=1;I<=100;I++) { Sum=sum+i*2; }
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.