Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > С/С++
Перезагрузить страницу Прямая запись в 0xb800 как реализовать
Закрытая тема
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию Прямая запись в 0xb800 как реализовать - 13.09.2003, 14:15

Подскажите, как буковки писать в 80x25x16,
а то у меня через 09h и 0ah не получается...
  (#2 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию Прямая запись в 0xb800 как реализовать - 13.09.2003, 14:15

Подскажите, как буковки писать в 80x25x16,
а то у меня через 09h и 0ah не получается...
  (#3 (permalink)) Старый
depressman depressman вне форума
Member
 
Сообщений: 112
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.11.2002
По умолчанию 13.09.2003, 23:46

Вообще то говоря имхо эта тема ближе к асму, но на си так на си .
Судя по теме ты хочешь писать в видеопамять это можно сделать например так:
Код:
char str[8] = {'t',1,'e',1,'s',1,'t',1};

int main(){
    asm{
        mov ax,0x0002
        int 0x10

        mov ax,0xB800
        mov es,ax
        xor di,di
        lea si,str
        mov cx,8
        rep movsb
    }

    return 0;
}
Хотя если ты все таки хочешь юзать функции доса или биоса - напиши как ты это делаешь может подправим
  (#4 (permalink)) Старый
depressman depressman вне форума
Member
 
Сообщений: 112
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.11.2002
По умолчанию 13.09.2003, 23:46

Вообще то говоря имхо эта тема ближе к асму, но на си так на си .
Судя по теме ты хочешь писать в видеопамять это можно сделать например так:
Код:
char str[8] = {'t',1,'e',1,'s',1,'t',1};

int main(){
    asm{
        mov ax,0x0002
        int 0x10

        mov ax,0xB800
        mov es,ax
        xor di,di
        lea si,str
        mov cx,8
        rep movsb
    }

    return 0;
}
Хотя если ты все таки хочешь юзать функции доса или биоса - напиши как ты это делаешь может подправим
  (#5 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 14.09.2003, 12:27

А через char far *vram=(char far *)0xb8000000L;
можно как-нибудь? - по аналогии с 320x200x256 через 0xa0000000L
Ads.
  (#6 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 14.09.2003, 12:27

А через char far *vram=(char far *)0xb8000000L;
можно как-нибудь? - по аналогии с 320x200x256 через 0xa0000000L
  (#7 (permalink)) Старый
depressman depressman вне форума
Member
 
Сообщений: 112
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.11.2002
По умолчанию 14.09.2003, 23:38

Естественно можно
Например так
Код:
#include <mem.h>

char str[8] = {'t',1,'e',1,'s',1,'t',1};
char far *vram=(char far *)0xb8000000L;
int main(){
    _fmemcpy(vram,str,8);
    return 0;
}
  (#8 (permalink)) Старый
depressman depressman вне форума
Member
 
Сообщений: 112
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.11.2002
По умолчанию 14.09.2003, 23:38

Естественно можно
Например так
Код:
#include <mem.h>

char str[8] = {'t',1,'e',1,'s',1,'t',1};
char far *vram=(char far *)0xb8000000L;
int main(){
    _fmemcpy(vram,str,8);
    return 0;
}
  (#9 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 15.09.2003, 19:52

Ага, спасибо, но вот еще вопрос - укажите на ошибку в примере:
int GetXCursor(){
int x=0;
asm{
mov ah, 03h
mov bh, 0
int 10h
mov x, dl
}
return x;
}
здесь для получения x-положения курсора
  (#10 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 15.09.2003, 19:52

Ага, спасибо, но вот еще вопрос - укажите на ошибку в примере:
int GetXCursor(){
int x=0;
asm{
mov ah, 03h
mov bh, 0
int 10h
mov x, dl
}
return x;
}
здесь для получения x-положения курсора
  (#11 (permalink)) Старый
depressman depressman вне форума
Member
 
Сообщений: 112
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.11.2002
По умолчанию 16.09.2003, 00:40

Ну первое что бросается в глаза это mov x,dl. x - int (2 байта) dl - 1 байт. Самое простое решение - юзай вместо инта unsigned char.
  (#12 (permalink)) Старый
depressman depressman вне форума
Member
 
Сообщений: 112
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.11.2002
По умолчанию 16.09.2003, 00:40

Ну первое что бросается в глаза это mov x,dl. x - int (2 байта) dl - 1 байт. Самое простое решение - юзай вместо инта unsigned char.
Ads
  (#13 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 16.09.2003, 17:32

А где можно достать табличку/список,
где описаны все 256 атрибутов цвета?
  (#14 (permalink)) Старый
Anonymous
Guest
 
Сообщений: n/a
По умолчанию 16.09.2003, 17:32

А где можно достать табличку/список,
где описаны все 256 атрибутов цвета?
  (#15 (permalink)) Старый
depressman depressman вне форума
Member
 
Сообщений: 112
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 30.11.2002
По умолчанию 16.09.2003, 21:07

Из Зубкова "Ассемблер для DOS, Windows и Unix"
Цитата:
Атрибут символа:
Бит 7: символ мигает (по умолчанию) или фон яркого цвета (если его действие было переопределено видеофункцией 10h).
Биты 6 – 4: цвет фона.
Бит 3: символ яркого цвета (по умолчанию) или фон мигает (если его действие было переопределено видеофункцией 11h).
Биты 2 – 0: цвет символа.
Цвета кодируются в битах, как показано в таблице 18.
Таблица 18. Атрибуты символов
Обычный цвет | Яркий цвет
000b черный | темно-серый
001b синий | светло-синий
010b зеленый | светло-зеленый
011b голубой | светло-голубой
100b красный | светло-красный
101b пурпурный | светло-пурпурный
110b коричневый | желтый
111b светло-серый | белый
ЗЫ Хотя это по-моему можно найти где угодно - в любом поисковике
Закрытая тема

Опции темы
Опции просмотра

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись с DVD Gredjeff Любые вопросы от новичков 4 26.10.2010 21:28
Прямая сеть и её проблемы fakep Сетевые подключения 1 06.11.2009 15:50
Как реализовать запись в файл GT150 С/С++ 2 14.04.2008 19:06
Запись Kurdt Pascal 5 28.09.2007 17:28
Прямая под углом можно ли реализовать Iv@nich C++ Builder 2 29.08.2007 21:46
запись Матрикс Разное 1 23.04.2007 17:06
Прямая и обратная цепочка вывода Clarissa Prolog 4 29.01.2007 18:39
Запись в файл как реализовать Holand DHTML, JavaScript, VBScript 12 21.10.2006 15:31
Запись в DOS из CMOS как реализовать mk Assembler 0 06.04.2006 15:20
Не работает прямая адресация в структуре Никитыч Visual C++ 6 11.03.2006 09:23
Как открыть поток на чтение и запись, причем запись в конец файла Borro С/С++ 6 16.03.2005 14:47
Как лучше реализовать запись в файл Gold_Dreamer Delphi 5 05.03.2004 23:17



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов