שאלות באסמבלי - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

שאלות באסמבלי


Avi Levin

Recommended Posts

אהלן,

יש לי תרגיל באסמלי שאני זקוק לעזרה בפתרונו.

התרגיל הוא מבגרות:

http://elecomp.cet.ac.il/elecomp/tests/bagrut/Bagrut09/81520109.pdf

עמ' 8-9

מה שאני מעוניין לדעת זה לגבי פקודות IN, OUT וגם RCL, RLC (למרות שלא מצויין בתרגיל זה)

לפי ההגיון הבנתי שהתוכנית שנתונה שם עושה את הדברים הבאים (לפי שורות):

1. מכניסה לתוך סגמנט DX את הערך 300H

2. (? אני לא בטוח) קולטת ממפתח הקלט שערכו סגמנט DX (כאמור 300H) לתוך AL

3. (? אני לא בטוח) עושה AND לוגי בין הערך AL ל-03H ושומרת אותו בתוך AL

4. משווה בין 1H ל-AL

5. קפיצה לשגרה S1 במידה ודגל ה-ZF לא שווה ל-0

6. מכניסה לתוך סגמנט DX את הערך 301H

7. (? אני לא בטוח) פולטת למפתח הפלט שערכו סגמט DX (כאמור 301H) את הערך AL

8. סיום תת שגרה

9. משווה בין AL, 2H

10. קפיצה לשגרה S2 במידה ודגל ה-ZF לא שווה ל-0

11. מכניסה לתוך סגמנט DX את הערך 301H

12. (? אני לא בטוח) פולטת למפתח הפלט שערכו סגמט DX (כאמור 301H) את הערך

13. סיום תת שגרה

תשובות לשאלות בתרגיל:

א. (למעלה)

ב. השוואה בין AL ל-1H וקפיצה לתת שגרה S1 במידה והם לא שווים (דגל ה-ZF לא שווה ל-0), מכניסה את הערך 301H לתוך סגמנט DX, ופולטת את הערך AL לתוך מפתח הפלט DX (301H)

ג. S0 - פתוח, S1 - סגור

הערך שנקלט הוא XXXXXX01 (האם D0 זה LSB ו-D7 זה MSB?)

בהמשך התוכנית עושים פעולת AND לוגית ומוסיפים לו 03H

בבינארית

XXXXXX01

00000011

=

00000001 - הערך המתקבל בשורה 3 ונשמר ב-AL

לא מתבצעת קפיצה בשורה 4 משום שהערך של AL שווה ל-1H

נשלח למפתח הפלט 301H הערך AL, ששווה ל-00000001, מכאן D0 = 1, D1 = 0

בגלל שהלד L0 מחובר עם האנודה לחיבור D0 (ששווה ל-1) והקתודה לחיבור D1 (ששווה ל-0), הוא יידלק (A>K)

בגלל שהלד L1 מחובר עם הקתודה לחיבור D0 (ששווה ל-1) והאנודה לחיבור D1 (ששווה ל-0) הוא לא יידלק (K>A)

לסיכום - רק הלד L0 יידלק.

גם את תשובותיי נכונות, אבקש הסבר על הפקודות IN, OUT, RCL, RLC

תודה רבה לעוזרים!

קישור לתוכן
שתף באתרים אחרים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

×
  • צור חדש...