![]() |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
![]() ![]() |
![]() |
Sviter |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 2 Пол: Мужской Репутация: ![]() ![]() ![]() |
Народ, помогите пожалуйста с задачкой:
Используя прямое обращение к видеопамяти, реализовать вывод информации в заданное место экрана (аналог GotoXY с последующим write). Заранее спасибо ![]() |
xds |
![]()
Сообщение
#2
|
![]() N337 ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 737 Пол: Мужской Репутация: ![]() ![]() ![]() |
Вот возможный вариант с поддержкой 40 и 80 символов в строке, цветных и монохромного режима.
program VBuf;
procedure OutText(const s: String; x, y, Attr: Integer); assembler;
asm
xor ax,ax
mov es,ax
mov ax,80
cmp byte ptr es:[44Ah],40
je @@1
shl ax,1
@@1:
mul y
add ax,x
add ax,x
mov di,ax
mov ax,0B000h
cmp byte ptr es:[449h],7
je @@2
mov ax,0B800h
@@2:
mov es,ax
push ds
lds si,s
cld
xor cx,cx
mov cl,[si]
inc si
mov ah,byte ptr Attr
@@3:
lodsb
stosw
loop @@3
pop ds
end
begin
OutText(' * Hello, World! * ', 30, 12, $1E);
end.
-------------------- The idiots are winning.
|
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 18:11 |