Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Видимо, выигрышная стратегия, описанная на Википедии, не очень-то и выигрышная.Конечно там глупость написана. Исправил. В любом случае, при стартовая позиции с 15 и 3 выигрышная стратегия будет для первого игрока. Второй может победить только если первый сделает ошибку.
Правила такие: на столе лежат 15 палочек, нужно по очереди брать от 1 до 3. Проигрывает тот, кому нечего брать со стола.Почему-то сразу вспомнилась задачка:

org 100h
;;Угадай-ка
int 16h ;;Ожидаем нажатие на клавишу
mov bl, al ;;Сохраняем код клавиши в память
still: ;;Главный цикл
int 29h ;;Вывод символа на экран
mov ax, 1*256+13;;al=13 - Возврат каретки, ah=1 - Опрос клавиатуры
int 29h
int 21h
cmp al, bl ;;Сравнение кодов клавиш
mov al, '+'
ja still
mov al, '-'
jb still
true:
ret
org 100h
;;Баше
mov dl, 15+4 ;;Поместим в dl количество палочек
still: ;;Главный цикл
sub dl, 4
js fin
mov ax, 1*100h+'|' ;;Выведем символ палочки
mov cl, dl ;;с помощью цикла,
disp: ;;ровно cl раз
int 29h ;;вызвав прерывание 29h
loop disp
int 21h
sub al, '0' ;;Переводим ASCII-код в число
cmp dl, al ;;Забрали последнюю палочку - значит, победили
jne still
win:
int 29h ;;Выведем сердечко
fin:
ret
;;Однорукий бандит
push 0b800H ;;Обращаемся к видеопамяти
pop ds
le: ;;Вывод символа
inc bx
inc bx ;;Переместим курсор
inf: ;;Почти вечный цикл
int 1AH ;;Вызываем таймер
add dl, bl ;;Мешаем игроку победить, быстро нажимая клавишу "Вправо"
mov [bx], dl ;;Выводим текущий символ на экран
;;Обработчик клавиатуры
in al, 60H
cmp al, 77 ;;Нажата кнопка "Стрелка влево", переходим к следующему символу
jnz inf ;;Почти вечный цикл повторяется почти вечно
re: ;;Пора выводить следующий символ или останавливать бандита
cmp bx, 6
jnz le
ret ;;Конец программы
Три компьютерные игры (по 30 байт каждая)