Другие языки программирования и технологии

Помогите написать небольшую программу на ассемблере (TASM). Подробности внутри.

Программа должна выводить на экран строку "1234567890" и менять цвет символов по нажатию на пробел. Фон экрана черный, изменяться не должен. Esc - выход из программы.

Я сам в ассемблере почти полный ноль, только начал изучать, простите)
TASM в MS-DOS. Выводит любую строку, которую введёт пользователь с клавиатуры. Цвет символов изменяется только в строке, выведенной программой. Остальные символы на экране цвет не меняют.

ideal
model small
p586

macro rdtsc
    db 0Fh, 31h
    endm

codeseg
    startupcode
    mov dx, offset Prompt
    mov ah, 9
    int 21h
    inc ah
    mov dx, offset Buff
    mov si, dx
    int 21h
    movzx bx, [si+1]
    mov [word si], 0A0Dh
    mov [byte bx+si+2], 24h
    dec ah
    int 21h
    mov dx, 0B800h
    mov es, dx
    push bx
    mov ah, 3
    xor bh, bh
    int 10h
    mov al, dh
    mov ah, 160
    mul ah
    mov di, ax
    inc di
    pop cx
ReadKey:
    mov ah, 8
    int 21h
    test al, al
    jnz TestKey
    int 21h
    jmp ReadKey
TestKey:
    cmp al, 1Bh
    je Quit
    cmp al, 20h
    jne ReadKey
    rdtsc
    mov ah, 15
    mul ah
    inc ah
    mov al, ah
    push cx
    push di
ChangeColor:
    stosb
    inc di
    loop ChangeColor
    pop di
    pop cx
    jmp ReadKey
Quit:
    exitcode

dataseg
  Prompt db "Введите строку: ", 13, 10, 36
  Buff db 80, ?,80 dup (?)

stack 200h

    end
Александр Кабанов
Александр Кабанов
51 590
Лучший ответ
ну так изучите ввод-вывод данных. за винду не скажу, а в досе можно только обращаясь напрямую к видеопамяти, но как это реально в эмуляции под виндой, хз, даже проверять н хочу
CQ
Cabir Qaniyev
50 117