ABA


"עזרה באסמבלי (שילוב RealMode ב-ProtectedMode)"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #6984 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 6984
Dudenland

   22:31   17.09.03   
אל הפורום  
  עזרה באסמבלי (שילוב RealMode ב-ProtectedMode)  
 
   אני עובד כבר די הרבה זמן על פיתוח מנוע גרפי עצמאי, בינתיים דו-מימדי... תוך שימוש בכלים של VESA דרך ה-BIOS...
עד עכשיו, תיכנתתי ב-Dos16, כלומר ב-16 סיביות במצב Real-Mode... (ב- ++Borland C)...
כעת, אני מנסה להמיר את הקוד לאסמבלי במצב Win32, כלומר ב-32 סיביות במצב Protected-Mode... (ב-MASM32)...

כידוע, האינטראפטים שאיתם עבדתי ב-16 סיביות (int 10h), אינם תקפים עוד לגבי 32 סיביות... ולכן, קראתי קצת, והבנתי שיש צורך בשימוש באינטראפט 31h (פונקציה 300h) שמדמה פעולות Real-Mode ב-Protected-Mode...
הפונקציה הזו מקבלת כפרמטרים מצביע למבנה של רגיסטרים, והאינטראפט שיש להפעיל, ואמורה להפעיל את האינטראפט הרצוי...

זה מה שעשיתי:


.486
.model flat, stdcall

dpmi struc
_edi dd 0
_esi dd 0
_bp dw 0
_bph dw 0
_ddw dd 0
_ebx dd 0
_edx dd 0
_ecx dd 0
_eax dd 0
_flg dw 0
_es dw 0
_ds dw 0
_fs dw 0
_gs dw 0
_ip dw 0
_cs dw 0
_sp dw 0
_ss dw 0
dpmi ends

.data
real_mode dpmi <>

.code
start:

les di, real_mode

mov real_mode._eax, 4F02h
mov real_mode._ebx, 101h

mov ax, 300h
mov bx, 10h
xor cx, cx

int 31h

end start


אני מקבל שגיאת Run-Time, ולאחר Debug על השורה int 31h, בהודעה של access violation או משהו כזה...

אגב, התוכנית הזו אמורה לשנות את המצב הגרפי למצב של 640x480x8...

מישהו יכול לעזור?


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net