כותב |
|
mikeybb משתמש מתחיל
הצטרף / הצטרפה: 05 September 2011 מדינה: Benin
משתמש: מנותק/ת הודעות: 7
|
נשלח בתאריך: 05 September 2011 בשעה 12:14 | | IP רשוּם
|
|
|
|
ככה אני חדש בפורום, שמי מיכאל ואני סטודנט לתוכנה ויש לי כמה שאלות.
ראשונה:
למה כשאני מריץ את הקוד:
while (fgets(input,7,stdin) !=NULL) {
fputs(input,stdout);
}
ולעומת זאת אני מבצע את הקוד פעם אחת בלי לולאה בקוד של הלולאה אין התחשבות ל-7 תווים לעומת קוד בלי לולאה שיש התחשבות לגודל מטעמי בטחון המידע?
שאלה 2)
כיצד ניתן לעשות באסמבלי 8086 את שיטת המשלים ל-2 על מספרים לא שלמים בגודל float כך שזה יפרש את המספר הבינארי כמספר מסומן ולא כמספר לא מסומן?
תודה רבה,
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 05 September 2011 בשעה 21:12 | | IP רשוּם
|
|
|
|
היי 2 אני לא יודע, 1 אפשר הסבר מחדש? יצא משפט לא ברור
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
NewMan משתמש מתחיל
הצטרף / הצטרפה: 06 May 2011 מדינה: Israel
משתמש: מנותק/ת הודעות: 29
|
נשלח בתאריך: 07 September 2011 בשעה 05:35 | | IP רשוּם
|
|
|
|
אני לא מכיר אסמבלי מי יודע מה, אך איני חושב שמשלים ל-2 זו
הדרך.
ברוב המחשבים,הייצוג הבינארי של מספרים ממשיים שונה מהייצוג
של המספרים השלמים. מספר ממשי מכיל שלושה חלקים:
מנטיסה, מעריך, וסימן.
המנטיסה והמעריך הינם מספרים ממשיים בנקודה קבועה. הסימן
הוא סיבית (או בית, לא זוכר).
הערך של הfloat מתקבל מהחישוב הבא: מעריך בריבוע כפול
מנטיסה כפול סימן.
מה שעליך לעשות הוא לחקור על הייצוג המדויק של הfloat ב8086
ופשוט לקבוע את הסימן- חיובי או שלילי.
כך עד כמה שאני יודע. תחקור טוב את הנושא לפני שאתה הורס את
המכונה...
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 07 September 2011 בשעה 10:18 | | IP רשוּם
|
|
|
|
הורס את המכונה? לא כזה קל
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
mikeybb משתמש מתחיל
הצטרף / הצטרפה: 05 September 2011 מדינה: Benin
משתמש: מנותק/ת הודעות: 7
|
נשלח בתאריך: 07 September 2011 בשעה 10:45 | | IP רשוּם
|
|
|
|
ובכן אינני זוכר את מנטיסה מעריך וסימן (לצערי הרב לא אהבתי את הקורס מערכות ספרתיות), אך כאשר ניסיתי לקחת לדוגמא מספר שלם בגודל מילה נניח
mov ax,3
not ax
add ax,1
והדפסתי אז כלל לא יצא לי 3-, כמובן שאני יכול לעשות את הדבר באמצעות neg ax אך אני צריך ספציפית בשיטת המשלים ל-2. אני אעשה חזרה על הדבר.
עכשיו בנוגע לשאלה ראשונה:
ידוע שכאשר אני עושה את הפקודה הבאה:
fgets(ary,7,stdin)
fputs(ary,stdout)
זה אומר קח דרך הזרימה שהיא הקלט של המקלדת 7 אותיות בלבד והכנס אותן לתוך המערך הנ''ל. (זאת אומרת אם אני יקליד יותר זה עדיין יקלוט רק 7)
אך כאשר אני עושה הדבר בלולאה כך ש-
while (fgets(ary,7,stdin)!= null)
זה לא מתחשב בגודל ולוקח כמה אותיות שאני מחליט להקליד (זאת אומרת לא תהיה הגבלה של 7)
|
חזרה לתחילת העמוד |
|
|
NewMan משתמש מתחיל
הצטרף / הצטרפה: 06 May 2011 מדינה: Israel
משתמש: מנותק/ת הודעות: 29
|
נשלח בתאריך: 07 September 2011 בשעה 18:51 | | IP רשוּם
|
|
|
|
אולי הפונקציה המדפיסה מפרשת את המספר כמספר חסר סימן. לא נראה לי רציני ש8086 לא משתמש במשלים ל-2.
אם אתה כותב את האסמבלי בתוך קוד C, תשים את הערך במשתנה signad.
|
חזרה לתחילת העמוד |
|
|
mikeybb משתמש מתחיל
הצטרף / הצטרפה: 05 September 2011 מדינה: Benin
משתמש: מנותק/ת הודעות: 7
|
נשלח בתאריך: 07 September 2011 בשעה 22:55 | | IP רשוּם
|
|
|
|
לא כותב מתוך c ואין קשר בין 2 השאלות
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 08 September 2011 בשעה 00:51 | | IP רשוּם
|
|
|
|
איך בדיוק הגעת לזה שאין התחשבות במגבלת התווים? השתמשת ב-debugger? ניסית להדפיס עוד משהו אחרי כל הדפסה בלולאה? יכול להיות שאתה מתבלבל בגלל שהוא לא יורד שורה אחרי כל הדפסה?
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
mikeybb משתמש מתחיל
הצטרף / הצטרפה: 05 September 2011 מדינה: Benin
משתמש: מנותק/ת הודעות: 7
|
נשלח בתאריך: 08 September 2011 בשעה 04:24 | | IP רשוּם
|
|
|
|
בהחלט איזו מן שאלה השתמשתי ב-debugger. ומה שקורה שהוא כן יורד שורה אחרי כל הדפסה, אבל הבעיה היא שאם הקלדתי את הערך:
abcdefghi
אזי הוא מדפיס לי
abcdefghi
כאשר הוא אינו בלולאה הוא מדפיס:
abcdefg
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 08 September 2011 בשעה 09:33 | | IP רשוּם
|
|
|
|
אני אסביר שוב
ברגע שאתה מקליד 5 תוים והלולאה ביקשה רק 1 ה-4 הנוספים לא נעלמים אלא נשמרים בצד, ובארבע קריאות הבאות של הלולאה ל-fgets היא תקבל כל פעם את התו הבא עד שהיא מגיעה לסוף ההקלדה הקודמת ואז עוד פעם "נתקעת" בשביל לבקש מהמשתמש עוד קלט.
בגלל זה שאלתי אם בדקת בדיבאגר כי אם היית עובר פעולה פעולה היית מבין.
לחלופין אתה יכול לשנות את הקוד של הגוף של הלולאה כך שידפיס סימן בהתחלת כל הדפסה ובסוף כל הדפסה שבתוך הלולאה.
ותקבל פלט בסנון:
קוד:
i like pooding! [i li][ke p][oodi][ng! ]i dont like pooding!!! [i do][nt l][ike ][pood][ing!][!! ]123 [123 ] |
|
|
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
mikeybb משתמש מתחיל
הצטרף / הצטרפה: 05 September 2011 מדינה: Benin
משתמש: מנותק/ת הודעות: 7
|
נשלח בתאריך: 08 September 2011 בשעה 11:13 | | IP רשוּם
|
|
|
|
וואו איך לא חשבתי על זה, תודה רבה שושן. ואני כעיקרון עובד עם visual c++ אני אבדוק איך ניתן להפעיל את ה-debugger. (זה קצת שונה מהטורבו הזוועתי)
ורגע מתי בעצם זה מגיע למצב שהפונקציה מחזירה null?
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 08 September 2011 בשעה 18:55 | | IP רשוּם
|
|
|
|
הפונקציה מחזירה NULL כשהיא הגיעה לסוף של הזרם (EOF)
בנוסף היא מחזירה NULL אם יש שגיאה בקריאה מהזרם.
ניתן לקרוא ל-feof ו/או ל-ferror כדי לברר אם התרחשה שגיאה
ומה
בהתאמה השגיאה שהתרחשה.
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
mikeybb משתמש מתחיל
הצטרף / הצטרפה: 05 September 2011 מדינה: Benin
משתמש: מנותק/ת הודעות: 7
|
נשלח בתאריך: 09 September 2011 בשעה 11:17 | | IP רשוּם
|
|
|
|
הבנתי תסביר לי בבקשה, מה ההבדל בעצם בין fgets לבין fscanf, האם הכוונה ש-fgets מקבל שורה ו-fscanf מקבל כל פעם מחרוזת עד לרווח הראשון?
|
חזרה לתחילת העמוד |
|
|
shoshan מנהל האתר
הצטרף / הצטרפה: 16 July 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 4637
|
נשלח בתאריך: 09 September 2011 בשעה 15:01 | | IP רשוּם
|
|
|
|
הממ...fscanf קוראת מהקובץ וממלאת במשתנים ערכים בהתאם לפורמט שאתה מעביר, די שונה מבחינת הפעולה שמבוצעת מאשר לקרוא שורה למחרוזת.
__________________ עד מתי רשעים יעלוזו?
עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
|
חזרה לתחילת העמוד |
|
|
משה123 משתמש מתחיל
הצטרף / הצטרפה: 28 October 2011 מדינה: United Kingdom
משתמש: מנותק/ת הודעות: 1
|
נשלח בתאריך: 28 October 2011 בשעה 15:03 | | IP רשוּם
|
|
|
|
[>
<]
|
חזרה לתחילת העמוד |
|
|