The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]



"Указатель, ..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (C/C++)
Изначальное сообщение [ Отслеживать ]

"Указатель, ..."  +/
Сообщение от redd email on 14-Апр-18, 12:37 
char far *vidmem = (char far *) 0x0B800; // Начальный адрес нулевой страницы видео буфера.

Никак не понимаю,

1. как дать смещение указателю допустим 10
2. как записать в ячейку памяти на которую будет указывать указатель после смещения, допустим 67h ???


Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Указатель, ..."  +/
Сообщение от fail_ on 14-Апр-18, 13:17 
> char far *vidmem = (char far *) 0x0B800; // Начальный адрес нулевой
> страницы видео буфера.
> Никак не понимаю,
> 1. как дать смещение указателю допустим 10
> 2. как записать в ячейку памяти на которую будет указывать указатель после
> смещения, допустим 67h ???

xoxottabych via https://www.youtube.com/results?search_query=ghjuhfvvbhjdfybt+c

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "Указатель, ..."  +/
Сообщение от redd email on 14-Апр-18, 14:44 
Ну тож правильно,
Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "Указатель, ..."  +1 +/
Сообщение от Unreal Grammar Nazi on 15-Апр-18, 17:12 
> char far *vidmem = (char far *) 0x0B800; // Начальный адрес нулевой
> страницы видео буфера.
> Никак не понимаю,
> 1. как дать смещение указателю допустим 10
> 2. как записать в ячейку памяти на которую будет указывать указатель после
> смещения, допустим 67h ???

vidmem[10] = 0x67;

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Указатель, ..."  +/
Сообщение от redd email on 16-Апр-18, 05:31 
>> char far *vidmem = (char far *) 0x0B800; // Начальный адрес нулевой
>> страницы видео буфера.
>> Никак не понимаю,
>> 1. как дать смещение указателю допустим 10
>> 2. как записать в ячейку памяти на которую будет указывать указатель после
>> смещения, допустим 67h ???
> vidmem[10] = 0x67;

Ок , по синтаксису обращение как к массиву ...


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "Указатель, ..."  +/
Сообщение от redd email on 16-Апр-18, 06:03 
char far *vidmem = (char far *) 0x0B800;
void main()
{
vidmem[10] = 0x67;
}

Вроде правильно, и компилятор ошибок не выдаёт, но символ на экране не появляется ...
Может адрес неверный или неверно записан ? 0x0B800 ???

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

7. "Указатель, ..."  +/
Сообщение от redd email on 16-Апр-18, 06:23 
КАк правильно адрес присвоить указателю ?
адрес 0x0B800 ...
Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

8. "Указатель, ..."  +/
Сообщение от redd email on 16-Апр-18, 06:37 
>> char far *vidmem = (char far *) 0x0B800; // Начальный адрес нулевой
>> страницы видео буфера.
>> Никак не понимаю,
>> 1. как дать смещение указателю допустим 10
>> 2. как записать в ячейку памяти на которую будет указывать указатель после
>> смещения, допустим 67h ???
> vidmem[10] = 0x67;

У меня не работает, Turbo C ver 3.2 Dos

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

6. "Указатель, ..."  +/
Сообщение от redd email on 16-Апр-18, 06:10 
Хотя адрес вроде верный, на asm этот адрес работает, только записан по другому 0B800h вот так, но компилятор
такую запись не понимает ...
Вот кусок рабочий:
                mov ax,0B800h
           mov es,ax
    //       pop es
       //  jmp CharAddr
        //    mov di,2100;
        mov es:[di],dx

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

9. "Указатель, ..."  +/
Сообщение от PereresusNeVlezaetBuggy (ok) on 18-Апр-18, 15:44 
>[оверквотинг удален]
> другому 0B800h вот так, но компилятор
> такую запись не понимает ...
> Вот кусок рабочий:
>            
>     mov ax,0B800h
>      mov es,ax
>  //    pop es
>     //  jmp CharAddr
>      // mov di,2100;
>   mov es:[di],dx

А у вас точно плоская модель памяти? Помнится, в DOS это было не совсем так, и разные сегменты (CS, DS, ES...) начинались с разных адресов. В asm-коде у вас ES, а сишный код, скорее всего, генерирует обращение к DS — проверьте ассемблерный листинг программы (какой-то ключ у компилятора Turbo C для этого наверняка есть, на крайний случай — декомпилируйте программу).

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема


  Закладки на сайте
  Проследить за страницей
Created 1996-2018 by Maxim Chirkov  
ДобавитьПоддержатьВебмастеруГИД  
Hosting by Ihor