Рабочие будни

Архивы

ДК "Приозерье" продажа земли . CreditProsto.ru: выгодный кредит наличными до 5 млн. руб. Без залога . Химстойкая эмаль хс-710 цена. . Необходим стильныйженский трикотаж оптом в Москве ? - заходите! . приобрести водолазки больших размеров оптом доставка  

Конкурс!

Ниже приведён код написанный мной в далёком 1997 году.

Кто первый расскажет для чего он нужен, получит от меня 10WMZ. Я думаю это нормально получить 10WMZ за 5ть минут размышлений?

Конкурс продлится 7 дней. Свои варианты отписывайте в комментарии.

Отсчёт пошел.

mov ax,0deadh

mov dx,10 //подсказка, это число меняется в зависимости от того, что нам надо

xor cx,cx

a1: xor bx,bx

a2: cmp ax,dx

jb a3

inc bx

sub ax,dx

jmp a2

a3: add ax,'0'

cmp ax,':'

jb a5

add ax,'A'-':'

a5: push ax

inc cx

xchg ax,bx

or ax,ax

jne a1

a4: pop dx

mov ah,02h

int 21h

loop a4

retn

25 комментариев to “Конкурс!”

  1. Shemetov Says:

    Хоть бы подсказку ... ? :)

  2. Валентин Says:

    Ну не смешно :)

    А откомпилировать и проверить? Компилируется без ошибок :)

  3. kren Says:

    Блин, на на Pas'е или каком-нибудь С подобном языке я бы запросто за 5 минут, а тут придется подумать :-).

  4. Валентин Says:

    Я думаю, что Вы справитесь. Предыдущий трюк Вам удалось раскусить. :)

    Это кстати не просто функция, а очень полезная функция. Скажем так, само совершенство. Когда разберётесь, то поймёте, о чем я говорю.

  5. kren Says:

    Почему-то у меня при запуске вылетало с ошибкой. А по идее программка должна выводить результат? Судя по коду должна. Но отладчик наше все :-). Если я правильно понял, то это разбиение числа на цифорки. Поправьте меня, если не так.

    P.S. Спасибо, заставили меня вспомнить ассемблер, а то совсем уже расслабился со всякими Delphi и VS.

  6. Shemetov Says:

    Так и не понял о чем Вы говорите :) Скомпилировать конечно удалось. Вывалилось на экран небольшое количество символов @ . P и встало, даже не завершившись... видимо из стека попыталось на экран вылезти что-то такое, что нельзя отобразить :).

    Что там в коде, я так и не понял... А именно для чего используется разница «А» и «:», а не просто число 7?

    Для чего нужно от значения 57005 кучу раз отнимать 10 (которая подставляется, когда нужна) и все остальные хитрые операции с запоминанием количества операций «sub» между ДЕАД и 10... ну вобщем больше вопросов.

    При компиляции в MODEL SMALL вообще не запускается.

    Признаюсь, я дилетант :), но было прикольно вспомнить университетский курс. Надеюсь на поясняющий комментарий в конце конкурса.

  7. Shemetov Says:

    да, кстати похоже на разбиение, только не работает оно почемуто

  8. kren Says:

    Подставь вместо 10 100 и буде по 2 числа разбиение, или подставь вместо 57005 другое число и попробуй. Отладчик тебе в помощь

  9. Валентин Says:

    текст перед компиляцией уберите :

    "//подсказка, это число меняется в зависимости от того, что нам надо "

    я думаю кто на асме пишет тот понимает, что это ремарк не от асма :)

  10. Валентин Says:

    2kren

    Да это разбиение числа на циферки. Но самое интересно вы не увидели. Ответ близок :)

    2Shemetov

    Эта разница учитывается при компиляции. В откомпилированном коде будет одно число. Это просто удобно при написании, что бы не заглядывать в кодовую таблицу и не высчитывать самому.

  11. kren Says:

    И как это я сразу не увидел, насколько я понял, на выходе, мы получаем не просто эти числа, а именно коды этих чисел без каких бы то ни было дополнительных преобразований. Я прав, или тут кроется что-то еще более гениальное? :-)

  12. Валентин Says:

    Как всё сложно :)

    Подсказка: Замените 10 на 2

    Какой результат увидите на выходе? Я даже в CALC могу посмотреть ответ 1101111010101101

    Если и это не поможет понять суть, то поставьте 8 заместо 10 :)

  13. kren Says:

    Точно, а я совсем в другую сторону шел. Я подумал, что 10 меняется на нужное число типа 10, 100, 1000 ну и т.д. И еще подумал что странновато называть такую функцию «само совершенство». Теперь понятно что к чему, теперь она может претендовать на место «само совершенство». А автор вы?

  14. Валентин Says:

    Автор я. Год написания указан был :)

    Так кто мне всё таки изложит, что она из себя представляет? 10$ ждут своего героя!

  15. Валентин Says:

    Попрошу отписываться шустрее. Потому как уже и по комментариям понятно, что этот код делает. А то залётный незнающий ассемблера получит главный приз.

  16. kren Says:

    После такого к-ва подсказок вам еще не жалко отдать 10$ ;-). А это ф-ция преобразования чисел в разные системы счисления. Надеюсь на этот раз поравок не будет? ;-)

  17. Валентин Says:

    Ура! Победитель найден :)

    Да на самом деле это функция вывода числа в любой системе счисления. Её можно было бы сократить если бы не 16и ричная система. Только ради неё там было добавлено:

    cmp ax,’:’

    jb a5

    add ax,’A'-’:’

    введите 16 заместо 10 и получите hex вывод

    Более идеальной и простой функции я думаю не существует, которая могла бы вывести число в любой системе счисления...

    2kren

    напишите мне на vаlеntin@gritsinger.com (набирайте руками, копирование не прокатит) с ящика который указывали в комментариях, свой wmz кошелёк или сообщите другие координаты для перечисления денег :)

  18. Валентин Says:

    Спасибо Ренат, что приняли участие.

    Было очень интересно :)

    Подкинул вам 10$.

  19. Валентин Says:

    Стоит продолжать разгон мозга? Есть ещё задача на 20$ :)

  20. Shemetov Says:

    2Валентин:

    Если можно, могли бы вы выслать мне работающий вариант этой программы, интересно посмотреть все таки на рабочий вариант (c исходным кодом ;)

    Следующий конкурс тоже с исходным кодом на асм?

  21. kren Says:

    Я с удовольствием поучаствую, вот тоолько заглянуть получится тоолько на выходных, но так то и лучше, не мне же одному все призы забирать =)))

  22. Валентин Says:

    2Shemetov

    Это был приведён рабочий вариант.

    впишите в начале:

    «model small

    codeseg

    org 100h

    begin:»

    и в конце:

    «end begin»

    ---------------

    Tasm cifra.asm

    Tlink /t cifra.obj

  23. Валентин Says:

    2nokia

    Если это спам, то бесполезный. Прямых ссылок я не оставляю.

  24. GoldenScrew Says:

    Долго разгадывали )) Думал, щас... найду проггера, с ним поделюсь ))))

  25. Валентин Says:

    @GoldenScrew:

    Главное не победа.

    На счёт прогера легко. Будут ещё задачки интересные. Но думаю, что приз не достанется ни кому.

Leave a Reply