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

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


    Прохождения игр    
Demon's Souls |#13| Storm King
Demon's Souls |#12| Old Monk & Old Hero
Demon's Souls |#11| Мaneater part 2
Demon's Souls |#10| Мaneater (part 1)

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


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

Ассемблер и программирование для IBM PC

Предыдущая страница
1 ... 78 79 80 81 82 83 84  85
               LOOP B20            ;Циклить 4 раза

13.3. В качестве примера см.рис.13.2, отличие - CX = 03.

13.4. В качестве примера см.рис.13.3, отличие - CX = 03.

13.5. а) Преобразование числа в ASCII-коде в двоичное представление:

                              Десятичные   Шестнадцатиричные

               8х1 =             8                   8
               2 х 10 =         20                  14
               3 х 100 =       300                 12С
               6 х 1000 =     6000                1770
               4 х 10000 =   40000                9С40
                                                  ----
                                                  B4F8
14.1.     WKDAYS    DB        'Sunday...'
                    DB        'Monday... '
                    DB        'Tuesday..'

14.2.     DAYNO     DB     ?
          DAYNAM    DB     9 DUP(?)
          NINE      DB     9
                    LEA    SI,WKDAYS    ;Загрузить адрес таблицы
                    SUB    АН,АН        ;Очистить АН
                    MOV    AL,DAYNO     ;Загрузить день недели
                    DEC    AL           ;-1
                    MUL    NINE         ;Получить смещение
                    ADD    SI,AX        ;Плюс адрес таблицы
                    MOV    CX,09        ;Девять символов
                    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  (связь  подпрограмм).
     Будьте особенно внимательны при работе со стеком.



__________________________________________________________________________
     Редактиpовал Еpшов В.Г. Дата последней редакции: 02/04/99
Предыдущая страница
1 ... 78 79 80 81 82 83 84  85
Ваша оценка:
Комментарий:
  Подпись:
(Чтобы комментарии всегда подписывались Вашим именем, можете зарегистрироваться в Клубе читателей)
  Сайт:
 
Комментарии (15)

Реклама