Ошибка 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);
Объяснение кода листинга программы
В данном коде происходит следующее:
- Объявляется переменная
ptr
типаunsigned char far *
, то есть указатель на неподвижную точку памяти для чтения и записи 8-битных беззнаковых чисел в дальний сегмент. - Значение указателя
ptr
инициализируется с помощью функцииMK_FP(0xF000, 0xFFF5)
, которая преобразует два целых числа в указатель на байт в памяти. В данном случае,0xF000
представляет собой сегментный адрес памяти, а0xFFF5
— смещение внутри сегмента. Комбинация этих двух значений формирует физический адрес памяти, к которому будет указывать переменнаяptr
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д