נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: שאלה באסמבלי מערכים

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
מיכאל
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 12 December 2007 בשעה 12:00 | IP רשוּם
ציטוט מיכאל

כתבו תכנית שמקבלת בסגמנט הנתונים מערך M בן חמישה נתונים כלשהם בגודל בית. נסתכל על התוכן הבינרי של הבתים כעל רצף של 40 סיביות. על התכנית להפוך את הסדר של הסיביות בזיכרון, ולשים אותן במערך שהוכן מראש,  REV_M,  גם הוא בן 5 בתים.

 

אז חשבתי על משהו כזה:

קוד:

DATASEG

M    DB   5dup(?)fff

REV_M    DB    5dup(0)fff

VAR    DB   0

CODESEG

START: Mov ax,@data

Mov ds,ax

AGAIN: Mov al,[M+VAR]fff

SHR al

Mov [REV_M+VAR],al

Inc VAR

Jmp AGAIN

 

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

הצטרף / הצטרפה: 11 November 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 354
נשלח בתאריך: 12 December 2007 בשעה 22:42 | IP רשוּם
ציטוט yohai

קודם כל אני לא מבין למה אין לך הפרדה בין הסגמנטים ואתה מערבב אותם ביחד...

אבל לא משנה.... בחירה שלך...

בקשר לתוכנית אני לפחות רואה שיש פה חרטטנות בלי לפגוע....

אתה מבצע את הלולאה אין סוף פעמים.... אין פה סיום של הלולאה...

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

וראשונה תהיה אחרונה וזה לא מה שאתה מבצע.

מה שאתה לפי דעתי צריך לעשות. זה לדוגמא לדגום סיבית סיבית באמצעות נגיד and

כאשר אתה משתמש במשתנה דוגם או אוגר שערכו 1. ולהכניס הסיביות כאשר

אתה משתמש בשני אינדקסים אחד מהתחלה והשני מהסוף.

אפשרות נחמדה נוספת זה פשוט לדחוף למחסנית ואז כשאתה מוציא זה עושה את הפעולה

שביקשת וכאשר תשים אותם במערך החדש זה כבר יהיה הפוך (FIFO)

מקווה שעזרתי :)   

 

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 21 March 2008 בשעה 13:34 | IP רשוּם
ציטוט עמרי

שלום לכולם

השאלה שלי היא בשפת אסמבלי

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

ניסיתי לבצע CASTING על ידי הפקודה byte ptr variable

אך עדין הוא נותן שגיאה

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

הצטרף / הצטרפה: 11 November 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 354
נשלח בתאריך: 22 March 2008 בשעה 13:35 | IP רשוּם
ציטוט yohai

יוצרים מערך על-ידי הפקודה Dup

Data Segment

(?)x dw 25 dup

Data ends

במקרה הזה הגדרנו מערך בעל 25 תאים ללא אתחול כאשר כל תא הוא בגודל מילה.

ואז עושים כזה דבר

mov al,0

add al,byte ptr x[0]   ;note

וכך אתה ממשיך בלולאה ומסכם את כל האיברים

הערה: *עליך להימנע ממצב שבו סכום האיברים יהיה גדול ממה שבית יכול להכיל כי אז זה

פשוט לא יצא לך נכון, דרך אגב בחיבור אתה לא תצליח לחבר את כל המידע שנמצא במילה

לתוך בית (גודל אופרנדים שונה) לכן תוכל לחבר רק את הבית הראשון בכל מילה.

 

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

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

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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