26 תשובות
יכול לנסות לעזור
CQ
שואל השאלה:
הגדירו שלושה משתנים:
var1 בגודל בית
var2 בגודל בית
diff
הכניסו לתוך diff את ההפרש בין שני המשתנים (באיזה גודל diff צריך להיות?)

אני צריכה לדעת איך לכתוב תוכנית של זה
אנונימית
גם בגודל בית לדעתי
כאילו ההפרש יכול להיות גם 1 אבל כדי לעשות sub בין שני המשתנים צריך שגם אופרנד היעד יהיה באותו גודל אז בית
CQ
שואל השאלה:
אתה יכול לכתוב את התוכנית, הרמה שלי ממש נמוכה
אנונימית
למדת פקודת sub?
CQ
שואל השאלה:
כן
אנונימית
אז פשוט תעבירי את var1 לרגיסטר מסוים ואת var2 לרגיסטר אחר, תעשי sub ביניהם וצעבירי את התוצאה לdiff
CQ
שואל השאלה:
זה משנה לאיזה רגיסטר?
אנונימית
שואל השאלה:
איך אני מעבירה את התוצאה לdiff? סליחה על החפירה אני באמת לא יודעת
אנונימית
לא משנה באיזה רגיסטר העיקר שיהיה בגודל בית, כמו al או bh וזה
תעבירי לdiff עם פקודת מוב רגילה
CQ
ואל תשכחי כדי לפנות לתוכן של diff משתמשים בסוגריים מרובעות, נגיד
mov [diff], 7
CQ
שואל השאלה:
תודה רבה, עזרת לי מאוד
אנונימית
בכיף
אם ניסית וזה לא הולך אני מקסימום אשלח פה פתרון
CQ
שואל השאלה:
תודה רבה
אנונימית
שואל השאלה:
תוכל אולי לעזור לי בשאלה אחרת בבקשה?
אנונימית
חחח ספר גבהים אהה? גם אני למדתי בספר גבהים
אז אממ פה צריך גודל word כי 255*255 זה הכפל הכי גדול שיכול להיות וזה נכנס בוורד ולא בבית.
תעשי כמו בתרגיל קודם רק באופן הבא:

*תאפסי את ah ואת bh
*תגידירי 1var ו var2 כמו קודם, תעבירי את הערך שלהם לal וbl בהתאמה
*תעשי פקודת mul של ax בbx
*תעבירי את הערך בax למשתנה שלישי שתגדירי אותו בגודל וורד, כמו שהסברתי קודם.
הנבת למה איפסתי את ah ואת bh בהתחלה?
CQ
שואל השאלה:
האמת שלא, אנחנו ברמה ממש נמוכה אני לא מבינה כמעט כלום
אנונימית
שואל השאלה:
ואיך לעשות את הסעיף השני?
אנונימית
אממ אוקי
את יודעת שפקודות (כמו mov, mul, sub) עושים בין שני אופרנדים שזהים בגודל שלהם? כלומר בית ובית, וורד וורד. אי אפשר נגיד לעשות mov ax, bl כי זה לא אותו גודל.
את זה למדתם?
CQ
שואל השאלה:
נכון, הבנתי
אנונימית
אחלה
אז ביקשו בתרגיל ליצור משתנים בגודל בית. עכשיו אם נכפיל את המספר המקסימלי 255 בעוד מספר מקסימלי 255 יצא לנו איזה 65 אלף שזה מספר שיכול להתאחסן רק בגודל וורד. עכשיו, אי אפשר להכפיל בית בבית (כי ביקשו מאיתנו ליצור משתנים בבית) ולהעביר את התוצאה בוורד, כמו שאמרנו. ולכן, נעביר את המשתנים שיצרנו לal ולbl ונאפס את ah וbh, ככה שאם נכפיל את bx וax (שהם רגיסטרים מלאים בגודל וורד) אז מה שבעצם יוכפל זה רק bl וal כי 0 כפול 0 ( מה שיש בah וbh לא ייחשב כי זה שווה לאפס) ותוצאת הכפל הזאת תועבר לכל רגיסטר ax.
ובגלל זה הכפלתי את ax בbx כי הם וורד ורק ככה נוכל לשמור את התןצאה שלנו, הבנת?
CQ
שואל השאלה:
תוכל בבקשה לרשום לי את הקוד של זה? אני ממש מיואשת, מצטערת על החפירה
אנונימית
שמעי, מצטער להיות מהזקנים האלה שאומרים " אם אתן לך פתרון את לא תלמדי מזה" אבל את אומרת שאתם ברמה נמוכה אז חשוב שתביני ולפחות תנסי לעשות את זה בעצמך.
הסברתי את העקרון למה העברתי את המשתנים var1 וvar2 לal וbl, כי הם באותם הגדלים. ועכשיו, אני מאפס את ah ואת bh כי אם אעשה כפל של ax בbx מה שבעצם יוכפל זה הערכים של המשתנים, לדוגמה 0045h כפול 0023h. הבנת? כי 0045h כפול 0023h (שאלה בגודל וורד, 4 מספרים הקסה דצימלים בכל אחד) זה אותו דבר כמו 45h כפול 23h (שאלה בגודל בית, 2 מספרים הקסה דצימלים בכל אחד)
CQ
שואל השאלה:
אוקיי, אתה צודק. תודה!
אנונימית
שואל השאלה:
.
אנונימית
כן, יכול לנסות
CQ