Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 10 декабря!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Ассемблер для крэкера

Под редакцией Еpшова В.Г.
8.5. а) Вызов базовой функции DOS:

               DATEPAR   LABEL  BYTE
               MAXLEN    DB  9               ;Длина области ввода
               ACTLEN    DB  ?
               DATEFLD   DB  9 DUP(' ')
                         DB  '$'
                         MOV AH,0AH          ;Запрос функции
                         LEA DX,DATEPAR      ; ввода
                         INT 21H

9.1. a) 1000 0001; в) 0111 1000.

9.2.  a)      MOV    АН,00         ;Запрос функции установки режима
              MOV    AL,02         ; 80х25 BW
              INT    10Н
      в)      MOV    AН,060AН      ;3апрос прокрутки на 10 строк
              MOV    BH,07         ;Нормальный видеоатрибут
              MOV    CX,0000       ;Полный экран
              MOV    DX,184FH
              INT    10Н

9.3. а) 48; в) 47.

9.5. Использовать команду INT 10Н для ввода и проверить скэнкод.

10.1. Восемь цветов для фона  и 16 цветов для текста.

10.2. а) 1011 0101; в) 1000 1100.

10.3. Низкое разрешение: четыре бита на пиксел дает 16 цветов.
     Среднее разрешение: два бита на пиксел дает 4 цвета.
     Высокое  разрешение:  один  бит  на  пиксел  дает  2  "цвета"  (BW  -
     черно-белое изображение).

10.4.          MOV  AH,09          ;Функция вывода
               MOV  AL,04          ;Символ
               MOV  BH,00          ;Страница #0
               MOV  BL,01011010В   ;Светло-зеленый на сиреневом
               MOV  CX,05          ;Повторение 5 раз
               INT  10Н

10.6. Сначала установить графический режим, а затем, используя

               INT  10Н (AH=0BH),

     установить цвет фона.

10.7. Сначала установить графический режим.

               MOV  AH,0DH         ;Прочитать точку
               MOV  CX,13          ;Столбец
               MOV  DX,12          ;Строка
               INT  10Н

11.1. а)          JCXZ   lаbеl2
          label1: MOV    AX,[SI]
                  MOV    [DI],AX
                  INC    DI
                  INC    DI
                  INC    SI
                  INC    SI
                  LOOP   label1
          label2: ...

11.2. Установить флаг направления DF  для  пересылки  справа  налево.  Для
     команды MOVSB начальная установка на адреса  NAME1 + 9  олов
                    LEA    DI,DAYNAM    ;Адрес пересылки
                    REP MOVSB           ;Переслать 9 символов

14.3. a)  ITEMNO    DB        '06','10','14','21','24'
      в)  ITPRICE   DW        9395,8225,9067,8580,1385

14.4. Возможная организация представлена в следующих процедурах:

Основной цикл            Вызов процедур

В1OREAD   Выдает на текст запроса и вводит номер элемента.
C10SRCH   Выполняет поиск в таблице и выдает сообщение об ошибке.
D10MOVE   Выделяет описание и цену из таблицы.
E10CONV   Преобразует количество из кода ASCII в двоичное представление.
F10CALC   Вычисляет стоимость (количество х цена).
G10CONV   Преобр. стоимость из двоичн. представления в симв. (код ASCII).
K10DISP   Выводит описание и стоимость на экран.

14.5.     SORTAB    DB        5 DUP(9 DUP(?))
                    LEA       SI,ITDESC      ;Инициализация
                    LEA       01,SORTAB      ; адреса таблицы
                    MOV       CX,45          ; и числа символов
                    CLD                      ;Направление слева направо
                    REP MOVSB                ;Переслать таблицу

     Приведенная подпрограмма пересылает таблицу.  Для сортировки  таблицы
     см. рис.14.6.

15.1. 512.

15.3. В каталоге первый байт имени файла должен быть установлен в Е5.

15.5. Первый байт таблицы FAT содержит F8.

15.6. а) Позиции 28...31 в каталоге;
      б) шестнадцатиричное число В4А записывается как 4А0В.

16.1. Все функции включают INT 21 Н: а) 16Н; в) 15Н; д) 14Н.

16.2. а) 4;  б) 108 (9 секторов х 3 дорожки х 4 записи на дорожке);
      в) одно обращение на сектор, т.е. всего 27.

16.3.Используйте рис.16.1 в качестве примера для создания файла и рис.13.6
     для преобразования чисел из ASCII-кода в двоичное представление.

16.4. Используйте рис.16.2 в качестве примера для чтения файла и  рис.13.6
     для преобразования чисел из двоичного представления в ASCII-код.

16.5.а) Блок 0, запись 44; в) блок 1, запись 21.

16.6.Десятичное число 2652 равно шестнадцатиричному 0А5С, что записывается
     как 5С0А0000.

16.7. Функции включают INT 21Н: а) 22Н; в) 28Н.

16.8. Поле FCBFLSZ содержит  размер  файла  в  байтах  (произведение числа
     записей на  длину  записи),  поле  FCBRCSZ  содержит  длину  записей.
     Разделите FCBFLSZ (четыре байта в регистровой паре DX:AX) на  FCBRCSZ
     (два байта).
16.9. См. рис.16.4 в качестве примера для чтения блока.

16.10. В гл.13 показано, как преобразовать числа в ASCII-коде  в  двоичное
     представление.

16.11. Можно использовать рис.16.3 в качестве примера для прямого чтения и
     рис.13.6  для  преобразования  чисел   из   ASCII-кода   в   двоичное
     представление.

17.1. 01 и 06.

17.3.а)        MOV  AH,3CH         ;Ф-ция создания файла
               MOV  CX,00          ;Нормальный атрибут
               LEA  DX,PATH1       ;ASCIIZ-строка
               INT  21H            ;Вызвать DOS
               JC   error          ;Переход по ошибке
               MOV  CUSTHAN,AX     ;Сохр. файловый номер

17.4.а)        MOV  AH,ЗОН         ;Ф-ция открытия файла
               MOV  AL,OO          ;Только чтение
               LEA  DX,PATH1       ;ASCIIZ-строка
               INT  21H            ;Вызвать OOS
               JC   error          ;Переход по ошибке
               MOV  CUSTHAN.AX     ;Сохр. файловый номер

17.5. При открытии большого числа файлов.

18.1. Используйте INT 13H и AH = 00.

18.2. Используйте INT 13H и AH = 01.

18.4.          MOV  АН,03          ;Функция записи
               MOV  AL,03          ;3 сектора
               LEA  BX,OUTDSK      ;0бласть вывода
               MOV  CH,08          ;Дорожка 08
               MOV  CL,01          ;Сектор 01
               MOV  ОН,00          ;Сторона  0
               MOV  DL,01          ;Дисковод В
               INT  13H

18.5. Байт состояния в регистре АН содержит 00000011.

19.2. а)       MOV  AH,05          ;Функция печати
               MOV  DL,0CH         ;Перевод страницы
               INT  21H
      б)       LEA  SI,NAMEFLD     ;Инициализ. имени
               MOV  CX,length      ; и длины
          В20:
               MOV  AH,05          ;Функция печати
               MOV  DL,[SI]        ;Символ из имени
               INT  21H            ;Вызвать DOS
               INC  SI             ;Следующий символ в имени
               LOOP В20            ;Циклить length раз

     в) Можно закодировать символ перевод строки  (0А)  в  начале  адреса.
     Решение аналогично б),
     д) Вывести еще символ перевода страницы (0С).

19.3.        HEADNG        DB    13, 10, 15, 'Title', 12

19.5. Нельзя использовать регистр  CX  для  пятикратного  цикла,  так  как
     внутренний цикл печати имени уже использует этот регистр.Для регистра
     BX цикл будет следующим:

               MOV  BX,05
          С20:
               DEC  BX
               JNZ  С20

20.1. a) .SAIL.

20.2. a)    MULTBY MACRO MULTPR,MULTCD
                    MOV    AL,MULTCD
                    MUL    MULTPR
                    ENDM

20.3. Для  включения  библиотеки  макрокоманд  только  в  первом   проходе
     необходимо кодировать:

             IF1
                INCLUDE library-name
             ENDIF

20.4. Макроопределение должно начинаться следующим образом:

               BIPRINT MACRO  PRTLINE,PRLEN

          PRTLINE и PRLEN являются фиктивными  аргументами  для  адреса  и
     длины строки, которая предназначена для печати.  Для печати с помощью
     BIOS INT 17H см. гл.19.

20.5.Проверку IF нельзя использовать для тестирования на нулевой делитель.
     Проверка IF работает только в процессе ассемблирования,  в  то  время
     как  тестирование  на  нулевой  делитель  должно   происходить    при
     выполнении программы. Используйте, например, следующие команды:

               CMP    DIVISOR,00        ;Нулевой делитель?
               JNZ    (обойти)          ;Нет - обойти
               CALL   (подпрограмма вывода сообщения об ошибке)

21.1. a) EXTRN SUBPRO:FAR

21.2. a) PUBLIC QTY,VALUE.PRICE

21.3. Для примера используйте рис.21.5.

21.4. В качестве примера передачи параметров используйте рис.21.5. Отличие
     состоит в том, что в данном случае используется запись  в  Стек  трех
     переменных.  Поэтому вызываемая  программа  для  доступа  к  третьему
     элементу  (PRICE)  в  стеке  использует  [BP+10].  Можно   определить
     собственный стандарт для возврата элемента PRICE через стек. Обратите
     внимание также на операнд в команде возврата RET.

21.5. Данная программа включает материал из cледующих глав:  8 (ввод-вывод
     на  экран),  13   (преобразование    между    ASCII-    и    двоичным
     представлением), 12 (двоичное умножение) и  21  (связь  подпрограмм).
     Будьте особенно внимательны при работе со стеком.



Страницы книги разрезаны по 70Кб, чтобы они не были гигантскими и недолго грузились, так что нажмите "Далее" чтобы читать дальше.
Назад  Далее

Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS