Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Jazik_Assemblera_dlja_IBM_PC_i_programmir

.pdf
Скачиваний:
59
Добавлен:
27.03.2015
Размер:
2 Mб
Скачать

Приведенная подпрограмма пересылает таблицу. Для сортировки таблицы см. рис.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 (связь подпрограмм). Будьте особенно внимательны при работе со стеком.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]