ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
 
 
Опции темы Поиск в этой теме Опции просмотра

управление видеосистемой в текстовом режиме
  #1  
Старый 01.10.2009, 19:19
Аватар для NorB
NorB
Познающий
Регистрация: 20.07.2007
Сообщений: 99
Провел на форуме:
1562993

Репутация: 25
По умолчанию управление видеосистемой в текстовом режиме

Есть задание :
Вывод символа с клавиатуры на позицию экрана, указанную курсором, с модификацией положения курсора.

Есть код:
Код:
.model small   
.stack 100h      
.data
 x db 30
 y db 10 ;начальные координаты курсора
.code
.startup   
;очистка экрана
    mov ax, 0B800h;номер сегмента видеобуфера в АХ
    mov es, ax ;ассоциируем видеобуфер с EХ
    mov al, " ";символ
    mov ah, 00000111B;атрибут - белое на черном
    mov cx, 2000
    xor bx, bx ;ВХ=0 (указатель на символ)
;m:
 mov es:[bx], ax ;запись в видеобуфер символа и атрибута  
 add bx,2 ;увеличиваем указатель на следующий символ
 loop m      ;цикл очистки видеобуфера       


;вычисление абсолютного номера позиции курсора 
  mov al, 80
  mov bl, y
  mul bl      
  xor bx, bx
  mov bl, x 
  add ax, bx ;AX=80*y+x 
  mov bx, ax      ;адрес курсора в BX                     
  push bx
  add bx, bx ;bx=bx*2   
  mov cx, bx     ;адрес символа в СХ    
  pop bx
  
again:       ;начало ввода символов
  
 ;запись позиции курсора в КЭЛТ 
   mov al, 0eh   
   mov dx, 3d4h
   out dx,al ;выбрали 14 регистр КЭЛТ
   mov dx, 3d5h 
   mov al, bh
   out dx, al ;записали в него старший байт адреса курсора
   mov al, 0fh 
   mov dx, 3d4h
   out dx,al     ;выбрали 15 регистр КЭЛТ
   mov dx, 3d5h    
   mov al, bl  
   out dx, al   ;записали в него младший байт адреса курсора     
   
  ;запись позиции курсора в буфер BIOS
  mov ax, 40h
  mov es, ax ;es указывает на область данных BIOS
  mov ah, y
  mov al, x
  mov es:50h, ax ;запись положения курсора в буфер курсора BIOS             
  
  
  
  mov ax, 0B800h;номер сегмента видеобуфера в АХ
  mov es, ax ;ассоциируем видеобуфер с EХ             
  mov ah, 08h
  int 21h;ввод символа без эха        (в AL - код символа)               
  cmp al, 1Bh     ;не нажат ли ESC
  je go    
  cmp al, 20h
  jl again ;фильтруем небуквенные символы
  mov ah, 00000111B;атрибут - белое на черном                        
  push bx  
  mov bx, cx   
  mov es:[bx], ax   ;вывод символа                  
  pop bx
  add  cx, 2     ;смещаем на следующий символ указатель на символ в видеопамяти
  inc bx         ;увеличиваем номер позиции курсора
   
  jmp again;бесконечный цикл с выходом по ESC
             
 go:    
.exit 0
end
Че с ним нетак?=( я его транслирую линкую и программа просто висит а не работает
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват Gsm пакетов SNIFF Сотовый фрикинг 16 27.12.2009 22:25
Управление компом через Bluetooth m0le[x] Схемы и программы 2 08.11.2006 01:47
Microsoft рекомендует использовать Word в безопасном режиме DRON-ANARCHY Мировые новости 0 25.05.2006 22:59
Как «растянуть» аккумулятор novichok Сотовый фрикинг 4 28.02.2006 22:47
Удаленное управление АОН silveran Телефония и связь 3 10.09.2005 12:37



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ