Операционная система

Операционная система

Подписчиков: 19     Сообщений: 690     Рейтинг постов: 14,982.8

gupman Pixel Gif Pixel Art Windows Операционная система 

Развернуть

Windows Операционная система реклама песочница 

VDSina.ru - хостинг серверов в России и в Европе Рекламная запись Антикризисный сервер с У/Ыоу^ - для удаленной работы. Ваш бизнес доступен всегда из любой точки земли! https://vdsina.m/cloud-servers?mt=9f9fca66e99dc309b5.. О? 54 ¿£>10,Windows,Операционная система,реклама,рекламные фото
Развернуть
Комментарии 3 25.05.202019:10 ссылка -7.9

пасьянс Windows Операционная система 

Пасьянсу из Windows исполнилось 30 лет. Ежемесячно в него играют 35 миллионов человек

Сегодня 30-й день рождения празднует Solitaire от Microsoft. В простонародье пасьянс «Косынка», он дебютировал в составе операционной системы Microsoft в 1990 году в версии Windows 3.0. Тогда его позиционировали в качестве «средства для успокоения напуганных новой системой пользователей-новичков» и обучающей программы по использованию мыши.

По данным Microsoft, каждый месяц около 35 млн человек все еще играет в Solitaire. Страшно представить, сколько миллиардов (или порядок цифр преувеличен?) часов было потрачено на раскладывание виртуальных карт бухгалтерами и прочими офисными работниками. Игра является, наверное, одной из самых популярных в мире, поставляется с каждой версией Windows. А это значит, что она была установлена на более чем миллиарде компьютеров и переведена на 65 языков мира.

Одно время ее выбросили из состава Windows 8, но потом вернули в 2015 году с выходом Windows 10.
пасьянс,Windows,Операционная система
Развернуть

пидоры помогите Windows 10 Windows Операционная система лицензия песочница 

требуется помощь Господ-Пидоров!

После долгих лет пиратства на 7-й винде и после нескольких лет на 10ке всерьез задумался о покупке лицензионного ключа на 10-ку, так вот возник вопрос: ключ привязывается к железу или к аккаунту, и смогу ли я например после обновления комплектующих или полной замены компа использовать данную лицензию или придется заново покупать? вот и все что хотелось бы узнать у знающих в этом деле пидоров. Заранее Спасибо!
КУПОН
НА 1 помощь,пидоры помогите,реактор помоги,Windows 10,Windows,Операционная система,лицензия,песочница
Развернуть

wine Linux Операционная система приколы для образованных даунов со знанием английского GForce intel 

Заманчиво...

§ LUMBERYARD v X		
A	It appears you have a more powerful Intel(R) UHD Graphics 630 (CFL GT2) GPU than the current default GeForce RTX 2080 GPU set for this application, would you like to use the suggested GPU instead?	
		| Yes | No,wine,Linux,Операционная система,приколы для образованных даунов
Развернуть

Windows 10 Windows Операционная система 

Windows 10,Windows,Операционная система
Развернуть

пидоры помогите Игры Linux Операционная система 

Досточтимые пидары и пидарыни!

ЦЕННОЙ БУМАГИ НА ОДНО СОЦИАЛЬНОЕ ПРОДУКТИВНОЕ ВЗАИМОДЕЙСТВИЕ
ПРЕДСТАВиТЕЛи НЕТРддиционной,пидоры помогите,реактор помоги,Игры,Linux,Операционная система



В общем, я на этой сратой самоизоляции заебалась уже читать и смотреть аниме. Подскажите во что поиграть на линуксах сейчас можно? Подруга подсадила на Portal2, понравилось, но одиночную игру я уже прошла. Раньше я играми не увлекалась особо, кто есть ху не знаю, потому и прошу помощи.
Предпочтений особых нет, разве что точно не хочу играть во всякие контры и колды. Когда-то давно гоняла в NFS и летала во второй Homeworld, больше ничего не зацепило. А, ну и денди, конечно)

Накидайте линуксовых игорей, плиз ^_^
ЗЫ: нет, ставить вайн и играть в виндовые я не хочу

Развернуть

Windows Операционная система like music песочница 

WINDOWS LIKE MUSIC
V,Windows,Операционная система,like,Музыка,песочница
Развернуть

программирование geek OSDev Операционная система разработка ассемблер длиннопост песочница 

Урок ОСдева №6: минидрайвер флоппи-привода.

В предыдущем посте мы вычислили значения, нужные для работы с FAT12. Пора писать драйвер!

Начнём с постановки задачи. Что должен уметь драйвер FAT12 для первичного загрузчика?

Очень просто: загружать файлы. Больше ничего.


Для этого мы будем использовать прерывание BIOS. Кстати, про прерывания мы ещё не

говорили. Пока давайте считать, что это функции, предоставляемые для нашего удобства

BIOS. Подробно об этом говорить будем позднее, так как тема очень большая. Кроме того,

позже мы напишем полноценный драйвер, который будет работать с флоппи-приводом напрямую,

без посредства BIOS. Сделать это прямо сейчас мы не можем из-за ограничения по размеру

программы: первичный загрузчик должен занимать не больше 512 байт - полновесный драйвер

флоппи-привода в такой объём не влезет.


Прерывания вызываются командой int, после которой идёт номер. Стандартное

прерывание BIOS для работы с дисками - 13h. Соответственно, команда выглядит так: int 13h.

Как правило прерывания требуют передачи параметров через определённые регистры. Так,

int 13h нужен номер функции в AH. Прерывание 13h - это целый набор функций для работы

с различными видами съёмных и постоянных носителей. Нас интересует функция 2, чтение

секторов с диска. Она в свою очередь требует указать количество считываемых секторов в AL,

номер цилиндра в CH, номер начального сектора в CL, головку в DH, привод в DL и адрес

в памяти, куда будут считаны данные, в ES:BX.


Итак, ещё раз: в нашем случае int 13h вызывается со следующими параметрами:

AH = 2 (номер функции)

AL = число секторов

CH = номер цилиндра

CL = номер начального сектора

DH = номер головки

DL = 0 (номер привода)

ES:BX = сегмент:смещение области для загрузки


Прерывание int 13h у нас будет вызываться в процедуре read_sectors. Этой последней нужно

будет передать три параметра: LBA в AX, число секторов в CX и адрес для загрузки в ES:BX.

Что такое LBA мы уже знаем: это более современная линейная схема адресации секторов. К сожалению,

прерывание 13h работает с устаревшим форматом CHS, так что придётся делать конверсию

внутри процедуры.


Кстати, стоит сразу остановиться на том, как оформляются и что представляют собой процедуры

в TASM. В коде процедура выглядит так:


(имя процедуры) proc

     (тело процедуры)

(имя процедуры) endp


Обе эти инструкции нужны только компилятору и в исполняемый файл не попадают. В случае

"плоского" бинарного файла процедура окажется именно там, где она расположена в тексте

программы - никакой отдельной области памяти для неё создаваться не будет. Процедура

вызывается инструкцией call (имя процедуры). Предварительно, конечно, надо поместить

нужные параметры в нужные регистры.


Теперь немного о внутреннем устройстве FAT12. Для того, чтобы загрузить файл в память,

нам нужно проделать следующие вещи:


1. Загрузить в память Корневую Директорию диска.

2. Найти в КД запись, соответствующую файлу.

3. Считать из записи номер первого кластера файла в FAT.

4. Загрузить в память FAT.

5. Загрузить в память цепочку кластеров, которую занимает файл.


В этот раз мы ограничимся только первым пунктом, всё остальное будет в финальной статье

про первичный загрузчик. Давайте вспомним, как выглядела программа в конце прошлого поста:


.386p

CSEG segment use16

ASSUME cs:CSEG, ds:CSEG, es:CSEG, fs:CSEG, gs:CSEG, ss:CSEG

begin:                              jmp short execute;Точка входа. Перейти к исполняемой части.

                                       nop;Пустой оператор. Заполняет 3-й байт перед BPB.




;БЛОК ПАРАМЕТРОВ BIOS==========================================================;


     ;=======================================;

     ;Блок параметров BIOS, 33 байта.                                         ;

     ;Здесь хранятся характеристики                                            ;

     ;носителя. Должен быть в 3 байтах                                       ;

     ;от начала загрузочного сектора.                                          ;

     ;=======================================;

     BPB_OEMnamedb 'BOOTDISK';0-7. Имя производителя. Может быть любым.

     BPB_bytespersecdw 512;8-9. Размер сектора в байтаx.

     BPB_secperclustdb 1;10. Количество секторов в кластере.

     BPB_reserveddw 1;11-12. Число зарезервированныx секторов (1, загрузочный).

     BPB_numFATsdb 2;13. Число FAT.

     BPB_RDentriesdw 224;14-15. Число записей Корневой Директории.

     BPB_sectotaldw 2880;16-17. Всего секторов на носителе.

     BPB_mediatypedb 0F0h;18. Тип носителя. 0F0 - 3,5-дюймовая дискета с 18 секторами в дорожке.

     BPB_FATsizedw 9;19-20. Размер FAT в сектораx.

     BPB_secpertrackdw 18;21-22. Число секторов в дорожке.

     BPB_numheadsdw 2;23-24. Число головок (поверxностей).

     BPB_hiddensecdd 0;25-28. Число скрытыx секторов перед загрузочным.

     BPB_sectotal32dd 0;29-32. Число секторов, если иx больше 65535.


     ;===============================================;

     ;Расширенный блок параметров BIOS, 26 байт.                                         ;

     ;Этот раздел используется в DOS 4.0.                                                       ;

     ;===============================================;

     EBPB_drivenumdb 0;0. Номер привода.

     EBPB_NTflagsdb 0;1. Флаги в Windows NT. Бит 0 - флаг необxодимости проверки диска. Бит 1 - флаг необходимости диагностики             поверхности.

     EBPB_extsigndb 29h;2. Признак расшренного BPB по версии DOS 4.0.

     EBPB_volIDdd 0;3-6. "Серийный номер". Любое случайное число или ноль, без разницы.

     EBPB_vollabeldb 'BOOTLOADER ';7-17. Название диска. Устарело.

     EBPB_filesysdb 'FAT12   ';18-25. Имя файловой системы.




;ИСПОЛНЯЕМЫЙ БЛОК===============================================================;


;Шаг 1. Исправить значения сегментных регистров.

execute:

                    ;DS, ES, FS, GS.

                              mov ax,07C0h;Сегмент загрузчика.

                              mov ds,ax;Поместить это значение во все сегментные регистры.

                              mov es,ax

                              mov fs,ax

                              mov gs,ax


                    ;СЕГМЕНТ СТЕКА.

                              cli;Запретить прерывания перед переносом стека.

                              mov ss,ax;Поместить в SS адрес сегмента загрузчика.

                              mov sp,0FFFFh;Указатель стека - на конец сегмента.

                              sti;Разрешить прерывания.


                    ;СЕГМЕНТ КОДА.

                              push ax;Поместить в стек сегмент.

                              mov ax,offset jump;Указатель на инструкцию после retf.

                              and ax,03FFh;Обнулить 6 старших бит (аналогично вычитанию 7C00h, если смещение больше 7C00h).

                              push ax;Поместить в стек смещение.

                              retf;Дальний возврат для смены CS.


jump:                     mov byte ptr EBPB_drivenum,dl;BIOS должен вернуть номер загрузочного устройства в DL. Сохранить его в BPB.


                             mov ax,BPB_RDentries;Число записей КД

                             shl ax,5;*32 (размер записи в байтах) = размер КД в байтах.

                             div BPB_bytespersec;AX/размер сектора в байтах = размер КД в секторах.

                             mov cx,ax;Поместить его в CX (будет счетчиком для загрузки КД).

                             xor ax,ax;Обнулить AX.

                             mov al,byte ptr BPB_numFATs;Число FAT

                             mul BPB_FATsize;*размер FAT в секторах = общий размер всех FAT в секторах.

                             mov total_FATs_size,ax;Сохранить результат в переменной.

                             add ax,BPB_reserved;AX+число зарезервированных секторов = стартовый сектор КД.

                             mov datasector,ax;Стартовый сектор КД + размер КД в секторах =

                             add datasector,cx;= стартовый сектор области данных. Сохранить его в переменной.


                             cli

                             hlt


;ПЕРЕМЕННЫЕ==================================================================;

     total_FATs_size dw ?;Переменная для хранения общего размера FAT в секторах.

     datasector dw ?;Переменная для хранения номера стартового сектора области данных.


     org 1FEh;Заполняет память нулями до 511-го байта.

     dw 0AA55h;Байты 511 и 512. Признак загрузочного сектора.


CSEG ends

end begin


Добавим следующий код между add datasector,cx и cli:


                              mov bx,0200h

                              call read_sectors


Теперь загрузчик перед тем, как остановить процессор, вызывает процедуру read_sectors. Но передали ли

мы все нужные параметры? Напоминаю, в AX должен быть LBA первого загружаемого сектора. И в AX у нас

как раз номер первого сектора КД! CX должен содержать число загружаемых секторов. И, большая удача,

именно оно в CX и есть. Сегмент в ES у нас уже установлен, а смещение в BX мы явно задали перед

вызовом процедуры. Всё отлично! Осталась самая малость: написать саму процедуру.


Где-нибудь между hlt и переменными сделайте шаблон:


read_sectors proc

                              ;ПУСТО

read_sectors endp


Алгоритм работы в общих чертах представляется нам как-то так: перевести LBA в CHS, установить

значения регистров для int 13h, вызвать прерывание... Профит! Не будем медлить. Пишите:


read_sectors proc

                              div BPB_secpertrack;Разделить LBA в AX на число секторов в дорожке.

                              inc dl;Остаток + 1 = номер сектора, т.к. нумерация с 1.

                              mov cl,dl;Поместить номер сектора в CL для int 13h

                              xor dx,dx;Обнулить перед делением.

                              div BPB_numheads;Разделить результат на число головок.

                              shl dx,8;Остаток = номер головки, сдвинуть его в DH.

                              mov ch,al;Частное = номер дорожки, его поместить в CH для int 13h.

                              mov dl,0;DL = 0, флоппи-диск А.

                              mov ax,0201h;Функция 2 int 13h, загрузка секторов с диска. В AL - число секторов.

                              int 13h

                              ret

read_sectors endp


Поздравим себя, на сегодня дело сделано. Шутка. Включаем голову. Во-первых, носители - а особенно

флоппи-диски! - имеют свойство не читаться с первого раза. На этот случай int 13h возвращает

статус операции в CF: если флаг обнулён - всё хорошо, если установлен - была ошибка чтения.

Во-вторых, даже в случае успеха мы загрузили только один сектор: значение в CX до сих пор не

используется. Начнём со второй проблемы:


read_sectors proc

                              mov bp,BPB_bytespersec;Размер сектора, понадобится внутри цикла.


main:                      pusha;Сохранить регистры общего назначения.

                              div BPB_secpertrack;Разделить LBA в AX на число секторов в дорожке.

                              inc dl;Остаток + 1 = номер сектора, т.к. нумерация с 1.

                              mov cl,dl;Поместить номер сектора в CL для int 13h

                              xor dx,dx;Обнулить перед делением.

                              div BPB_numheads;Разделить результат на число головок.

                              shl dx,8;Остаток = номер головки, сдвинуть его в DH.

                              mov ch,al;Частное = номер дорожки, его поместить в CH для int 13h.

                              mov dl,0;DL = 0, флоппи-диск А.

                              mov ax,0201h;Функция 2 int 13h, загрузка секторов с диска. В AL - число секторов.

                              int 13h

                              popa;Восстановить сохраненные регистры.


                              inc ax;Увеличить LBA.

                              add bx,bp;Сместить указатель загрузки на длину сектора.

                              loop main;Продолжить цикл.

                              ret;Завершить процедуру.

read_sectors endp


Процедура теперь организована в виде цикла со счётчиком в CX. Команда loop возвращает

указатель инструкции к указанной метке при условии, что CX не равен 0. CX при этом

уменьшается на 1. Обратите внимание, что в начале процедуры мы помещаем в BP

размер сектора в байтах, а блок кода из прошлой версии теперь обрамляется инструкциями

pusha и popa. Последнее нужно для того, чтобы после выполнения шага цикла вернуть вводные

значения в соответствующие регистры. Перед началом следующего шага LBA в AX увеличивается

на 1, а смещение области загрузки увеличивается на размер сектора. Время разобраться

с возможными ошибками чтения.


read_sectors proc

                              mov bp,BPB_bytespersec;Размер сектора, понадобится внутри цикла.

main:                      mov di,5;Число попыток чтения в случае ошибки.


load_sector:            pusha;Сохранить регистры общего назначения.

                              div BPB_secpertrack;Разделить LBA в AX на число секторов в дорожке.

                             inc dl;Остаток + 1 = номер сектора, т.к. нумерация с 1.

                             mov cl,dl;Поместить номер сектора в CL для int 13h

                             xor dx,dx;Обнулить перед делением.

                             div BPB_numheads;Разделить результат на число головок.

                             shl dx,8;Остаток = номер головки, сдвинуть его в DH.

                             mov ch,al;Частное = номер дорожки, его поместить в CH для int 13h.

                             mov dl,0;DL = 0, флоппи-диск А.

                             mov ax,0201h;Функция 2 int 13h, загрузка секторов с диска. В AL - число секторов.

                             int 13h

                             jnc sector_loaded;Если CF не установлен, сектор загружен успешно.


                             xor ax,ax;Функция 0 int 13h, сброс головок.

                             xor dl,dl;DL = номер привода, флоппи-диск А.

                             int 13h

                             popa;Восстановить сохраненные регистры.

                             sub di,1;Уменьшить счетчик попыток.

                             jnz load_sector;Если счетчик не обнулился, перейти к загрузке сектора.

                             ret


sector_loaded:        popa;Восстановить сохраненные регистры.

                             inc ax;Увеличить LBA.

                             add bx,bp;Сместить указатель загрузки на длину сектора.

                             loop main;Продолжить цикл.

                             ret;Завершить процедуру.

read_sectors endp


После вызова прерывания у нас теперь стоит jnc sector_loaded. Эта инструкция делает переход к

указанной метке, но только если флаг CF не установлен. Таким образом, к инициализации переменных

для следующего шага цикла мы попадаем только если предыдущий завершился успешно. Если же CF

установлен, начинается обработка ошибки. Функция 0 int 13h возвращает читающие головки привода к

0 сектору 0 дорожки, это должно уменьшить вероятность ошибки при следующем чтении. После

этого мы уменьшаем счётчик попыток на 1 и, если он не обнулился (инструкция jnz), делаем повторную

попытку. Теперь процедура почти готова. Остались финальные штрихи. Во-первых, сброс головок

тоже может пойти с ошибкой, и для пущей уверенности операцию стоит повторить несколько раз.

Во-вторых, было бы неплохо, если бы процедура обрабатывала ситуацию, когда все попытки чтения

завершились неудачей. Сейчас она просто завершается, как и в случае успеха. Начнём опять со второй задачи.


read_sectors proc

                             mov bp,BPB_bytespersec;Размер сектора, понадобится внутри цикла.

main:                     mov di,5;Число попыток чтения в случае ошибки.


load_sector:            pusha;Сохранить регистры общего назначения.

                             div BPB_secpertrack;Разделить LBA в AX на число секторов в дорожке.

                             inc dl;Остаток + 1 = номер сектора, т.к. нумерация с 1.

                             mov cl,dl;Поместить номер сектора в CL для int 13h

                             xor dx,dx;Обнулить перед делением.

                             div BPB_numheads;Разделить результат на число головок.

                             shl dx,8;Остаток = номер головки, сдвинуть его в DH.

                             test ah,ah;Проверить AH. Если больше нуля, что-то пошло не так.

                             jnz error;Т.к. на диске не может быть больше 255 дорожек, завершить с ошибкой.

                             mov ch,al;Частное = номер дорожки, его поместить в CH для int 13h.

                             mov dl,0;DL = 0, флоппи-диск А.

                             mov ax,0201h;Функция 2 int 13h, загрузка секторов с диска. В AL - число секторов.

                             int 13h

                             jnc sector_loaded;Если CF не установлен, сектор загружен успешно.


                             xor ax,ax;Функция 0 int 13h, сброс головок.

                             xor dl,dl;DL = номер привода, флоппи-диск А.

                             int 13h

                             popa;Восстановить сохраненные регистры.

                             sub di,1;Уменьшить счетчик попыток.

                             jnz load_sector;Если счетчик не обнулился, перейти к загрузке сектора.

                             ret


sector_loaded:        popa;Восстановить сохраненные регистры.

                             inc ax;Увеличить LBA.

                             add bx,bp;Сместить указатель загрузки на длину сектора.

                             loop main;Продолжить цикл.

                             ret;Завершить процедуру.


error:                     popa;Попытки кончились. Восстановить сохраненные регистры.

                             mov ax,07c0h;Сегмент загрузчика

                             mov es,ax;поместить в ES для int 10h.

                             mov ah,03h;Функция 3 прерывания 10h, получить позицию курсора в DH, DL.

                             xor bh,bh;BH = номер видеостраницы.

                             int 10h;DH = строка, DL = столбец.


                             mov ax,1300h;Функция 19 прерывания 10h, вывод строки. AL = режим вывода.

                             mov bx,0007h;BH = страница, BL = атрибуты символа.

                             mov cx,0010h;CX = длина строки.

                             mov bp,offset msg_DRE;ES:BP = указатель на строку.

                             int 10h;Вывести строку в DH,DL без обновления курсора.

                             cli;Запретить прерывания

                             hlt;и остановить процессор.

read_sectors endp


В первом сегменте кода после shl dx,8 у нас появилась проверка на ошибочность результата. Она

явно избыточна, но пусть будет. Если в результате деления у нас получился номер дорожки больше

255, то что-то пошло не так. Программа переходит к метке error, после которой происходит

следующее: первый сегмент кода опустошает стек, а потом с помощью прерывания 10h

(прерывание для работы с дисплеем) считывает положение курсора на экране, а второй выводит сообщение

об ошибке и останавливает процессор. Строку с сообщением можно хранить рядом состальными переменными,

выглядит она так:


msg_DRE db 'Disk read error.' ;Сообщение об ошибке чтения с диска.


Осталась самая малость. Обработать повторные попытки сброса головок. Финальная версия прецедуры

будет выглядеть так:


read_sectors proc

                             mov bp,BPB_bytespersec;Размер сектора, понадобится внутри цикла.

main:                     mov di,5;Число попыток чтения в случае ошибки.


load_sector:            pusha;Сохранить регистры общего назначения.

                             div BPB_secpertrack;Разделить LBA в AX на число секторов в дорожке.

                             inc dl;Остаток + 1 = номер сектора, т.к. нумерация с 1.

                             mov cl,dl;Поместить номер сектора в CL для int 13h

                             xor dx,dx;Обнулить перед делением.

                             div BPB_numheads;Разделить результат на число головок.

                             shl dx,8;Остаток = номер головки, сдвинуть его в DH.

                             test ah,ah;Проверить AH. Если больше нуля, что-то пошло не так.

                             jnz error;Т.к. на диске не может быть больше 255 дорожек, завершить с ошибкой.

                             mov ch,al;Частное = номер дорожки, его поместить в CH для int 13h.

                             mov dl,0;DL = 0, флоппи-диск А.

                             mov ax,0201h;Функция 2 int 13h, загрузка секторов с диска. В AL - число секторов.

                             int 13h

                             jnc sector_loaded;Если CF не установлен, сектор загружен успешно.


                             mov cx,0003h;Счетчик попыток сброса головок.

reset:                     xor ax,ax;Функция 0 int 13h, сброс головок.

                             xor dl,dl;DL = номер привода, флоппи-диск А.

                             int 13h

                             jnc reload;Если не было ошибки - повторить попытку чтения сектора.

                             loop reset;Попробовать сбросить головки еще раз, если CX не обнулился.

error:                     popa;Попытки кончились. Восстановить сохраненные регистры.

                             jmp short disk_read_error;Сообщить об ошибке и завершить программу.


reload:                   popa;Восстановить сохраненные регистры.

                             sub di,1;Уменьшить счетчик попыток.

                             jnz load_sector;Если счетчик не обнулился, перейти к загрузке сектора.

                             jmp short disk_read_error;Сообщить об ошибке и завершить программу.


sector_loaded:        popa;Восстановить сохраненные регистры.

                             inc ax;Увеличить LBA.

                             add bx,bp;Сместить указатель загрузки на длину сектора.

                             loop main;Продолжить цикл.

                             ret;Завершить процедуру.


disk_read_error:      mov ax,07c0h;Сегмент загрузчика

                             mov es,ax;поместить в ES для int 10h.

                             mov ah,03h;Функция 3 прерывания 10h, получить позицию курсора в DH, DL.

                             xor bh,bh;BH = номер видеостраницы.

                             int 10h;DH = строка, DL = столбец.


                             mov ax,1300h;Функция 19 прерывания 10h, вывод строки. AL = режим вывода.

                             mov bx,0007h;BH = страница, BL = атрибуты символа.

                             mov cx,0010h;CX = длина строки.

                             mov bp,offset msg_DRE;ES:BP = указатель на строку.

                             int 10h;Вывести строку в DH,DL без обновления курсора.

                             cli;Запретить прерывания

                             hlt;и остановить процессор.

read_sectors endp


Поздравим себя! Теперь у нас есть процедура, считывающая данные с диска. Добавленный нами

вызов read_sectors в конце программы помещает КД диска в память сразу после самого

загрузчика. Следующий пост будет последним на тему первичного загрузчика. В нём мы научимся

пользоваться КД и FAT и загружать файлы.


Развернуть

пидоры помогите компьютеры вопрос по компьютерам айти железо sata жесткий диск SSD Windows 10 Windows ...Операционная система 

Достопочтенные господа, интересует такой вопрос: ноутбук lenovo b50 - стоял террабайтник, решил поставить ссд на место дисковода купив переходник-корпус для 2.5 жестких дисков к сата. Вставил ссд в него - итого ссд нивкакую не хотел инициализироваться в винде - ни в мбр, ни в gpt - показывал 0 из 0. ладно подумал я, и поменял диски местами - накатил новую винду на ссд - но теперь террабайтник вообще не виден был в диспетчере дисков. Поставив вместо террабайтника второй ссд- всё заработало - в виндк ссд на месте дисковода - определялся - так что переходник вроде норм. Начал грешить на жесткий - форматнул его в nfts в винде - добавил простой том и поставил на место дисковода - итого - в биосе он виден, но попытка запустить винду с ним уходит либо в бесконечную прокрутку колеса загрузки винды, либо в бесконечную попытку восстановить систему. Террабайтник пахал нормально до этого. Что это может быть и как полечить?
КУПОН
НА 1 помощь,пидоры помогите,реактор помоги,компьютеры,вопрос по компьютерам,айти,железо,sata,жесткий диск,SSD,Windows 10,Windows,Операционная система
Развернуть
В этом разделе мы собираем самые смешные приколы (комиксы и картинки) по теме Операционная система (+690 картинок, рейтинг 14,982.8 - Операционная система)