1. Assembler / Говнокод #12132

    +109

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    GLOBAL _start
        SEGMENT .text
    _start:
         mov eax,4 ; N function=write
         mov ebx,1 ; N handle=1 (stdout)
         mov ecx, txt ; address of buf
         mov edx,16 ; number of byte
         int 80h
    
         mov eax,3 ; N function=read
         mov ebx,0 ; 0 handle=0 (stdin)
         mov ecx, buf ; address of buf
         mov edx,80 ; number of byte
         int 80h
    
         mov [len],eax ;save length buf
         mov byte [buf+1],'!'
    
         mov eax,4 ; N function=write
         mov ebx,1 ; N handle=1 (stdout)
         mov ecx, buf ; address of buf
         mov edx,[len] ; number of byte
         int 80h
    
         mov eax,1 ; function=exit
         int 80h 
         
    SEGMENT .data
    	buf times 80 db 0 ;
    	len dd 0
    	txt db 'Enter the text '

    Запостил: dos_, 15 Ноября 2012

    Комментарии (33) RSS

    • Линуховые syscall'ы, если мне не изменяет память? А судя по times это компилится nasm'ом?
      Ответить
      • P.S. Собралось, работает, но где здесь говно, dos_? Разве что магическая константа 16, от которой можно избавиться к примеру так:
        - mov edx,16 ; number of byte
        + mov edx,txt_end-txt  ; number of bytes
        - txt db 'Enter the text '
        + txt db 'Enter the text: '
        + txt_end:
        Ответить
      • Ну или вот так:
        - mov edx,16 ; number of byte
        + mov edx,txt_size  ; number of bytes
        - txt db 'Enter the text '
        + txt db 'Enter the text: '
        + txt_size equ $ - txt
        Ответить
      • tasm'ом
        Ответить
        • Тасмом под линух о.О

          Кстати с каких пор в тасме переменные в скобках, а их адреса без офсетов? Это имхо именно насмовский синтаксис.
          Ответить
          • Это windows.
            Ответить
            • > dos_
              > Это windows.
              Ответить
            • > int 80h
              > windows
              Ответить
              • http://unixforum.org/index.php?showtopic=30385
                Ответить
              • В windows тоже можно int 80h вместо sysenter кстати. Но там вроде бы коды в eax другие. А этот код - nasm под линуху, я ведь его даже собрал и запустил.
                Ответить
            • > Это windows.
              Пруф в студию, или слив засчитан.
              Ответить
              • Это из вузовского компа.
                Ответить
                • > Это из вузовского компа.
                  Это магическим образом заставит tasm компилить данный код? А потом магически заставит винду его запустить? Не смешите мои тапки.
                  Ответить
          • Сначала прочитал: «Тарасом пол линух». Жутко удивился.
            Ответить
            • Сначала прочитал: «inkanus-gay». Жутко удивился.
              Ответить
              • Баян. http://govnokod.ru/3572#comment36090
                Ответить
                • Не кликается.
                  Ответить
                  • А так? http://govnokod.ru/3572#comment36090
                    Ответить
                    • Мой браузер воспринимает это как 4 разные ссылки, поэтому переходит не туда.
                      Ответить
                      • Нужно открыть каждую часть страницы в нужном браузере и расположить их в таком порядке:
                        Хром  | Фаерфокс
                        ---------------------
                        Опера | Сафари


                        Тогда можно будет прочитать содержимое.
                        Ответить
    • Ассемблировать и запускать не пробовал. Программа заменяет второй символ введённой строки восклицательным знаком?
      Ответить

    Добавить комментарий