;видеосегмент
pop es
push 0F000h;графический шрифт для символов 0-7Fh хранится по адресу F000:FA6Eh
pop gs
xor di,di ;левый верхний угол
mov bx,offset Hello ;адрес текстовой строки
next: movzx si,byte ptr [bx];получаем очередной символ из строки Hello
lea esi,[esi*8+0FA6Eh];умножаем индекс символа на 8 + адрес символа в шрифте
mov cx,8 ;8 байт на одну букву
@@: movs byte ptr es:[di],gs:[si]; вывод на экран
add di,WIDTH_SCREEN/8 - 1; сдвигаемся на следующую строку
loop @b
sub di,WIDTH_SCREEN - 1
inc bx
cmp byte ptr [bx],0 ;это последний символ?
jnz next
Копаюсь с выводом текстовой информации, используя битовые карты шрифтов.
Нашёл рабочий код, реализующий это, но не могу понять, почему строка
movs byte ptr es:[di],gs:[si]
помимо копирования байта информации ещё и сдвигает регистры si и di на единицу. Или регистры-индексы устроены таким образом? Заранее большое спасибо!
Можешь этот бинарник скинуть?
А? это с честью было подсмотрено тут https://studassistent.ru/assembler/bitovye-karty-shriftov-assembler
У меня МАСМа нет, интересно что там в бинарнике. (com-файле)
Необычная интерпретация: bx, text movzx si, b[bx] lea esi, [esi×8+0fa6e]
Обсуждают сегодня