עבור לתוכן

עזרה פשוטה באסמבלי

Featured Replies

פורסם

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

אז ככה:

ecx= מחרוזת המתקבלת מהמשתמש המייצגת מספר בהקסדצימלי. סתם כרגע נניח כי היא בת 2 תווים.

lc1-מחרזות הפלט. כל 2 ספרות ב- ecx אמורות להתפרש כתו באסמבלי.בסופו של דבר אני רוצה שב lc1 יהיו כל 2 ספרות מ ecx מתורגמות לתו באסמבלי.

section .bss

LC1:
RESB 256

section .text
align 16
global my_func
extern printf

my_func:
push ebp
mov ebp, esp ; Entry code - set up ebp and esp
pusha ; Save registers

mov ecx, dword [ebp+8] ; Get argument (pointer to string)
mov ebx,LC1


mov dl, [ecx] /// שמירת הספרה הראשונה מהקלט
inc ecx
mov dh, [ecx]/// שמירת הספרה השניה מהקלט

mov al,16
mul dl
add ax, dl // איך אני מוסיף כאן את dl למרות שזה רגיסטר של בית?
mov [ebx],ax // כנ"ל פה

[pre]

// איך עכשיו הספרות, בהנחה שהעברתי אותן נכון לlc1 , מתרגמות לתווים?

[/pre]

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

אוקי, אז כאמור מה שאתה מנסה לעשות זה בעצם HEX DECODE

אז איך לעשות את זה?

בהקסה ישנם 16 תווים אפשריים,0-9, A-F

כאשר '0' יתורגם ל 0, '9' יתורגם ל 9, וכנ"ל באותיות

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

לדוגמא 'A3' יהפוך ל 3 * 1 + 10 * 16 = 163

איך לעשות את זה באסמבלי? לא בעיה שלי, אבל זה מאוד מאוד פשוט , ואם אתה מחפש פשוט תשובה, GOOGLE IT

ארכיון

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

דיונים חדשים