ABA


"צריך עזרה באסמבלי"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #15493 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 15493
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   17:15   12.10.09   
אל הפורום  
  צריך עזרה באסמבלי  
 
   ניסתי לעשות תוכנית שעושה חזקה רק באמצעות חיבור אבל יש טעות ואני לא יודע מה היא.. אשמח לעזרה


MOV CH,0
MOV AL,A

AGAIN2:

MOV CL,1
AGAIN1:
CMP CL,A
JNL FINISH1
INC CL
ADD AL,A
JMP AGAIN1
FINISH1:

CMP CH,B
JNL FINISH2
INC CH
JMP AGAIN2
FINISH2:
MOV R,AL

A,B,R
הם משתנים בגודל בית.
מה שבעצם זה אמור לעשות זה
A בחזקת B ולאחסן במשתנה R את התוצאה.

תודה רבה על העזרה


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  זה רץ לך? תדבג את זה שורה שורה DLN 12.10.09 21:49 1
     קודם כל תודה על התשובה ronen333  13.10.09 00:51 2
         אוי, שנינו כנראה עייפים ronen333  13.10.09 07:22 3
             i fixed it ronen333  13.10.09 13:58 4

       
DLN
חבר מתאריך 20.4.07
15884 הודעות
   21:49   12.10.09   
אל הפורום  
  1. זה רץ לך? תדבג את זה שורה שורה  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 12.10.09 בשעה 21:57 בברכה, DLN
 
אני לא מצליח ממש להבין מה עשית שם כי זה מבולגן קצת ואני עייף
בכל אופן אתה לא מסדר ת'לולאות שלך כמו שצריך, קשה להבין את זה
תשאוף למינימום קפיצות...


עריכה: הבנתי מה הבעיה
אתה מאתחל את AL עם A כדי להוריד ריצה אחת בלולאה, אבל אתה תמיד רץ A-1 פעמים במקום A-1 רק בפעם הראשונה וA בשאר...


עריכה2: ובשביל הרקורד כתבתי את זה שוב בשביל שתראה איך הלולאות אמורות להראות


mov ch, B
mov al, 0

power_loop:
mov cl, A
multiply_loop:
add al, A
dec cl
cmp cl, 0
jnz multiply_loop
dec ch
cmp ch, 0
jnz power_loop

זה לא שינוי כזה גדול אבל שים לב שאם אתה מעביר את התנאי לסוף אתה חוסך את הJMP ההוא, ושעדיף תמיד לספור כלפי ה0 כי הרבה יותר קל לבדוק 0 מול כל מספר אחר מאשר מסר קטן\גדול ממספר אחר.
מעיק להשתמש בJGE, JAE, JB, JS, JL JLE וכל מיני כאלה...
דירים המקרים שצריך יותר מJZ JNZ.
וגם שתכנס ל8086 יש אופקודים שנחשבים יותר יעילים לבדיקה אם רג'יסטר כלשהו הוא 0 (TEST)...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   00:51   13.10.09   
אל הפורום  
  2. קודם כל תודה על התשובה  
בתגובה להודעה מספר 1
 
   ולקחתי את הטיפים לתשומת ליבי , בהחלט במקום ;)...

אבל גם משום מה התוכנית שלך לא עובדת כנדרש.. שהצבתי בA 5 ובB 3 זה היה אמור להחזיר 125, אך זה החזיר 75.
(?)

אסמבלי זה חרא שפה:(


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   07:22   13.10.09   
אל הפורום  
  3. אוי, שנינו כנראה עייפים  
בתגובה להודעה מספר 2
 
   ערכתי לאחרונה בתאריך 13.10.09 בשעה 07:28 בברכה, ronen333
 
מאוד עייפים :|.
אני מוסיף 3 פעמים 25 במקום להכפול את 25 ב5 (למעשה להוסיף אותו 5 פעמים).


mov ch, B
dec ch
mov dl,A
mov R,DL

power_loop:
mov cl, A
mov al, 0
multiply_loop:
add al, R
dec cl
cmp cl, 0
jnz multiply_loop
dec ch
mov R,al
cmp ch, 0
jnz power_loop

דבר אחד מעצבן אותי בשינוי שלי זה שהסתמכתי על זה שכאילו בחזקת 1 זה המספר עצמו ולכן זה R מתחיל מ5. אבל אם היו נותנים בחזקת 0 זה לא היה נותן 1.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
ronen333 
חבר מתאריך 20.2.03
6069 הודעות
   13:58   13.10.09   
אל הפורום  
  4. i fixed it  
בתגובה להודעה מספר 3
 
  

mov ch, B
mov R,1

power_loop:
dec ch
JL sOF
mov cl, A
mov al, 0
multiply_loop:
add al, R
dec cL
jnz multiply_loop

mov R,al


jMP power_loop

sOF:

thanks =].


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net