The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Указатель, ..., !*! redd, 14-Апр-18, 12:37  [смотреть все]
char far *vidmem = (char far *) 0x0B800; // Начальный адрес нулевой страницы видео буфера.

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

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


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

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

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

    vidmem[10] = 0x67;

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

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


    • Указатель, ..., !*! redd, 06:03 , 16-Апр-18 (5)
      char far *vidmem = (char far *) 0x0B800;
      void main()
      {
      vidmem[10] = 0x67;
      }

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

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

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

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

    • Указатель, ..., !*! PereresusNeVlezaetBuggy, 15:44 , 18-Апр-18 (9)
      >[оверквотинг удален]
      > другому 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 для этого наверняка есть, на крайний случай — декомпилируйте программу).




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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