Программа должна выводить на экран строку "1234567890" и менять цвет символов по нажатию на пробел. Фон экрана черный, изменяться не должен. Esc - выход из программы.
Я сам в ассемблере почти полный ноль, только начал изучать, простите)
Другие языки программирования и технологии
Помогите написать небольшую программу на ассемблере (TASM). Подробности внутри.
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
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
ну так изучите ввод-вывод данных. за винду не скажу, а в досе можно только обращаясь напрямую к видеопамяти, но как это реально в эмуляции под виндой, хз, даже проверять н хочу
Похожие вопросы
- Ассемблер. Написать маленькую программу вычисления арифметического выражения. Подробности внутри.
- Помогите написать небольшую программу на TurboPascal.
- помогите написать простые программы на Qbasic
- Помогите написать пару программ на СИ
- Написал небольшую программу, не могу понять почему не работает цикл while и оператор else
- Помогите написать текст программы на С++
- Помогите написать правильно программу в С, мой вариант не работает
- Помогите написать простые программы и задачи в Pascal ABC. Алгоритмы ветвления. Информатика. Програмирование.
- Помогите написать текст программы.
- Задание_Кто соображает в программировании на паскале? Надо написать небольшую программу, а я в предмете плохо понимаю))