Вывод строки циклом - Assembler
Формулировка задачи:
Как организовать самый простой цикл для вывода всей строки в цвете (чтоб такому барану как я было понятно) в TASM ? Заранее спасибо.
Листинг программы
- ; вывод цветного текста
- .model tiny
- .code
- org 100h
- start:
- MOV AH,09 ;Функция вывода
- MOV dx,m ;Выводимый символ
- MOV BH,0 ;Номер страницы (текст.реж.)
- MOV BL,14 ;Атрибут или цвет
- MOV CX,20 ;Число повторений символа
- INT 10H ;Вызвать BIOS
- ret
- m db 'Hello, world!!!, $'
- end start
Решение задачи: «Вывод строки циклом»
textual
Листинг программы
- model tiny
- .code
- org 100h
- start: mov ax,600h
- mov bh,100
- mov cx,0
- mov dx,184fh
- int 10h
- mov ah,9
- lea dx,dbOut
- int 21h
- ret
- dbOut db 10,13,'string$'
- end start
Объяснение кода листинга программы
- Установка сегмента данных (DX) в значение 184FH.
- Вывод строки на экран с помощью функции BIOS вывода в сегмент 100H.
- Установка регистра AX в значение 600H.
- Установка регистра BH в значение 100.
- Установка регистра CX в значение 0.
- Передача управления регистру DX с помощью команды INT 10H.
- Установка регистра AH в значение 9.
- Установка регистра DX на адрес строки DBOUT с помощью команды LEA.
- Вывод строки на экран с помощью функции BIOS вывода в сегмент 21H.
- Команда RET для завершения работы программы.
- Строка DBOUT содержит символы 10, 13 и 'string$'.
- Значение 100H используется как сегмент для вывода строки.
- Значение 600H используется как значение регистра AX.
- Значение 100 используется как значение регистра BH.
- Значение 0 используется как значение регистра CX.
- Значение 184FH используется как значение регистра DX.
- Значение 10 используется как сегмент для вывода строки.
- Значение 21H используется как сегмент для вывода строки.
- Значение 9 используется как значение регистра AH.
- Значение 100 используется как сегмент для вывода строки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д