![]()
|
|||||||
Полученную строчку отдаем файловой функции open; Полученную строчку отдаем файловой функции open ;+-------------------------------------------------------------- code_seg segment ASSUME CS:CODE_SEG,DS:code_seg,ES:code_seg org 100h ; CR EQU 13 LF EQU 10 Space EQU 20h ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; print_letter macro letter push AX push DX mov DL, letter mov AH, 02 int 21h pop DX pop AX endm ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; print_mes macro message local msg, nxt push AX push DX mov DX, offset msg mov AH, 09h int 21h pop DX pop AX jmp nxt msg DB message,'$' nxt: endm ;===================================================== start: print_letter CR print_letter LF ;------- check string of parameters ------------------------- mov CL, ES:[80h] ; addr. of length parameter in psp ; is it 0 in buffer? cmp CL, 0 jne $cont ; yes ;--------------------------------------------------------------- print_mes 'not parameters' ; not parameters ; program was run without parameters int 20h ;--------------------------------------------------------------- $cont: xor BH, BH mov BL, ES:[80h] ; а вот так -> mov BL, [80h]нельзя!!!! mov byte ptr [BX+81h], 0 ;--------------------------------------------------------------- mov CL, ES:80h ; Длина хвоста в PSP xor CH, CH ; CX=CL= длина хвоста cld ; DF=0 - флаг направления вперед mov DI, 81h ; ES:DI-> начало хвоста в PSP mov AL,' ' ; Уберем пробелы из начала хвоста repe scasb ; Сканируем хвост пока пробелы ; AL - (ES:DI) -> флаги процессора ; повторять пока элементы равны dec DI ; DI-> на первый символ после пробелов ;--------------------------------------------------------------- mov AX, 3D02h ; Open file for read/write mov DX, DI int 21h jnc openOK print_letter CR print_letter LF print_mes 'openERR' int 20h ;===================================================== openOK: print_letter CR print_letter LF print_mes 'openOK' mov AX, 4C00h int 21h ; ; FileName DB 14,0,14 dup (0) code_seg ends end start
Рассмотрим второй способ. Программа запрашивает имя файла и пользователь вводит его с клавиатуры.
;+-------------------------------------------------------------- ; В ответ на приглашение программа просит ввести имя файла ; Пользователь вводит имя файла без пробела ;+-------------------------------------------------------------- code_seg segment ASSUME CS:CODE_SEG,DS:code_seg,ES:code_seg org 100h ; CR EQU 13 LF EQU 10 Space EQU 20h ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; print_letter macro letter push AX
|
|||||||
|