Assembler proqramlaşdırma dili

Faylın tələb olunan yerindən verilənlərin oxunması

Faylın tələb olunan yerindən verilənlərin oxunması

Faylın yazılılarını oxumazdan əvvəl eyni ilə yazmada olduğu kimi göstəricinin qiyməti hesablanır və təyin olunur. Sonra 21H kəsilməsinin 3FH funksiyasının köməyi ilə yazı oxunur. Funksiya icra olmazdan əvvəl oxunacaq yazıların yerləşdiriləcəyi buferin ünvanı DX registrində, oxunucaq baytların sayı isə CX registrində göstərilir. BX registrinə isə faylın nömrəsi yazılır. 3FH funksiyası icra olunduqdan sonra əgər köçürmə bayrağı CF=0 olarsa, onda AX registrində həqiqətən oxunmuş baytların sayı, əks halda CF=1 olarsa, onda AX registrində səhvin kodu göstərilir.

Misal 1 RANDOM.TXT faylından dördüncü “OBYEKT PROQRAMLAŞDIRMASI” yazısını ekrana çıxarın.

MASM
MODEL SMALL
.STACK 100h
.DATA
file	DB ”RANDOM.TXT”,0
nom	DW ?
mes	DB 'sehv',0Ah,0Dh,'$'
buf         DB 30 DUP (' '),'$'
.CODE
start:
	MOV AX,@DATA
	MOV DS,AX
; faylın açılması
	MOV AH,3Dh 	;faylı açan funksiya 
	MOV AL,0	; yalnız oxuma rejimi
	LEA DX,file	;	faylın ASCIIZ-sətri 
	INT 21h
	JC error	; əgər səhdirsə, keçid
	MOV nom,AX
;fayl göstəricisini tələb möveyə gətirmək 
	MOV AX,30	; yazıların ölçüsü
	MOV CX,3	; yazıların nömrəsi
	MUL CX
	MOV CX,DX	;fayl göstəricisinin 
        ; sürüşməsinin böyük sözü CX registrində
	MOV DX,AX	; kiçik sözü isə DX-də
	MOV AL,0	;faylın başlanğıcına 
                                 ; nəzərən göstəricinin sürüşməsi 
	MOV BX,nom
	MOV AH,42h	; göstəricini tənzimləyən 
                                               ; funksiya 
	INT 21h
; fayldan oxuma
	MOV BX,nom
	LEA DX,buf
	MOV CX,30	; yazının uzunluğü 
         MOV AH,3Fh	; faylda oxuma funksiyası
         INT 21h
; oxunmuş yazıları  ekrana çıxarmaq
	MOV AH,9
	LEA DX,buf
	INT 21h
; faylı  bağlamaq
	MOV AH,3Eh	; faylı bağlayan funksiya
	MOV BX,nom
	INT 21h
         JMP SHORT SON 
; səhv haqqında məlumatın verilməsi

error:	MOV AH,9	; sətrin çıxarılması funksiyası
	LEA DX,mes
	INT 21h
SON:  MOV AH,4Ch
        INT 21h
END start

Misal 2 PRİM.DAT faylı tutaq ki, birbaşa üsul ilə təyin olunub. Hər bir yazısının uzunluğu 20 baytdır. Bu faylın 6-cı yazısının yerinə ‘AHT fakultəsi’ sətrini yazmalı. Fərz edək ki, fayl əvvəlcədən açılıb və onun nömrəsi NOM sahəsinə yazılmışdır.

REC     DB ‘AHT fakultəsi’
...
; Göstəricinini hesablanması və təyin edilməsi 
MOV  AX, 20
MOV  CX, 5 
MUL  CX
MOV  CX, DX
MOV  DX, AX
MOV  AL, 0
MOV  AH,42H
MOV  BX, NOM
INT  21H
; Fayla yazma
MOV  AH, 40H
MOV  BX, NOM
LEA   DX, REC
MOV  CX, 20
INT   21H

Misal 3. Artıq yaradılmış PRİM.DAT faylından 8-ci yazını oxumalı. Yazının uzunluğu 20 baytdır. Fərz edək ki, fayl açıqdır və faylın nömrəsi NOM sahəsinə yazılıb.

BUF   DB  20 DUP(?) 
           …
; Göstəricinin hesablanması və təyini
          MOV  AX, 20
MOV  CX, 7 
MUL  CX
MOV  CX, DX
MOV  DX, AX
MOV  AL, 0
MOV  AH,42H
MOV  BX, NOM
INT  21H
; Fayldan oxumaq
MOV  AH, 3FH
MOV  BX, NOM
LEA   DX, BUF
MOV  CX, 20
INT   21H