Ввести текст, закрасить слова синим цветом, и вывести длину каждого слова - Assembler

Узнай цену своей работы

Формулировка задачи:

Собственно дано задание: ввести текст (буду считывать в буфер через DOS ф-ию 0ah). Нужно слова закрасить синим цветом (bios функция. Скорее всего это
INT 10h, АН = 08k. Считать символ и атрибут символа в текущей позиции курсора Вход: AH = 08h ВН = номер страницы Выход: АН = атрибут символа AL = ASCII-код символа
и вывести длину каждого слова. Со 2 всё понятно. А вот с закрашиванием я не могу разобраться.

Решение задачи: «Ввести текст, закрасить слова синим цветом, и вывести длину каждого слова»

textual
Листинг программы
.model tiny
.code
.386
ORG 100h
START:
    mov ah,10
    lea dx,buf
    int 21h
 
    mov si,dx
    add si,2    ;на введенную строку
 
    mov ah,3    ;получить положение курсора
    xor bh,bh   ;видеостраница
    int 10h
 
    mov bl,9    ;цвет
    mov cx,1    ;один символ
m1:
    lodsb       ;читать символ
    cmp al,13   ;конец строки?
    jz short m2
    mov ah,9    ;вывод символа в положение курсора
    int 10h
 
    mov ah,2    ;сменить положение курсора
    inc dl      ;курсор на следующий символ
    int 10h
    jmp short m1
m2:
    xor ax,ax   ;pause
    int 16h
 
    mov ax,3    ;востановить параметры экрана
    int 10h
 
    ret     ;завершить программу
 
buf db 80 ;одна строка
 
end start

Оцени полезность:

7   голосов , оценка 4.143 из 5
Похожие ответы