Хелпикс

Главная

Контакты

Случайная статья





Полученную строчку отдаем файловой функции 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



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.