как реализовать новую линию - PullRequest
0 голосов
/ 08 мая 2011

Я работаю в текстовом режиме 80x25 и ожидаю, что для печати будет выведена строка символов, оканчивающаяся на 0 (без CRLF).как я могу перейти к следующей строке?Что мне действительно нужно, так это выравнивание смещения es: edi (0: b8000) по следующему множителю 160, но я понятия не имею, как сделать это как-нибудь умно.если вы уже сделали это или у вас есть идеи, пожалуйста, поделитесь ими со мной или намекните.я не хочу никаких прерываний и решения без разделения предпочтительнее.спасибо

Ответы [ 2 ]

0 голосов
/ 08 мая 2011

Как насчет switch -подобной конструкции? Если вас интересуют только 160-символьные чанки на экране 80x25, нужно учитывать только тринадцать случаев, и это должна быть управляемая (и воспроизводимая) последовательность CMP и условные переходы.

0 голосов
/ 08 мая 2011

Как сказал Андерс, я бы сделал что-то вроде:

nextlineoffset = offset + (160 - ((offset + 160) mod 160))

То есть

  1. Добавить строку в смещение
  2. Вычесть дополнительное смещение

Он использует одно деление, но устраняет необходимость умножения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...