|
עמוד:172
ספירת סיביות באוגר : נבצע את הספירה באמצעות סיבוב האוגר AX ונזכור שהסיביות היוצאות החוצה נכנסות גם לדגל הנשא . לאחר כל סיבוב , אם ערך הנשא הוא , ' 1 ' נוסיף 1 למונה של מספר הסיביות . כדי לבדוק את 16 הסיביות של האוגר AX ( שני בתים ) נשתמש בלולאה . מנגנון בקרת הלולאה מכיל מונה שערכו ההתחלתי הוא , 16 d אשר מונה את מספר הפעמים שהלולאה מתבצעת . ערכו של המונה יופחת ב1- בכל ביצוע של הוראות הלולאה , והתהליך יסתיים כשערכו של המונה יהיה . ' 0 ' בפתרון הזה נשתמש באוגרים שלהלן : – AX שיקבל ערך התחלתי כלשהו – BL שערכו התחילי הוא ' 0 ' והוא מונה של מספר הסיביות שהן – CL ' 1 ' שערכו התחילי הוא ( 10 h = ) 16 d והוא מונה של מספר הפעולות שהלולאה צריכה לבצע להלן פירוט ההוראות בתכנית : אתחול מונה הסיביות שערכן MOV BL , 00 h ; ' 1 ' אתחול מונה הלולאה MOV CL , 10 h ; המילה שמכילה את תוצאות ההצבעה MOV AX , 0 C 5 F 1 h ; לולאה לספירת מספר הסיביות שהן 1 באוגר ; AX העברת סיבית לנשא ROTATE : ROR AX , 1 ; התעלמות מהסיבית שערכה JNC NOADD ; ' 1 ' עדכון מונה הסיביות INC BL ; הפחתת 1 ממונה הלולאה NOADD : DEX CL ; חזרה , אם מונה הלולאה שונה מ JNZ ROTATE ; ' 0 ' - סיום הלולאה ; MOV AL , 00 h ; בדיקה אם יש רוב להצבעה JNA PELET ; CMP BL , 08 h ; יש רוב להצבעה MOV AL , 01 h ; הצגת החלטת הרוב בדפ " א OUT DX , AL PELET : MOV DX , 0378 h ;
|
|