Assembler proqramlaşdırma dili

Verilənlərin faylın sonuna yazılması

Verilənlərin faylın sonuna yazılması

Açılmış faylın sonuna yeni yazıları əlavə etmək üçün göstəricini faylın sonuna gətirmək lazımdır. Bu 21h kəsilməsinin 42h funksiyası ilə icra edilir. Bu funksiyadan həm ardıcıl, həm də birbaşa üsulda istifadə edilə bilər. Lakin ardıcıl üsul ilə təşkil olunan fayllar üçün funksiyanın icrası zamanı DX və CX registrlərinin məzmunu sıfır olmalıdır. AL registrinin məzmunu isə aşağıdakı kimi təyin edilir:

0 – göstərici faylın başlanğıcına gətirilir;

2 – göstərici faylın sonuna gətirilir.

BX registrində faylın nömrəsi olmalıdır.

42h funksiyası icra olunduqdan və fayl göstərici faylın sonuna gətirdikdən sonra faylın sonuna yazma prosesi yerinə yetirilir və beləliklə, artıq mövcud olan faylın sonuna verilənlər daxil olur. Funksiya müvəffəqiyyətlə icra olunduqda CF=0, əks halda CF=1 olur və AX registrinə səhvin kodu yazılır.

Misal:
VAL.TXT faylına ‘ VALEH.’ sözünü 5 dəfə ardıcıl olraq əlavə edən proqrama baxaq:
MASM
MODEL  SMALL
.STACK  100h
.DATA
file    DB  ‘VAL.TXT’, 0
pr     DB   ‘ VALEH.’
nom   DW  0
MES  DB  ‘SEHV’, 0AH, 0DH, ‘$’
.CODE
start:
	MOV AX,@DATA
	MOV DS,AX
;mövcud faylın yalnız yazmaq üçün açmaq 	
MOV  AH, 3ch    ; faylın açılması funksiyası
LEA   DX, file      ; ASCIIZ- sətrlərinin ünvanı
MOV  CX,0
MOV  AL, 1        ; yalnız yazmaq üçün faylı açmaq 
INT    21H
JC    error             ; əgər səhvdirsə, keçid
MOV  nom, AX    ; faylın nömrəsini saxlamaq 
; göstəricinin faylın sonuna gətirilməsi 
MOV  BX, AX    ; faylın nömrəsini BX –nə yazmaq
MOV  AL, 2      ; faylın sonuna keçmək
SUB  DX, DX
SUB  CX, CX
MOV  AH, 42H   ; göstəricinin yerdəyişməsi funksiyası
INT    21H
; ‘ VALEH.’   sətrinin 5 dəfə fayla yazılması
MOV  CX, 5
LEA  DX, pr       ; buferin ünvanını DX –nə yükləmək
MOV  BX, nom    ; faylın nömrəsini BX –nə yazmaq
sn: PUSH  CX ; dövr sayğacının qiymətinin saxlanması
MOV CX, 7        ; yazılacaq simvolların sayı CX –də 
MOV  AH, 40H   ; fayla yazmaq funksiyası
INT    21H
JC     error         ; əgər səhvdirsə, keçid
POP   CX          ; dövr sayğacının qiymətinin bərpası
LOOP  sn
MOV  BX, nom        ; faylın nömrəsini BX-nə yazmaq
MOV  AH, 3EH       ; faylın bağlanması funksiyası
INT    21H
JMP   SHORT  son
error:  LEA  DX, MES  ; səhv haqqında məlumatın 
                             ; ekrana çıxarılması
; ekrana çıxarma
MOV  AH, 9
INT    21H
son:  MOV  AH, 4CH
INT  21H
END start