Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2007, 10:53   #1
braun
 
Регистрация: 11.11.2007
Сообщений: 3
По умолчанию Вывод через Int 10h

Я не один раз прочитал кучу книг по assembler , но видать я тупой! Я хочу вывести строку на экран, но не через 21h, а через BIOS 10h. Так вот я не доганяю как мне указать строку ES:BP (фукнция 13h прерывания 10h). И как что-то записать по этому адресу!
braun вне форума Ответить с цитированием
Старый 11.11.2007, 11:16   #2
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Откопал немного информации, может поможет:
Код:
13H писать строку ▌AT▐  ◄EGA►  Выдает строку в позиции курсора. Символы 0dH
    (CarRet), 0aH (LineFeed), 08H (backspace) и 07H (Beep) трактуются как
    команды управления и не высвечиваются.
    Вход:   ES:BP => выводимая строка (спецформат для AL=2 и AL=3)
            CX = длина строки (подсчитываются только символы)
            DH,DL = строка,колонка начала вывода
            BH = номер страницы
            AL = код подфункции:
                 0 = использовать атрибут в BL; не трогать курсор
                 1 = использовать атрибут в BL; курсор - в конец строки
                 2 = формат строки: char,attr, char,attr...; не трогать курсор
                 3 = формат строки: char,attr, char,attr...; передвинуть курсор

▌AT▐ ...... обозначает IBM AT или совместимый; базируется на 80286 CPU

Последний раз редактировалось zetrix; 11.11.2007 в 11:18.
zetrix вне форума Ответить с цитированием
Старый 11.11.2007, 11:36   #3
braun
 
Регистрация: 11.11.2007
Сообщений: 3
По умолчанию

Цитата:
Сообщение от zetrix Посмотреть сообщение
Откопал немного информации, может поможет:
Код:
13H писать строку ▌AT▐  ◄EGA►  Выдает строку в позиции курсора. Символы 0dH
    (CarRet), 0aH (LineFeed), 08H (backspace) и 07H (Beep) трактуются как
    команды управления и не высвечиваются.
    Вход:   ES:BP => выводимая строка (спецформат для AL=2 и AL=3)
            CX = длина строки (подсчитываются только символы)
            DH,DL = строка,колонка начала вывода
            BH = номер страницы
            AL = код подфункции:
                 0 = использовать атрибут в BL; не трогать курсор
                 1 = использовать атрибут в BL; курсор - в конец строки
                 2 = формат строки: char,attr, char,attr...; не трогать курсор
                 3 = формат строки: char,attr, char,attr...; передвинуть курсор

▌AT▐ ...... обозначает IBM AT или совместимый; базируется на 80286 CPU
-------------------------------------------

"Вход: ES:BP => выводимая строка (спецформат для AL=2 и AL=3)" да есть у меня такое! я не понимаю, что такое ES:BP , как по этому адресу записать что-то. и потом как узазать по этой схеме на этот адрес! Может пример у кого есть?

Последний раз редактировалось braun; 11.11.2007 в 11:39.
braun вне форума Ответить с цитированием
Старый 11.11.2007, 16:01   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Код:
......
lea bp, stroka
mov al, 13
int 10h
пробуй
rpy3uH вне форума Ответить с цитированием
Старый 11.11.2007, 17:46   #5
Sergik1977
Пользователь
 
Регистрация: 18.10.2007
Сообщений: 12
По умолчанию

Тебе надо сделать кучу телодвижений
1. Зафиксировать курсор иначе он сбивает все что ты не нарисуешь!
2. Выставить видеорежим а то непонятно где ты там чего рисуешь.
3. Реши мне задачу по Паскалю с рекурсией в теме Паскаль))))
Программа ниже рисует кучу морд по всему экрану, прога с com-расширением:



Код:
.286 
CSEG segment
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
org 100h

Start:

Video_page db 0 ;

Pos_cursor dw ? ;

call Hide_cursor
call Check_video
	mov ax,0B800h
	mov es,ax
	mov di,0
	mov al,1
	mov ah,31
	mov cx,2000

Next_face:
	mov es:[di],ax
	add di,2
	loop Next_face
	mov ah,10h
	int 16h
	int 20h
Check_video proc
     mov ah,0Fh         
     int 10h
     cmp al,3            
     je Ok_video         
     mov ax,3          
     int 10h             
Ok_video:
     cmp bh,0            
     je Ok_page          
     mov ax,0500h        
     int 10h             
Ok_page:
     ret
Check_video endp
Hide_cursor proc
    mov ah,3                 
    mov bh,Video_page        
    int 10h                 
    mov Pos_cursor,dx        

    mov ah,2  
    mov bh,1  
    int 10h   

    mov bh,Video_page  
    mov dx,1900h       
    int 10h

    ret
Hide_cursor endp

CSEG ends
end start
Sergik1977 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
через какую сетевую карту входить в инет, а через какую в лан шКОЛЯР Свободное общение 2 27.06.2008 17:55
SSL через WinSock или через что? Jolyk Win Api 2 07.06.2008 17:37
вывод числа sergei64_89 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 25.05.2008 21:35
Вывод сортировки MaXiS Общие вопросы Delphi 5 19.05.2008 08:48
Вывод формул Влажимир Общие вопросы Delphi 7 10.03.2008 16:21