Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler
Регистрация

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

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

Откопал немного информации, может поможет:
Код:

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 в 12:18.
zetrix вне форума   Ответить с цитированием
Старый 11.11.2007, 12:36   #3
braun
 
Регистрация: 11.11.2007
Сообщений: 3
Репутация: 10
По умолчанию

Цитата:
Сообщение от 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 в 12:39.
braun вне форума   Ответить с цитированием
Старый 11.11.2007, 17:01   #4
rpy3uH
добрый няша
СуперМодератор
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Адрес: Солнечное Тбилиси
Сообщений: 4,806
Репутация: 2006
По умолчанию

Код:

......
lea bp, stroka
mov al, 13
int 10h

пробуй
rpy3uH вне форума   Ответить с цитированием
Старый 11.11.2007, 18:46   #5
Sergik1977
Пользователь
 
Регистрация: 18.10.2007
Сообщений: 12
Репутация: 10
По умолчанию

Тебе надо сделать кучу телодвижений
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 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

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

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


20:01.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru