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

    +223

    1. 1
    2. 2
    3. 3
    mov ax, 4C00h
    mov dx, offset msg
    int 21h

    После этих строк пошёл спать.

    Запостил: Mencey, 09 Ноября 2010

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

    • В тред призывается КЭП, не все знают ассемблер.
      Ответить
      • Функция 4Ch прерывания 21h это завершение процесса. Никакой ссылки на "msg" в регистре DX она не ожидает. Зато в DS:DX передаётся указатель на сообщения для функции 09h, вывод строки на экран.
        Ответить
      • на С это типа `exit("Error")` - exit ожидает только число как код выхода, но голова говорит что надо еще и сообщение какое что ли выдать на экран....
        Ответить
        • Ну, В ассемблере код возврата находится в AL, в AH код завершения. mov ax,4c00h тоесть ah=4c - выход al=00 - код возврата
          Ответить
    • Если я не ошибаюсь, в данном коде лишняя строка
      mov dx, offset msg

      поскольку она не выполнится (в AH находится номер функции 4Ch, по сути представляющей из себя код выхода из программы)
      Ответить
      • да, dx эквопенисуален функции 0x4C00 @ 21h
        но об этом уже сказали

        а строчка конечно выполнится
        тока зачем?
        Ответить
        • Вообще да, выполнится :)
          Но визуально при работе программы мы ничего не увидим (только значение DS:DX в отладчике) .
          Ответить
      • да строка 2 - чистый профит паддинг
        Ответить
        • что бы на чексумму влиять, которая считывается при запуске, что бы дети себе не накручивали много золота и бесконечные жизни
          Ответить
    • Int не подсвечивается! Непорядок!
      Ответить

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