שאלה

סתםשם

New member
שאלה

איך אני מכניס קוד של אסמבלר ל++C תודה מראש סתםשם (כולם תפוסים)
 

aradori

New member
תשובה

אני מניח שאתה מדבר על סביבת MS... בכל מקרה - אם אני זוכר נכון - אם אתה רוצה לכתוב פונקציה my_func באסמבלר ולהפעיל אותה מתוך C אתה צריך לקרוא לה באסמבלר my_func_ (כלומר תוסיף _ בהתחלת השם), "תקמפל" את קובץ האסמבלר ל-OBJ, תלנקק אותו עם שאר קבצי ה-C שלך וזהו.... תראה אם אתה מסתדר - אם לא אני אשלח לך דוגמה קצרה. אורי.
 

itamartal

New member
asm {}

בתוך VC++ אתה כותב asm__ בתוך BorlandC 3 אתה כותב asm וBorlandC 5 מקבל asm, _asm, __asm, אתה יכול לכתוב את זה: asm mov ax,5 או asm { mov ax,5 mov es,ax } הערה: חשוב לזכור שכשעושים את זה אסור שהסוגריים יבואו שורה מתחת לפקודה ASM או שזה לא יעבוד.
 

סתםשם

New member
יש קצת בעיות

בקוד המצורף הוא מביא את הודעת השגיאה הבאה: the instruction at "0x0040104a" referenced memory at "0xffffffff". the memory could not be "read". וכשאני עושה STEP BY STEP גיליתי שהבעיה היא כאשר אני קורא לפסיקה מסוימת. בתוכנית בלי פסיקות הוא עובד טוב. איך ב++C אני קורא לפסיקה?
 

itamartal

New member
תנסה 0x000

תנסה לכתוב מספרים בבסיס 16 ככה 0x00000. 00h זו השיטה באסמבלי והיא לא תואמת את כל הקומפיילרים. אם אתה משתמש בborlandc יש גם קובץ בשם dos.h שמכיל union בשם REGS שמכיל מידע על האוגרים ופונקציה בשם int86. אתה קורא לה ככה: int(interrupt Num1,input regs, output regs) דוגמא: union REGS regs; regs.h.ah = 0x13 regs.h.al = 0x00 regs.x.bx = 0x01 int86(0x10,&regs,&regs) אל תנסה להריץ את הדוגמא סתם המצאתי את הנתונים
 

סתםשם

New member
לא--->

הבעיה היא לא בהקסא/עשרוני הבעיה היא שINT (פסיקה) הוא מקבל כINT (מס´ שלם) אני משתמש בVS6
 

סתםשם

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

או אפילו לתת תוכנית לדוגמא עם קוד באסמבלר שמכיל קריאה לפסיקה אודה לו מאוד ממני סתםשם חסר השם
 

itamartal

New member
VC++?

אם אתה משתמש בVC++, יכול להיות שיהיו קצת בעיות. אם אתה רוצה לכתוב תוכנית שתעבוד תחת חלונות אז אין לך בררה אלה להשתמש בVC, אבל אם אתה רוצה לכתוב תוכנית בתעבוד בחלון DOS, אני ממליץ לך לעבוד לBorlandC, זה לא יפריע לך כמו VC עם כל השגיאות המטומטמות שלו.
 

סתםשם

New member
תגובה

1.אני רוצה לכתוב תוכנות DOS משולבות ++C 2.לא נראה לי שRUN TIME ERROR זו שגיאה מטומטמת
 

voguemaster

New member
זה לא יעבוד

אני מניח שאתה כותב CONSOLE APPLICATION. זה אולי נראה כמו תוכנית DOS רגילה, אבל הפלטפורמה היא עדיין Win32. למעשה עם קובצי ה-header הנכונים אתה יכול לקרוא ל-API של חלונות באותה קלות שבה עושה את זה תוכנית חלונות רגילה. השורה התחתונה היא שאין לך גישה לפסיקות. למה ? כי הן לא קיימות עבור תוכנות שמתבססות על הפלטפורמה של win32, בין אם CONSOLE ובין אם תוכנית רגילה עם חלון. הדרך היחידה לכתוב תוכנית DOS אוטנתית היא להשתמש בקומפיילר אוטנתי שייצר קובץ EXE מהסוג הישן, NE אם אתה מכיר. משהו ישן כמו BORLAND 7 או משהו כזה. VCPP מייצר קובץ מסוג PE, וזה קובץ EXE של חלזונות. בתור כזה, מערכת ההפעלה לא מספקת אמולצית DOS בשבילו ולכן אין אפשרות לקרוא לפסיקות. לכן אתה מעיף את התוכנית שלך.
 
למעלה