לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 10-05-2008, 11:51
  Boba Smith Boba Smith אינו מחובר  
 
חבר מתאריך: 27.10.02
הודעות: 2,038
שאלה באסמבלי 8086

מטרת התוכנית היא כרגע ליצור קובץ code.txt שאליו היא תעתיק את הפקודות מהתוכנית עצמה.

ככה זה נראה
קוד:
P286N IDEAL DOSSEG MODEL small STACK 100H DATASEG filename DB "code.txt", 0 fd DW ? CODESEG start: mov ax, @data mov ds, ax ; create the file and open for write mov ah, 3CH mov cx, 0 lea dx, [filename] int 21H mov [fd], ax ; write the code to the file mov ah, 40H mov bx, [fd] mov cx, ? mov dx, offset start int 21H ; close the file mov bx, [fd] mov ah, 3EH int 21H exit: mov ah, 4CH mov al, 0 int 21H END start


הקובץ code.txt אכן נוצר, אך הוא לא מכניס לי דבר לתוך הקובץ! למה? מישהו מאתר את הבעיה?


משום מה אני אפילו לא מצליח להכניס סטרינג רגיל לקובץ! תראו:

קוד:
P286N IDEAL DOSSEG MODEL small STACK 100H DATASEG filename DB "code.txt", 0 fd DW ? msg DB "Hello World!", 0 CODESEG start: mov ax, @data mov ds, ax ; create the file and open for write mov ah, 3CH mov cx, 0 lea dx, [filename] int 21H mov [fd], ax ; write the code to the file mov ah, 40H mov bx, [fd] mov cx, ? mov dx, offset word msg int 21H ; close the file mov bx, [fd] mov ah, 3EH int 21H exit: mov ah, 4CH mov al, 0 int 21H END start


מישהו רואה איפה הבעיה?

תודה מראש!
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #4  
ישן 10-05-2008, 18:33
  Boba Smith Boba Smith אינו מחובר  
 
חבר מתאריך: 27.10.02
הודעות: 2,038
בתגובה להודעה מספר 3 שנכתבה על ידי yoavmatchulsky שמתחילה ב "מה זה היה? זה בגלל שלא אמרת..."

בדיוק. חשבתי שסימן שאלה הוא מעין ג'וקר כזה. מסתבר שלא.

עכשיו הצלחתי להכניס סטרינג לתוך הקובץ, אבל אני לא מצליח להכניס את הקוד עצמו.
בתור התחלה אני מנסה להכניס שורת פקודה אחת. הנה הקוד:
קוד:
P286N IDEAL DOSSEG MODEL small STACK 100H DATASEG filename DB "code.txt", 0 fd DW ? msg DB "Hello World!", 0 msg_len DW msg_len - msg CODESEG start: mov ax, @data mov ds, ax ; create the file and open for write mov ah, 3CH mov cx, 0 lea dx, [filename] int 21H mov [fd], ax ; write the code to the file mov ax, cs mov ds, ax mov ah, 40H mov bx, [fd] mov cx, 2 lea dx, offset start int 21H mov ax, @data mov ds, ax ; close the file mov bx, [fd] mov ah, 3EH int 21H exit: mov ah, 4CH mov al, 0 int 21H END start


אני אסביר שניה מה עשיתי. מכיוון שמדובר בשורת פקודה אחת הגדרתי לו 2 בתים (WORD).
את הCODESEG העברתי לDATASEG מכיוון שכדי לכתוב לקובץ אני צריך להכניס לdx מען היסט מDATASEG בלבד (לפי מה שהבנתי). ואז למעשה הכנסתי לdx את הכתובת של start, כלומר הפקודה הראשונה. בסוף כמובן שהחזרתי את הDATASEG לקדמותו.

למה זה לא פועל? איפה פה טעיתי?

תודה מראש.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 17:10

הדף נוצר ב 0.05 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר