ערכתי לאחרונה בתאריך 17.11.04 בשעה 23:20 בברכה, Dudenland
mov CL, 100h - מורה על השמת המספר ההקסדצימלי 100 (שזה יוצא 256 בשפה שלנו, ומכאן, שיש כאן טעות, כי נתבקשת לבדוק 100 מספרים, ולא 256) באוגר CL, שהוא ישמש לנו כאינדקס הלולאה (כלומר כדי לבצע את הפעולות הבאות עבור 100 תאים בזיכרון, כפי שמוגדר).xor CH, CH - מורה על איפוס האוגר CH. לא ניכנס כאן לוויכוחים מיותרים והסברים כאלו ואחרים, אבל כאשר אתה מבצע xor בין ערך מסויים לערך זהה, אתה גורם לאיפוסו. הדבר היה זהה אילו היית רושם mov CH, 0.
mov BX, 1000h - מורה על השמת המספר ההקסדצימלי 1000. הדבר נועד (ותראה זאת בהמשך) כדי להתחיל את הפעולות מתא שכתובתו 1000h.
loop: mov AL, BX - כאן, יש לנו כביכול שתי פעולות. הראשונה - הגדרה של נקודת-ציון בתכנית שלך שנקראת loop. נקודה זו תשמש אותנו בהמשך כדי שנוכל לחזור לאותה נקודה בתכנית, וכך לבצע את הפעולות שבאות לאחר נקודה זו מספר פעמים (זהו בעצם המימוש של הלולאה). השנייה - אמורה להציב ב-AL את ערך התא שכתובתו שמורה באוגר BX (כרגע זה 1000h). למה אמורה? משום שיש לסגור את BX בסוגריים מרובעות, כך שהמחשב ידע להציב ב-AL את הערך שנמצא בכתובת ש-BX מצביע עליה, ולא את הערך שב-BX עצמו (שהוא 1000h). לכל הטוענים לטעות יסודית אשר נובעת מהפרשי גדלים בין האוגר BX ל-AL, הדבר היה נכון אילולא היינו ממשיכים כך, אבל משום שיש לסגור את BX בסוגריים מרובעות, הדבר יהיה נכון, ויורה למחשב לבדוק רק בית אחד בזיכרון.
JNS next - זוהי בעצם התנייה הקשורה לפעולה הקודמת. אם בסיום הפעולה הקודמת התוצאה הייתה אי-שלילית, קפוץ לנקודת ציון ששמה next (שכנראה נמצאת בהמשך התכנית). הפירוש ל-JNS הוא Jump Not Sign, כלומר קפוץ אם לא-שלילי. כאן אתה כבר יכול להבין את המימוש של המטרה שמאחורי התכנית.
inc CH - אם הפעולה הקודמת לפעולה הקודמת הייתה שלילית, הרי שהתנאי לא מתקיים, ולא תתבצע קפיצה לנקודת-הציון next, אלא התכנית תמשיך כרגיל, ותגדיל את ערכו של CH ב-1, שכידוע לך מורה על מספר התאים שערכם שלילי.
next: inc BX - גם כאן ישנה חלוקה לשתי-פעולות: הראשונה - כמו מקודם, יצירת נקודת-ציון ששמה next. כבר ראית מקודם שיש פעולה אשר מחפשת אחר נקודה-זו (משתמשת בה). השנייה - הגדלת ערכו של BX, אינדקס הזיכרון, ב-1. פעולה זו מתקיימת לכל אורך הלולאה, ומוודאת שתהיה התקדמות בבדיקת התאים. לאחר הביצוע הראשון של פעולה זו, התא שייבדק יהיה עתה 1001h.
dec CL - פעולה זו מקטינה את ערכו של אינדקס הלולאה ב-1, ומוודאת שהלולאה לא תימשך לנצח, בעזרת הפעולה שאחריה, JNZ loop, אשר בודקת אם התוצאה של הפעולה האחרונה הייתה שונה מאפס, ובמקרה זה, תקפוץ התכנית לנקודת הציון ששמה loop. מכיוון ש-CL התחיל כ-100, והוא קטן בכל איטרציה של הלולאה, בסיומן של 100 בדיקות, ערכו יהיה אפס, והתכנית תסתיים.
שמע, אם בכל זאת אתה לא מבין, אז כדאי שלא תיגש לבחינה, ותתחיל ללמוד ברצינות. אני ניסית ככל יכולתי.
אגב, תקנו אותי אם אני טועה...