דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. לימוד אסמבלי

לימוד אסמבלי

מתוזמן נעוץ נעול הועבר תכנות
8 פוסטים 4 כותבים 309 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • nigunN מנותק
    nigunN מנותק
    nigun
    כתב ב נערך לאחרונה על ידי
    #1

    אני מחפש מדריכים ללימוד אסמבלי
    לבנתיים התחלתי מהמדריך הזה.

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

    
    section .text				;section declaration
    
    			;we must export the entry point to the ELF linker or
        global _start	;loader. They conventionally recognize _start as their
    			;entry point. Use ld -e foo to override the default.
    
    _start:
    
    ;write our string to stdout
    
            mov     edx,len ;third argument: message length
            mov     ecx,msg ;second argument: pointer to message to write
            mov     ebx,1   ;first argument: file handle (stdout)
            mov     eax,4   ;system call number (sys_write)
            int     0x80	;call kernel
    
    ;and exit
    
    	mov	ebx,0	;first syscall argument: exit code
            mov     eax,1   ;system call number (sys_exit)
            int     0x80	;call kernel
    
    section .data				;section declaration
    
    msg     db      "Hello, world!",0xa	;our dear string
    len     equ     $ - msg                 ;length of our dear string
    

    אני מבין שיוצרים את המשתנה msg עם סטרינג
    ואז מוסיפים את המשתנה len עם אורך המחרוזת.
    ואז מעתיקים את msg לאוגר מסויים (למה דווקא אליו?)
    ואת האורך לאוגר אחר (למה?).
    ואז רושמים באוגר נוסף את היעד לכתיבה
    ובאוגר נוסף את המספר פקודה למערכת הפעלה( sys_write?)
    ואז מפעילים עם int 0x80 (שנקרא גם syscall)
    כנ"ל כשרוצים לעשות exit
    מכניסים לאוגרים הנ"ל את הקוד 0 ו 1
    ואז ה syscall מבצע יציאה.

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

    מייל: nigun@duck.com

    OdedDvirO A yossizY 3 תגובות תגובה אחרונה
    0
    • OdedDvirO מנותק
      OdedDvirO מנותק
      OdedDvir
      השיב לnigun ב נערך לאחרונה על ידי OdedDvir
      #2

      @nigun יש לך כאן: https://www.tutorialspoint.com/assembly_programming/
      יש שם חלק של Quick Guide איך ליצור Hello World, קומפיילר אונליין ועוד. בהצלחה!

      תגובה 1 תגובה אחרונה
      2
      • A מנותק
        A מנותק
        avr416
        השיב לnigun ב נערך לאחרונה על ידי
        #3

        @nigun אתה מבקש כאן 2 דברים:
        א. להבין מה כל פקודה עושה.
        ב. להבין למה דווקא בחרו באוגר הזה, בשביל זה צריך להבין קצת יותר את הארכיטקטורה של המעבד..

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

        https://data.cyber.org.il/assembly/assembly_book.pdf

        nigunN תגובה 1 תגובה אחרונה
        3
        • nigunN מנותק
          nigunN מנותק
          nigun
          השיב לavr416 ב נערך לאחרונה על ידי
          #4

          @avr416
          כמו שציינתי למעלה התחלתי לעבור על המדריך הנ"ל (כמובן באופן לא כ"כ מסודר)
          לא הצלחתי להוציא ממנו את התשובות לשאלות שלי
          אבל יתכן שפשוט אני צריך לקרוא עוד.

          מייל: nigun@duck.com

          A תגובה 1 תגובה אחרונה
          0
          • A מנותק
            A מנותק
            avr416
            השיב לnigun ב נערך לאחרונה על ידי
            #5

            @nigun תסתכל בעמודים 57-62 על סוגי האוגרים (רגיסטרי בלעז).
            ובכללי פרק 3, מלמד אותך על מבנה המעבד (80x86) ודרך פעילותו, שזה חיוני להבנת אסמבלי.
            אני לא הספקתי להתקדם שם יותר מדי, אז אני לא יכול לענות על השאלות שלך.

            nigunN תגובה 1 תגובה אחרונה
            2
            • nigunN מנותק
              nigunN מנותק
              nigun
              השיב לavr416 ב נערך לאחרונה על ידי
              #6

              @avr416
              על זה עברתי כבר
              ועדיין לא ברור לי.
              תודה בכל אופן.

              מייל: nigun@duck.com

              תגובה 1 תגובה אחרונה
              0
              • yossizY מחובר
                yossizY מחובר
                yossiz
                השיב לnigun ב נערך לאחרונה על ידי
                #7

                @nigun אמר בלימוד אסמבלי:

                ואז מוסיפים את המשתנה len עם אורך המחרוזת.
                ואז מעתיקים את msg לאוגר מסויים (למה דווקא אליו?)
                ואת האורך לאוגר אחר (למה?).
                ואז רושמים באוגר נוסף את היעד לכתיבה
                ובאוגר נוסף את המספר פקודה למערכת הפעלה( sys_write?)

                הקוד שהבאת מיועד עבור מערכת לינוקס.
                בלינוקס יש פרוטוקול איך מעבירים את הארגומנטים לקרנל
                https://en.wikibooks.org/wiki/X86_Assembly/Interfacing_with_Linux#Via_interrupt
                הארגומנטים של write נמצאים פה: man 2 write או פה

                📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                nigunN תגובה 1 תגובה אחרונה
                4
                • nigunN מנותק
                  nigunN מנותק
                  nigun
                  השיב לyossiz ב נערך לאחרונה על ידי
                  #8

                  @yossiz
                  מה הייתי עושה בלעדיך?
                  שובר את הראש עוד כמה שעות
                  עד שהייתי נזכר שהפקודות לכל מערכת הפעלה יכולים להיות שונים?🙄

                  מייל: nigun@duck.com

                  תגובה 1 תגובה אחרונה
                  1

                  בא תתחבר לדף היומי!
                  • התחברות

                  • אין לך חשבון עדיין? הרשמה

                  • התחברו או הירשמו כדי לחפש.
                  • פוסט ראשון
                    פוסט אחרון
                  0
                  • דף הבית
                  • קטגוריות
                  • פוסטים אחרונים
                  • משתמשים
                  • חיפוש
                  • חוקי הפורום