1. Куча / Говнокод #18469

    +138

    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
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    /*
    
    Исходный код бутлоадера непонятными букафками
    vk.com/wctstudio
    
    */
    
    Lp BP hm	// В регистр SI помещаем адрес сообщения
    Pi AL aa	// Вызываем функцию печати строки
    Pl OP		// Вечный цикл для корректной работы программы
    
    /* Процедура печати символа (процедура 1) */
    
    Le AP		// Помещаем в регистр AH число AP (15). Объясняем БИОС-у то, 
    		// что нам нужно вывести один символ на экран. В регистре AL
    		// хранится ASCII значение нашего сообщения
    Lh AA		// В регистр BH - 0, соответственно, это и есть номер страницы
    Ld AH		// Ну а в регистр BL - 7, это значит, что у нас будет выводиться
    		// светло-серый текст на черном фоне
    
    Mn BA		// Как только видим Mn - сразу вспоминаем, что это прерывание
    		// На данный момент это прерывание 16 (десятичная система)
    		// а в hex - знакомое нам прерывание 0x10.
    		// Это прерывание BIOS - видео сервис
    
    Md		// Выходим из процедуры
    
    /* Процедура вывода строки на экран (процедура 2) */
    
    // вывод символа (процедура 3)
    
    Ik AE		// Помещаем в регистр AL значение из SI
    Eg		// Инкренмент (увеличение на единицу) регистра SI
    
    Ai MA		// Если значение регистра AL - 0 (т.е. строка закончилась), то
    He AF		// заканчиваем выполнение программы (выполнение процедуры 4)
    		// - 5 байт вперед на команду Md (выход из программы)
    
    Pi PN oo	// Если же строка не закончилась, то выполняем процедуру 1
    		// т.е. выводим символ, который находится в AL
    
    Pl OE           // Берем следующий символ из строки (выполнение процедуры 3)
    
    Md		// Все, закругляемся и выходим из программы
    
    FH GD HE CA	// ASCII: Wct (пробел)
    GO GP GF CA 	// 	  one (пробел)
    GM GO HG GF	//	  love
    Aa		// Конец строки обязан заканчиваться нулем, т.е. Aa :)
    
    /* У нас осталось свободное место, до 512 байт нам нужно написать недостающие Aa (0) */
    
    Aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa
    aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa 
    aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa 
    aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa 
    aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa 
    aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa 
    aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa 
    aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa 
    aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa 
    aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa 
    aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa 
    aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa 
    aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa 
    aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa 
    aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa 
    aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa 
    aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa 
    aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa 
    aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa 
    aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa aa 
    aa aa aa aa aa aa aa
    
    // До 512 байт нам не хватает всего двух байтов..
    
    Ff KK		// FF KK - подпись загрузчика, чтобы компьютер понял,
    		// что это загрузчик, и его необходимо загрузить в
    		// память. В windows есть подписи "MZ" & "PE", а тут
    		// такое вот дело.

    Не многие поймут этот код. Вернее, не многие лишь поймут код сей. Зачем это? Отвечаю: для того, чтобы помять моск.
    github.com/Mihip/Wct

    Запостил: Mihip, 10 Июля 2015

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

    • Въебал 14 минусов.
      Ответить
    • Ты опять выходишь на связь, мудило?
      Ответить
    • Вот любитель хардкора то... Ассемблер уже не возбуждает, приходится кодить прямо хекс кодами?
      Ответить

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