bggg movsb копирует строку DS:SI-->ESI т.е потом ее надо будет каким-то образом "забирать" daже если ES=DS. Зачем может понадобиться такой хитрый ход ?
bggg Code (Text): hw db 'hello, world!', 0 ... mov ax, 0xb800 mov es, ax mov si, offset hw xor di, di __1: lodsb or al, al jz __2 stosb inc di jmp short __1 __2:
Code (Text): mov ax,0b800h mov es,ax mov si,offset string mov di, смещение в видеопамяти mov cx, длина строки cld rep movsb В этом случае строка должна иметь вид: символ, атрибут, символ, атрибут,......... string db 'H',7,'e',7,'l',7,........
Атрибут символа. Работает так: Code (Text): 01111010b irgbIRGB │││││││└─ Синяя компонента цвета символа ││││││└── Зелёная компонента цвета символа │││││└─── Красная компонента цвета символа ││││└──── Бит яркости символа │││└───── Синяя компонента цвета фона ││└────── Зелёная компонента цвета фона │└─────── Красная компонента цвета фона └──────── Бит яркости фона, либо флаг мигания символа (зависит от настройки видеокарты) Таким образом в примере - тёмно-белый фон и ярко-зелёный символ ЗЫ Тёмно-белый светлее светло-чёрного ;-) Смещение в видеопамяти рассчитывается из того, что её структура такова, что за байтом символа следует байт его атрибута и так далее. Причём нулевому смещению соответствует левый верхний угол экрана, смещение растёт по строкам: Code (Text): ------------ |--------->| |--------->| |--------->| |--------->| ------------ Стандартный атрибут в консоли - 07, то есть тёмно-белый текст на чёрном фоне.