• История компьютеров: ночь в музее Яндекса
    0
    Ну, раз о турнире говорится в разделе про приставки, то логично предположить, что он будет проводиться на консоли/ях.
  • Низкоуровневый Brainfuck
    0
    Такой способ не работает, потому что после ] надо переходить на [

    Почему после проверки последнего возможного кода команды нужно возвращаться к предыдущему?
    Моя правка нацелена на то, что программа проверяет наличие валидного кода команды в строке, если в текущей позиции строки отсутствует такой код, то выполнение прекращается.
    Как это работает:
    программа проверяет является ли код в ячейке командой, сравнивая его со всеми известными кодами команд поочередно, и если на все проверки мы получаем отрицательный ответ, то это значит, что строка команд закончилась, если же хотя бы одна проверка дает положительный результат, то отрабатывается соответствующая команде последовательность действий, увеличивается номер ячейки и цикл повторяется заново.
    Подобным образом реализованы многие процедуры чтения строковых данных в играх NES/SNES, только там проверяются не сами строковые символы, а управляющие коды, ответственные за какое-либо поведение, и в большинстве случаев присутствует код окончания строки.

    Про замену loop на jmp: мы получим бесконечный цикл только если условие будет невыполнимым (в строке будет отсутствовать символ $), если поставить на выход из цикла условие на окончание строки, то он должен прекратится (хотя в модели .386 я не специалист и не могу утверждать наверняка, но по логике должно сработать).
  • Низкоуровневый Brainfuck
    +1
    Сразу хочу сказать, что с TASM я не знаком (мне как-то ближе NES-asm/SNES-asm), но и тут я немного понимаю.
    Ваш код от «prev» до «loop prev» будет выполнять все проверки каждый цикл независимо от входных данных, этого можно избежать поставив перед каждым «next_» (кроме «next» и «next6» естественно) безусловный переход к «next6».

    Самый простой способ выходить из цикла по окончанию строки можно сделать, если внести небольшие изменения:
    ...
    next5:
     cmp DL, 5Dh         ; ячейка содержит ]
     jne next7           ; нет, переходим на метку next7
    ...
    ...
     INT    21h
    next7
     mov AX, 4c00h
    ...
    

    Таким образом, если в строке команд встречается «левый» символ не являющийся командой выполнение программы прекратится.
    И не совсем понятно, для чего вам цикл loop, если заранее неизвестно количество тактов, не проще реализовать цикл безусловным переходом с выходом из цикла по условию?
  • Человек против машины: новая этика кибербезопасности
    +2
    Картинку для публикации ваял художник безумно далёкий от всего электронного.
    Начнём с того что стрелять в голову роботу просто бессмысленно.

    А кто вам сказал, что это робот? Он одет в штаны, так что скорее это киборг, и смысл стрелять ему в голову присутствует.