Вывод строки используя прямой доступ к видеопамяти - Assembler
Формулировка задачи:
CSEG segment org 100h begin: mov ax,dx mov es,ax mov al, 02h mov ah, 00h int 10h mov bp,offset string mov ax,1301h mov bx,1 mov cx,len mov dh,5; mov dl,5; int 10h mov ax, 0B800h mov es,ax mov di,0h mov cx,len mov si, 0 mov ah,01 ccc: mov al, [string] mov es:[di],ax add di,2 inc si loop ccc mov ax,4C00h int 21h string db 'Text' len=$-string CSEG ends end begin
Решение задачи: «Вывод строки используя прямой доступ к видеопамяти»
textual
Листинг программы
CSEG segment assume cs:CSEG, ds:CSEG ; <------- org 100h begin: mov ax,dx mov es,ax mov al, 02h mov ah, 00h int 10h mov bp,offset string mov ax,1301h mov bx,1 mov cx,len mov dh,5; mov dl,5; int 10h mov ax, 0B800h mov es,ax mov di,0h mov cx,len mov si, 0 mov ah,01 ccc: mov al, string[si] ; <----- mov es:[di],ax add di,2 inc si loop ccc int 20h ; <--- для *.com программ string db 'Text' len=$-string CSEG ends end begin
Объяснение кода листинга программы
Вывод строки Text
с использованием прямого доступа к видеопамяти:
- Переменная
ax
используется для хранения значения сегмента и индекса регистраdx
. - Переменная
es
получает значение сегментаax
. - Переменная
al
получает значение 02h. - Переменная
ah
получает значение 00h. - Выполняется команда
int 10h
, которая выводит символ на экран. - Переменная
bp
используется для хранения смещения строкиText
. - Переменная
ax
получает значение 1301h. - Переменная
bx
получает значение 1. - Переменная
cx
получает значениеlen
. - Переменные
dh
иdl
получают значение 5. - Выполняется команда
int 10h
, которая выводит символ на экран. - Переменная
ax
получает значение 0B800h. - Переменная
es
получает значениеax
. - Переменная
di
получает значение 0. - Переменная
cx
получает значениеlen
. - Переменная
si
получает значение 0. - Переменная
ah
получает значение 01. - Начинается цикл
ccc
. - В каждой итерации цикла значение переменной
al
получается из строкиText
по индексуsi
. - Значение
al
записывается в видеопамять по адресуdi
. - Значение
di
увеличивается на 2. - Значение
si
увеличивается на 1. - Цикл продолжается до тех пор, пока
si
меньшеlen
. - Выполняется команда
int 20h
, которая используется для завершения работы программы для *.com файлов. - Строка
Text
хранится в переменнойstring
. - Длина строки
Text
хранится в переменнойlen
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д