Главная · Поиск книг · Поступления книг · Top 40 · Форумы · Ссылки · Читатели

Настройка текста
Перенос строк


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)
Demon's Souls |#9| Heart of surprises

Другие игры...


liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня
Rambler's Top100
Образование - Различные авторы Весь текст 2311.07 Kb

Программирование и кодирование

Предыдущая страница Следующая страница
1 ... 150 151 152 153 154 155 156  157 158 159 160 161 162 163 ... 198
                mov   ax,word ptr es:[di].TrackSector  ; получить
                                                 ; значение слова
                @DisNum ax,10,1,0  ; вывод десятичного числа без знака
                @NewLine
         ;
                @DisStr SectorBytes_Msg          ; отобразить на экране
                                 ; дисплея  количество байтов в секторе
                mov   ax,word ptr es:[id].SectorBytes ; получить значе-
                                                      ; ние слова
                @DisNum ax,10,1,0   ; вывод десятичного числа без знака
                @NewLine
         ;
                @DisStr НiddenSectors_Msg ; отобразить на экране
                           ; дисплея количество скрытых секторов
                mov ax,word ptr es:[di].HiddenSectors ; получить зна-
                                                        ; чение слова
                @DisNum ax,10,1,0   ; вывод десятичного числа без знака
                cmp  word ptr es:[di].HiddenSectors,0 ; есть ли
                                           ; скрытые  сектора?
                je    hidden_done          ; нет, мы закончили
                @DisStr PartitionInfo_Msg  ; иначе, дать инфор-
                                           ; мацию о разделении
         hidden_done:
               @NewLine
         ;
               @DisStr TotalSectors_Msg     ; отобразить на экране
                      ; дисплея общее  количество  секторов  диска
               mov   ax,word ptr es:[di].TotalSectors   ; получить
                                                  ; значение слова
               @DisNum ax,10,1,0 ; вывод десятичного числа без знака
               @NewLine
         ;
               @DisStr TotalBytes_Msg     ; отобразить на экране
                      ; дисплея общее количество байтов на диске
               mov   ax,word ptr TotalBytes ; получить  значение,
                                  ; состоящее из двух слов и ...
               mov   dx,word ptr TotalBytes.2 ; поместить его в
                                            ; регистры  AX и DX
               call  bin2dec2               ; и вывести на экран
                                            ; результат DX:AX
               @NewLine
         ;
               @DisStr ReservedSec_Msg    ; отобразить на экране
                  ; дисплея количество зарезервированных секторов
               mov   ax,word ptr es:[di].ReservedSec    ; получить
                                                   ; значение слова
               @DisNum ax,10,1,0  ; вывод десятичного числа без знака
               @NewLine
         ;
               @DisStr FATsectors_Msg    ;отобразить на
                               ; экране дисплея количество секторов
                               ; в одной таблице FAT

                                      - 11-25 -
               mov   ax,word ptr es:[di].FATsectors ; получить
                                                   ; значение слова
               @DisNum ax,10,1,0 ; вывод десятичного числа без знака
               @NewLine
         ;
               @DisStr FATcopies_Msg    ; отобразить на  экране дисплея
                                        ; количество копий таблицы FAT
               xor   ah,ah          ; очистить AH
               mov   al,byte ptr es:[di].FATcopies  ; получить
                                                ; значение байта
               @DisNum  ax,10,1,0 ; вывод десятичного числа без знака
               @NewLine
         ;
               @DisStr TotalFATsectors_Msg  ; отобразить на экране
                           ; дисплея общее количество секторов для
                           ; всех таблиц FAT
               mov   ax,word ptr TotalFATSec  ; получить значение слова
               @DisNum ax,10,1,0    ; вывод десятичного числа без знака
               @NewLine
         ;
               @DisStr DirEntries_Msg         ; отобразить на экране
                   ; дисплея количество элементов корневого каталога
               mov   ax,word ptr es:[di].DirEntries ; получить значение
                                                    ; слова
               @DisNum ax,10,1,0    ; вывод десятичного числа без знака
               @NewLine
         ;
               @DisStr DirSektors_Msg       ; отобразить  на экране
                               ; дисплея  общее количество секторов
                               ; корневого каталога
               mov   ax,word ptr DirSectors ; получить значение слова
               @DisNum ax,10,1,0   ; вывод десятичного числа без знака
               @NewLine
         ;
               @DisStr DataSectors_Msg      ; отобразить на экране
         ;            ; дисплея общее  количество  секторов данных
               mov   ax,word ptrDataSectors ; получить значение слова
               @DisNum ax,10,1,0   ; вывод десятичного числа без знака
               @NewLine
         ;

               @DisStr ClusterSectors_Msg        ; отобразить на экране
                             ; дисплея количество секторов  в  кластере
               xor   ah,ah                       ; очистить AH
               mov   al,byte ptr es[di].ClusterSec ; получить значение
                                                 ; байта
               @DisNum  ax,10,1,0   ; вывод десятичного числа без знака
               @NewLine
         ;
               @DisStr ClusterBytes_Msg          ; отобразить на экране
                                ; дисплея количество байтов в  кластере
               mov   ax,word ptr ClusterBytes ; получить значение слова
               @DisNum ax,10,1,0   ; вывод десятичного числа без знака
               @NewLine
         ;
               @DisStr Totalclusters-Msg     ; отобразить на экране
                                   ; дисплея общее количество кластеров

                                      - 11-26 -
               mov   ax,word ptr Totalclusters ; получить значение слова
               @DisNum ax,10,1,0   ; вывод десятичного числа без знака
               @NewLine
         ;
               @DisStr FATentrySize_Msg         ; отобразить на экране
                         ; дисплея размер каждого элемента таблицы  FAT
               xor   ah,ah                      ; очистить AH
               mov   al,byte ptr FATentryBits   ; получить значение
                                                ; байта
               @DisNum ax,10,1,0   ; вывод десятичного числа без знака
               @DisStr Bits_Msg                ; указать, что значение
                                               ; задано в битах
               cmp   byte ptr FATentryBits,12  ; определить, сколько
                                               ; имеется байтов
               jg   dis_two_bytes
               @DisStr SmallFAT_Msg   ; элемент таблицы FAT = 1,5 байта
               jmp  short show_fat_done
         dis_two_bytes:
                      @DisStr LargeFAT_Msg     ; элемент таблицы
                                               ; FAT = 2 байта
         show_fat_done:
         ;
                 @NewLine
         ;
                 @DisStr DataBytes_Msg  ; отобразить на экране дисплея
                                    ; количество байтов данных на диске
                  mov   ax,word ptr DataBytes     ; получить значение
                  mov   dx,word ptr DataBytes.2   ; состоящее из двух
                              ; слов и поместить его в регистры AX и DX
                  call  bin2dec2       ; и вывести его на экран дисплея
                  @NewLine
         ;
                  push   es            ; сохранить текущее значение ES
                  mov   ax,word ptr BootSeg   ; получить адрес сегмента
                                              ; распределенного блока
                  mov   es,ax                     ; и назначить ему ES
                  call  memfree                   ; освободить блок
                  pop   es                  ; восстановить значение ES
         ;
         terminate:
                  @ExitToDOS                ; завершить  программу
         ;
         ;************************************************************
         ; Конец программы
         ;************************************************************
         main   ENDP               ; конец главного процесса
         ;
         ;************************************************************
         ; Запуск стандартных программ
         ;*************************************************************
         ;
         ;+++++++++++++++++++++++++++++++++++++++++++++++++
         ; MEM_ERR_HANDLER: Описатель ошибки распределения памяти
         ; (освобождения памяти) изменения размера.
         ;BXОД:       AX = код ошибки
         ;            BX = максимальный доступный блок памяти
         ;                 (если код  ошибки  =  8)
         ;            ЕX = адрес сегмента распределенного блока

                                      - 11-27 -
         ;                 (если код ошибки = 9)
         ;
         ;ВЫХОД:        ни  один  (все  регистры восстановлены)
         ;
         ;Вызываемые стандартные программы : нет
         ;- - - - - - - - - - - - - - - - - - - - - - - - -
         mem_err_handler PROC  NEAR
         ;
                      cmp   ax,7     ; очищенные от мусора управляющие
                                     ;  блоки  памяти ?
                      jne   mem_error8     ; нет, продолжить проверку
         .DATA
         NranshedMemErr_Msg db  "Ошибка распределения памяти:"
                      db"разрушены управляющие блоки памяти.",CR,LF,"$"
         .CODE
                 @DisStr TrashedMemErr_Msg    ; да, выйти с сообщением
                 ret                          ; возврат
         ;
         mem_error8:
                      cmp   ax,8             ; недостаточно памяти ?
                      jne   mem_error9       ; нет, продолжить проверку
         .DATA
         InsuffMemErr_Msg  db  "Ошибка распределения памяти:"
                           db  "недостаточно памяти",CR,LF
                           db  "Hаибольший доступный блок памяти = $"

         .CODE
                  @DisStr InsuffMemErr_Msg   ; да, выйти с сообщением
                  @DisNum bx,10,1,0          ; доступен
                  @NewLine           ; вывести на экран пустую строку
                  ret                        ; возврат
         ;
         mem_error9:
                   cmp   ax,9      ; неправильный  адрес блока памяти?
                   jne   mem_err_unknown    ; нет, неизвестная причина
         .DATA
         IncorrSegAddr_Msg db "Неправильный адрес сегмента для изменения"
                           db "изменения размера/освобождения.",CR,LF
                           db "Адрес сегмента = $"
         .CODE
                      @DisStr IncorrSegAddr_Msg   ; вывести на экран
                                       ; дисплея сообщение об ошибке
                      @DisNum es,16,4  ; вывести на экран дисплея адрес
                                       ; сегмента
                      @NewLine         ; вывести на экран пустую строку
                      ret              ; возврат
         ;
         mem_err_unknown:
         .DATA
         UnknownMemErr_Msg db "Hеизвестная  ошибка распределения/"
                 db "/изменения размера/освобождения памяти.",CR,LF,"$"
         .CODE
                 @DisStr UnknownMemErr_Msg  ; вывести на экран
                                            ; дисплея сообщение
                 ret
         ;
         mem_err_handler ENDP

                                      - 11-28 -
         ;
         ;;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
         ; MEMALLOC: Распределить блок памяти заданного размера в
Предыдущая страница Следующая страница
1 ... 150 151 152 153 154 155 156  157 158 159 160 161 162 163 ... 198
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 

Реклама