Ошибка cannot convert - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Всем добрый день. Такое вот задание было:Вывести Объем HDD, дату издания Bios и количество интерф. принтеров. Все это из под DOS. Использовал Dos Box
#include <stdio.h> 
#include <dos.h> 
#include <bios.h> 
#include <conio.h>
 
int main(void) 
{ 
int i, status; 
printf("\nVolume of memory %d kB\n", biosmemory()); 
unsigned char far *ptr = MK_FP(0xF000, 0xFFF5); 
printf("Date of building BIOS "); 
for (i = 0; i <= 7; i++) printf("%c", *(ptr + i)); 
status = biosequip(); 
printf("\nCount of printer’s ports %i\n", status&3);
getch(); 
return 0; 
}
И вывел ошибку,показано на скрине Не со всем понял почему не работает.

Решение задачи: «Ошибка cannot convert»

textual
Листинг программы
unsigned char far *ptr = (unsigned char far *) MK_FP(0xF000, 0xFFF5);

Объяснение кода листинга программы

В данном коде происходит следующее:

  1. Объявляется переменная ptr типа unsigned char far *, то есть указатель на неподвижную точку памяти для чтения и записи 8-битных беззнаковых чисел в дальний сегмент.
  2. Значение указателя ptr инициализируется с помощью функции MK_FP(0xF000, 0xFFF5), которая преобразует два целых числа в указатель на байт в памяти. В данном случае, 0xF000 представляет собой сегментный адрес памяти, а 0xFFF5 — смещение внутри сегмента. Комбинация этих двух значений формирует физический адрес памяти, к которому будет указывать переменная ptr.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.333 из 5