- Указатель, ..., 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 для этого наверняка есть, на крайний случай — декомпилируйте программу).
|