IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
Closed Topic Открыть новую тему 
> Видеопамять, вывод информации в заданное место экрана
Sviter
сообщение 6.12.2006 20:25
Сообщение #1





Группа: Пользователи
Сообщений: 2
Пол: Мужской

Репутация: -  0  +


Народ, помогите пожалуйста с задачкой:
Используя прямое обращение к видеопамяти, реализовать вывод информации в заданное место экрана (аналог GotoXY с последующим write).
Заранее спасибо smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 7.12.2006 7:53
Сообщение #2


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


Вот возможный вариант с поддержкой 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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Closed Topic Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия 26.07.2025 18:11
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"