שאלה באסמבלר

שאלה באסמבלר

קיבלנו שאלה והיא "כתוב תוכנית המאפסת את כל האוגרים במעבד" (זהו כל נוסח השאלה). עכשיו, לא למדנו לולאות ,אלא רק את הפקודות החשבוניות והלוגיות + הפקודה XCHG . איך אני עושה את התוכנית? האם השיטה היחידה היא לכפול (ע"י AND ) ב0000h? יש דרכים אחרות? יעילות יותר? תודה
 

nahsh

New member
כן, יש דרכים:

אבל אני מניח שזה ב8086 שאותו אני לא כ"כ זוכר. בכל אופן, לולאות אינן קשורות לעיניין כי אין פקודות "התקדמות" מאוגר לאוגר, כלומר האוגרים לא מוגדרים כאחד אחרי השני, והגישה אליהם ישירה ופרטנית. הדרך הכי מהירה לאפס אוגר, היא לעשות לו XOR עם עצמו. אם יש אוגרים שלא יכולים לעשות את זה (אולי יש - לא זוכר), מעבירים אליהם תוכן של אוגר שכבר אופס, כי העברה מאוגר לאוגר היא מהירה מהעברת קבוע 0.
xor ax,ax xor bx,bx ... ... mov sp,ax​
 

nahsh

New member
בחייך! אתה לומד את זה עכשיו,

אצלי עברו שנתיים. תבדוק במחברת.
 
נו באמת,אילו אוגרים? גם את אוגרי

המחסנית? את כל ה12? האם זה תקין לאפס את כולם ללא הבדל דת גזע ומין? אני צריך לכתוב תוכנית באורך 12 שורות עם פקודה שחוזרת על עצמה?
 

nahsh

New member
אם זה מה שהתרגיל ביקש אז כן.

אבל אתה צריך לברר מה בקשו ממך בדיוק. חוץ מזה, כן - אותה שורת קוד שחוזרת על עצמה - בעסה - זה לא C, זה אסמבלר...
 
למעלה