עבור לתוכן

צריך בבקשה עזרה באסמבלי

Featured Replies

פורסם

איך הופכים במחרוזת אות קטנה לאות גדולה?

פורסם

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

פורסם
  • מחבר

ניסיתי לעשות את זה אבל אני לא מצליח לא יודע תסינטקס

פורסם

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

פורסם
  • מחבר

אני רוצה לעשות cmp בין si ל si+32

ולעשות jump if not equal

אני לא מצליח אבל זה לא מתקמפל לא יודע איך לכתוב נכון

פורסם

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

פורסם
  • מחבר

.DATA

input_str db 20,?,20 dup(?)

.CODE

start:

mov ax, @data

mov ds, ax

input_toString:

mov ah,0AH

lea dx,input_str

int 21H

;mov bl,dx+1

mov cx,20

lea si,input_str

compare:

cmp [si],[si]+32 ;error!!

jne set_upper;

loop compare

jmp exit

set_upper:

exit:

mov ah, 4ch

int 21H

end_code:

END start




			

			
		
פורסם

יש לך את si ותשמור באוגר נוסף את si - 32. אח"כ תשווה ביניהם.

חוץ מזה, תבדוק שההשוואה שלך הגיונית (si שווה ל-si)

עריכה: שים את הקוד שלך בתוך תגית הקוד #

  • 1 חודש מאוחר יותר...
פורסם

הפעולה cmp לא יכולה להשוות בין כל דבר.

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

לכן אתה לא יכול להשוות בין אוגר לאוגר פלוס ערך. אלא כמו שגיל אמר אתה צריך להכניס את הערך של SI+32 לאוגר אחר ולעשות השוואה בין האוגרים (שזוהי השוואה חוקית)

פורסם

למה להקפיץ הודעה מלפני חודשיים? אני די בטוח שהוא כבר הסתדר \ לא אקטואלי \ הוא לא חזר לכאן יותר...

פורסם

לא שמתי לב :/

זה היה די למעלה ברשימה

פורסם

ככה זה באחד הפורומים הפחות פעילים

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים