Сборный / Говнокод #7126 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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
cmp bl,1
	je France_jmp
	cmp ax,380
	je Bulgaria_jmp
	cmp ax,383
	je Slavonia_jmp
	cmp ax,385
	je Croatia_jmp
	mov bx,400
	mov dx,440
	call IfAnd
	cmp bl,1
	je Germany_jmp
	jmp next_s
USA_jmp: jmp USA
Grinford_jmp: jmp Grinford
France_jmp: jmp France
Bulgaria_jmp: jmp Bulgaria
Slavonia_jmp: jmp Slavonia
Croatia_jmp: jmp Croatia
Germany_jmp: jmp Germany

	next_s:
	mov bx,450
	mov dx,459
	call IfAnd
	cmp bl,1
	je Japan_jmp
	mov bx,460
	mov dx,469
	call IfAnd
	cmp bl,1
	je Russia_jmp
	cmp ax,471
	je Taiwan_jmp
	cmp ax,474
	je Estonia_jmp
	cmp ax,475
	je Litvia_jmp
	cmp ax,477
	jmp next_ss

Japan_jmp: jmp Japan
Russia_jmp: jmp Russia
Taiwan_jmp: jmp Taiwan
Estonia_jmp: jmp Estonia
Litvia_jmp: jmp Latvia
Lithuania_jmp: jmp Lithuania
Philippines_jmp: jmp Philippines
Ukraine_jmp: jmp Ukraine
Moldova_jmp: jmp Moldova
Hongkong_jmp: jmp Hongkong
Britain_jmp: jmp Britain
Greece_jmp: jmp Greece
Cyprus_jmp: jmp Cyprus
Macedonia_jmp: jmp Macedonia
Malta_jmp: jmp Malta
Ireland_jmp: jmp Ireland
Belgium_jmp: jmp Belgium
Portugal_jmp: jmp Portugal
Iceland_jmp: jmp Iceland
Denmark_jmp: jmp Denmark
next_ss:
	je Lithuania_jmp
	cmp ax,480
	je Philippines_jmp
	cmp ax,482
	je Ukraine_jmp
	cmp ax,484
	je Moldova_jmp
	cmp ax,489
	je Hongkong_jmp

Прога для проверки правильности штрих-кодов по контрольной сумме и определение страны-производителя. Про таблицы перехода и near-адресацию конечно в те времена еще не догадывался, только начинал учить асм.
PS: А интерфейс у нее ничего такой был для ассемблера, правда слизал с NU: http://habrastorage.org/storage1/e4efe022/903c7848/d99f7f4f/33d1ed16.png

Запостил: Tronix Tronix, (Updated )

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

  • Игначально на ассме написанно? Или это дизасм с отладочной информацией, если написано на языке высокого уровня то компилеры часто создают двойной прыжок jx/jmp
    Ответить
      • Патамушто афтор матюган с семками.

        Я достаточно близко приблизился к вашему уровню языка, чтобы Вам было понятно?
        Ответить
        • А мы не с вами беседуем. Я лишь хотел узнать, почему LegionDeath считает это нормальным кодом?
          Ответить
        • "Чтобы понять рекурсию, сперва нужно понять рекурсию." (c) Tronix
          Ответить
          • Ну скопипастили вы мою подпись с одного форума, и что? Что вы этим конкретно хотите сказать? Или сморозили херню и теперь не знаете, что сказать? Тогда так просто и скажите - пришли в этот тред просто пофлудить, ассемблера не знаете.
            Ответить
  • Зачетный код 😀
    Наглядный пример неправильного выбора инструмента. Надо было брать тасм и навсегда забыть о jump out of range, поскольку он сам, где надо, сгенерирует связку Jx/JMP. Либо можно было воспользоваться макросами, они как раз идеально подходят для таких случаев.
    Ответить
    • TASM? Да он мертв давно - МАСМ рулит, FASM - подруливает.
      Ответить
      • Давно - это как? В прошлом году вышел версии 5.4, от Embarcadero Technologies. Изменений практически ноль, но говорить о его смерти малость опрометчиво. Да и какие добавления нужны? Он по прежнему единственный, кто умеет заменять умножение на сдвиги и сложения, единственный кто может подменять команды старших процессоров на комбинации команд младших процессоров, кто умеет...да дохрена чего умеет.
        И эта, мой камент был к коду, который явно писался в те времена, когда фасма не было даже в планах, а тасм полностью эмулировал масм, плюс имел свои примочки.
        Ответить
        • Мы об одном ТАСМе говорим? Я имел виду тасм от borland... Хотя масм мой любимец не за это, он позволяет создавать .lib файлы совместимые с visual studio C++, при наличии определенных знаний формата вызова можно впиливать в свой проект шустрый и компактный ассемблерный код, FASM (под винду), правда тож не плох, но генерит только обьектники.
          Ответить
          • Об одном, о нем самом. Появился в RAD Studio 2010, точнее в пакете С++.
            По lib-файлам не вижу особых проблем. Есть утилитки coff2omf и omf2coff, вполне рабочие. Но, судя по хэлпам, в вижене эти утилиты не нужны, поскольку link.exe прекрасно понимает формат omf и может самостоятельно сконвертировать его в родной coff.
            Ответить
            • > Появился в RAD Studio 2010
              он никуда не девался

              другое дело, что застрять в С++ Быдлере в 2010 году - символично
              Ответить
              • Читать умеем? Речь о новой версии ТАСМ, вышедшего в 2010-м году.
                Ответить
                • киса, RAD Studio 2010 вышла в 2009

                  > Изменений практически ноль
                  > Речь о новой версии
                  мне кажется или кое-кто хуйню пишет?
                  Ответить
                  • Перекрестись, казаться больше не будет.
                    В копирайте указан 2010-й год и новая версия - 5.4. Что не так? Или тебе известны изменения, что появились с версии 5.3? Ну так колись, а не выёбывайся.
                    Ответить
                    • > Ну так колись, а не выёбывайся
                      Нифига себе какие нубы наглые пошли...
                      Ответить
                      • Ты забыл добавить эхотажную "lamers must die", чтоб каждому стало ясно насколько ты крут 😀
                        Ответить
          • >visual studio C++, при наличии определенных знаний формата вызова можно впиливать в свой проект шустрый и компактный ассемблерный код
            Дрочите на комманды процессора и такты?
            Ответить
            • >>Дрочите на комманды процессора и такты?

              Не дрочу, а чинно мастурбирую, а если серьезно - прикалывает размеры и быстрота кода.
              Ответить
              • >а мастурбирую
                Это плохо. Вставать на девушек не будет. Только на такты CPU.
                Ответить
        • Изменений практически ноль, но говорить о его смерти зачем опрометчиво?
          Ответить
        • > заменять умножение сдвигами
          > подменять команды старших процессоров
          Зачем!?
          Ответить
          • > заменять умножение сдвигами
            Чтоб быстрее работало
            > подменять команды старших процессоров
            Чтоб скомпилировать под старые процессоры без новых инструкций, не переписывая руками новые инструкции в старые. Чтоб не писать два раза код под новые и старые процессоры.
            Ответить
            • > быстрее работало
              Я думаю, что чувак, который пишет на асме, и сам до этого додумается...

              Да и прокладки на джампах тоже сомнительная хуйня, которая может сломать код.
              Ответить
            • > без новых инструкций
              Хм, т.е. я смогу переключение в лонг мод сконпелировать под 8086? И юзать там 64-битные регистры? Охуенно же, пойду ставить тасм.
              Ответить
      • - Здравствуйте, полуось уже умерла?
        - Как, опять?
        Ответить
  • о(Y!YV,Z$A(I:T AJ?M"F!T$M(SU)E.I!XD"S,V"X:Z$V A,B G!N)E.C?G,NW)Z,Y"Z"D,W!R W.W:H?B!A.GK.Y!K"V E!D$Q$P)Z?XG?L!R O?C!P:U$U?X"I?W(W(K:M(S!T"KQU.L(X"E?Z(G X(R J:S"X!B:V,HP)Y)C$DJ YA P?N!B:H H)K(JY?F M"T!NP,U:H:F$L X$T.L"F"D,H(F"G.E$D)F:S.K!I!Y C!Q?QQ:GX"DQ?X?X(J Z,J$I(N MS$V?P?B)G!J)O$B"O?T!JV$X!P(B?Z:F?F.U:A Z:CV!Q)K)A.G)E?E!U.D,Z:Z$K(T?H:H)Y!F X!M:TC)W.R?LPF$O!D X(MH)T)G,AD:M:C:D?L(O)O.N"A$Q)L"Y)E,S.Q,O:I(O!S TN:J"Q:H)L"T"O,S"S(W)M:H.P,AT?J$O"V(D)K)E$Z Y"A,G:I)TM)L)Q(L!KO)X)J:N!O.C.L:I,F"M"G)J K"MX.Y)M(E(E.X?Z(I)W.F(AW Q)H"RU)N?X"Z.A,WY)E"Q)H)B?X?TO:M:B(Q"K L$C,D!A"H:B)P V:F N!OX:KUCC)D"R!ZZ$M:K:X)Z$AL.B:Q,O)I(C(M"S.W)W$ZB.V"S)J(J C,NJ K!KR?Z U:A!G"D$T.L$Y!Q.Y$Y N"U?U$U$K,D.J C(K,X"J B,F(S,F V:M.F)O(B(H.I$EB!A,O:Y,Y$XQ?G,M$E:U:K:C"L,Y.Q)Y,C V(Q,Q$H?J:D!Q,Y,T(D,J?Z T,K(O:D(L.Z.N:F:N.T.W)K.B$N:I X,Q$D"JY,D:G(C!C$A?B"M(E S)W.Y,Q)Z(X:Z(K?V?O)R!P?S,F:U!I)Y"U,Z?O"J(U!F?H$Z,I)Z O(TФMEUDSRAXZKVIPWKESWZUHBRHSMMVCDEVWVFWBPSHDZYOMXOJSRGCUPZHMGJHXCDTCLJIGCKEWMXNDWXWRCSGEBGJLZWUGJQAEEGUHCXRGLVQEVKDCETHHZQJNCBXZYFJBINECFDTIACTBSFAURNSVOOPGXDJFFONXFUEPBEFCRNICCTUASUPMIUHDBEFUVBLSIZLGYSJONSXWIFPYPYDPRFAWOJRLSBMUNRWBHOIDTBUBIIVFODZOIPNUSUFUECTXCDLTNXLHL
    Ответить

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

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8