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