• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

kakarot2055

اعضاء جدد
  • عدد المشاركات

    9
  • تاريخ الانضمام

  • تاريخ اخر زياره

كل شيء نشر بواسطة kakarot2055

  1. السلام عليكم    عندنا مشروع في الجامعة تسليمه غداً لمادة المايكروبروسيسر 8086 يقوم بإخراج القيمة العظمى والصغرى والمتوسط الحسابي لمصفوفة مخزنة في الذاكرة بداخل البرنامج "ملف الكود" قيمها موجبة وسالبة Signed  وطباعتها      الأن انهيت الجزء الخاص ب القيم العظمى والصغرى وامر طباعتهم ولكن واجهت مشكلة في امر المتوسط الحسابي  ; multi-segment executable file template.data segment ; add your data here! Array dB 000h,013h,012h,020h,015h,07dh,0FEh,0D7h,055H,0f3h,02Dh,080h,0ffh,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 MaxI DB "The Maximum Value in Integer = $" Min1 DB "The Minimum Value in Integer = $" ten db 10 AVG DB "The Average Value in Integer = $" endsstack segment dw 128 dup(0)endscode segmentstart:; set segment registers: mov ax, data mov ds, ax mov es, ax ; add your code here LEA SI,ARRAY ; offset array to si pointer MOV CL,[si+1] ; size of array MOV Ch,[si] ; size of array MOV bL,00 ; initial value of Minimum XOR AX,AX ; fast way to make Register 0 MOV bH,BYTE PTR[SI] ; initial value of Maximum L1: CMP bL,BYTE PTR[SI] ; compare Minimum to the value of array JL L2 MOV bL,BYTE PTR[SI] ; make bl Minimum with value of si L2:CMP bH,BYTE PTR[SI] ;compare Maximum to the value of array JG L3 MOV bH,BYTE PTR[SI] ;make bl Maximum with value of si L3: mov al,[si] cwd Test Al,AljS Nega add DI,ax adc dx,0 Jmp Result nega:neg ax sub DI,ax sbb dx,0 Result: INC si loop L1 Call Maximum ; call and Print Maximum value of the array TEST bl,BL ;test if bl positive or negative js MinimumNN MinimumNN: call MinimumN ; call and Print the Minimum value and if the value negative go and print negative integer value JMP END call Minimum END: mov ah,4ch int 21h MinimumN PROC NEAR ;This Procedure To Convert The Hex Value to decimal values lea dx,Min1 ; Show The Massage mov ah,9 int 21h xor ax,ax xor dx,dx xor cx,cx mov al,bl ; To Make The Result of Negative Value of Minimum correct NEG AL ;mov cl,0ahdiv clpush axmov ah,00h div clpush axmov ah,00h div clpush axmov ax,0200h mov dl,"-" int 21hpop dxmov dl,dhadd dx,30hint 21hpop dxmov dl,dhadd dx,30hint 21hpop dxmov dl,dhadd dx,30hint 21hmov dl,10int 21hret MinimumN ENDP Maximum PROC NEAR lea dx,MaxI mov ah,9 ; This Procedure To Convert The Hex Value to decimal values int 21h xor ax,ax xor dx,dx xor cx,cx mov al,bh mov cl,0ah div clpush axand ah,00h div clpush axand ah,00h div clpush ax mov ax,0200h pop dxmov dl,dhadd dx,30hint 21h pop dxmov dl,dhadd dx,30hint 21h pop dxmov dl,dhadd dx,30hint 21h mov dl,10int 21h mov dl,0dh mov ah, 2 int 21h mov dl,0ah mov ah, 2 int 21hret Maximum ENDP Minimum PROC NEAR ; If The Minimum Value is positive go here and print the result lea dx,Min1mov ah,9int 21hxor ax,ax xor dx,dx xor cx,cx mov al,bl mov cl,0ahdiv clpush axmov ah,00h div clpush axmov ah,00h div clpush axand ax,0200h mov dl,"-" int 21hpop dxmov dl,dhadd dx,30hint 21hpop dxmov dl,dhadd dx,30hint 21hpop dxmov dl,dhadd dx,30hint 21hmov dl,10int 21h mov dl,0dh mov ah, 2 int 21h mov dl,0ah mov ah, 2 int 21hret Minimum ENDP average1 PROC NEAR xor ax,ax xor dx,dx mov aX,dI mov cl,0ah div clpush axmov ah,00h div clpush axmov ah,00h div clpush ax mov ax,0200h pop dxmov dl,dhadd dx,30hint 21h pop dxmov dl,dhadd dx,30hint 21h pop dxmov dl,dhadd dx,30hint 21h mov dl,10int 21hret end start ; set entry point and stop the assembler.طبعاً  average1 Proc  مازال لم يستخدم بعد قيمة المتوسط الحسابي عندي خاطئة      الرجاء المساعدة 
  2. كما قلت أخي الكريم هناك مشكلة في هذا السطر وهو أن برنامج emu8086 لا يقبل هذا الكود يقول هناك خطأ  (58) [SI] cannot go with [DI] - wrong addressing!
  3. هناك مشكلة في   البرنامج يقول هناك مشكلة في هذا العنوان ؟؟    وإذا غيرتها ل si  وأصبحت  [SI + [ 4 * SI]]فأن هناك قيمة لل AVG ايضاً خاطئة    هذا هو ملف البرنامج إن أحببت ان تلقي عليه نظرة    AbdullaProject.asm
  4. للأسف الناتج خاطىء    طبعاً إستبدلت داخل   الكود  كل BX ب DI لأن ريجستر BX مشغولة بالقيم العظمى والصغرى    ولا استطيع عمل LOOP أخرى بسبب أن البرنامج يجب ان يكون فعال ويحتاج زمن قليل 
  5. لتسهيل تتبع البرنامج الجزء الخاص بعملية إخراج المتوسط الحسابي  اسفل L3
  6. جزاك الله خيراً تم حل المشكلة عن طريق ترتيب العمل وعمل Trace للبرنامج 
  7. السلام عليكم  هناك مشكلة وهي اني عندما اريد طباعة قيمة ولتكن مثلاً 80H في أي ريجستر يقوم البرنامج بطباعة الرمز الذي يمثله من ASCII CODE    انا الأن اريد طباعة القيمة في ريجستر ما بقيمته الفعلية الحقيقية  وليس طباعة الرموز والاشكال ؟   يعني هناك قيمة في Register مثلاً Bl=70H  عندما اقوم بعمل  Mov Dl,Blmov ah,2int 21hيقوم بطباعة الرمز وليس القيمة العددية    اريد الطريقة لطباعة الرقم سواء ب Decimal او نفسها 70h كيف     أستخدم أسمبلي 8086    
  8. الأن لدي واجب في الجامعة تسليمه غداً وهو ان نقوم بإيجاد القيمة العظمى والصغرى لمصفوفة Signed سيقوم الدكتور لحقاً بإدخالها في متغير في داخل الكود "ملف asm"   الان قيم Max و Min  صحيحة ولكن ناتج التحويل خاطىء ؟ والبرنامج اصبح يعمل بشكل خاطىء كلياً  ; multi-segment executable file template.data segment ; add your data here! Array db 000h,012h,012h,020h,015h,055h,0FEh,0D7h,040H,0f3h,02Dh,088h,0ffhendsstack segment dw 128 dup(0)endscode segmentstart:; set segment registers: mov ax, data mov ds, ax mov es, ax ; add your code here LEA SI,ARRAY MOV CL,[si+1] MOV Ch,[si] MOV bL,00 MOV bH,BYTE PTR[SI] L1:CMP bL,BYTE PTR[SI] JL L2 MOV bL,BYTE PTR[SI] L2:CMP bH,BYTE PTR[SI] JG L3 MOV bH,BYTE PTR[SI] L3: INC si loop L1 xor ax,0 xor dx,0 xor cx,0 call convproc Conv mov al,bHmov cl,0ah;;;;;;;;;;;;;;;div clpush axmov ah,00hdiv clpush axmov ah,00hdiv clpush ax;;;;;;;;;;;;;;;;;;;mov ax,0200h;;;;;;;;;;;;;;;;;;;pop dxmov dl,dhadd dx,30hint 21hpop dxmov dl,dhadd dx,30hint 21hpop dxmov dl,dhadd dx,30hint 21hmov dl,10int 21hretends end start ; set entry point and stop the assembler.