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

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

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

לימוד אסמבלי

מתוזמן נעוץ נעול הועבר תכנות
8 פוסטים 4 כותבים 316 צפיות 3 עוקבים
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
תגובה
  • תגובה כנושא
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • 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
    • nigunN nigun

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

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

      
      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 מבצע יציאה.

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

      OdedDvirO מנותק
      OdedDvirO מנותק
      OdedDvir
      כתב ב נערך לאחרונה על ידי OdedDvir
      #2

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

      תגובה 1 תגובה אחרונה
      2
      • nigunN nigun

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

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

        
        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 מבצע יציאה.

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

        A מנותק
        A מנותק
        avr416
        כתב ב נערך לאחרונה על ידי
        #3

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

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

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

        nigunN תגובה 1 תגובה אחרונה
        3
        • A avr416

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

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

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

          nigunN מנותק
          nigunN מנותק
          nigun
          כתב ב נערך לאחרונה על ידי
          #4

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

          מייל: nigun@duck.com

          A תגובה 1 תגובה אחרונה
          0
          • nigunN nigun

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

            A מנותק
            A מנותק
            avr416
            כתב ב נערך לאחרונה על ידי
            #5

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

            nigunN תגובה 1 תגובה אחרונה
            2
            • A avr416

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

              nigunN מנותק
              nigunN מנותק
              nigun
              כתב ב נערך לאחרונה על ידי
              #6

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

              מייל: nigun@duck.com

              תגובה 1 תגובה אחרונה
              0
              • nigunN nigun

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

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

                
                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 מבצע יציאה.

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

                yossizY מנותק
                yossizY מנותק
                yossiz
                כתב ב נערך לאחרונה על ידי
                #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
                • yossizY yossiz

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

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

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

                  nigunN מנותק
                  nigunN מנותק
                  nigun
                  כתב ב נערך לאחרונה על ידי
                  #8

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

                  מייל: nigun@duck.com

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


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

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

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