
Jazik_Assemblera_dlja_IBM_PC_i_programmir
.pdfПриведенная подпрограмма пересылает таблицу. Для сортировки таблицы см. рис.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: |
AH,05 |
;Функция |
печати |
|
MOV |
|||
|
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 (связь подпрограмм). Будьте особенно внимательны при работе со стеком.