עזרה באסמבלר

tomashin

New member
עזרה באסמבלר

ערב טוב! אני מתחיל פרוייקט אסמבלר "שש-בש", סביבת העבודה היא Turbo assembler. הבעיות שלי נכון לרגע זה הם: 1. אני מעוניין להגריל מספרים בצורה רנדומלית עבור הטבלת קוביות. יש איזושהיא פסיקה עבור יצירת מספר רנדומלי? 2. בפרוייקט אני מעוניין לעבוד עם צבעים(אדום, לבן). לינק מתאים לעבודה עם צבעים באסמבלר יעזור בהחלט. תודה והמשך ערב נעים.
 

vinney

Well-known member
תשובות

1. כן - פסיקת שעון 2. אסמבלר לא יודע מה זה צבעים. אסמבלר יודע מה זה 1 ומה זה 0, יותר מזה - גדול עליו. אני מציע לך לחפש מידע על מצבים גרפיים של VGA, לפי המצב בו אתה עובד (טקסט/גרפי, ורזולוציה), ולקודד צבעים ישירות לזכרון וידאו/להשתמש בפסקה 10H.
 

tseliot

New member
לגבי 2

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

codec

New member
הוא אמר שכן

ואני מצטט: "...ישירות לזיכרון וידאו/..."
 

InfectedM

New member
תשובה ל 2

כל שני בייט מחולקים בצורה כזו:
הבייט הראשון(משמאל) אחראי לצבע. D7 D6 D5 D4 D3 D2 D1 D0 <- 1st byte D7 = Blinking D6-D4 = Backgroung Color D3-D0 = Char Color הבייט השני מכיל את קוד האסקי של התו אותו תרצה להציג. לדוגמא: 0000110101000001b או 0D41h ידפיס לך את האות איי (01000001b = 41h) בלי צבע רקע ובלי הבהוב (00001101)​
לגבי כתיבה ישירה לזכרון הוידאו, ניתן לעשות זאת ע"י שימוש במען 0b800h. לדוגמא:
push @data pop ds mov ax,3h int 10h ;Setting text mode mov ax,0b800h ;Video memory's offset mov es,ax mov di,0 mov ax,0000110101000001b mov es:[di],ax ;Pointing to video memory​
 

vinney

Well-known member
שים לב שאתה מטעה

מה שאתה כותב נכון רק למצב טקסט, אתה לא יודע שזה המצב שהוא עובד בו (אם כי סביר להניח שכן...
)
 

InfectedM

New member
אוי, רציתי להעיר שאני לא בטוח לגבי

נכונות הדברים במצבים אחרים אבל שכחתי. תודה. :) אתה בטוח שזה כך רק במצב טקסט?
 
למעלה