Displeyin ekranınna çıxışın təşkili
21h kəsilməsinin 2h (CTRL+BREAK-ın sıxılmasını yoxlamaqla) və 6h (CTRL+BREAK-ın sıxılmasını yoxlamadan) funksiyaları ilə simvolları ekrana qara fonda ağ rəngdə çıxarmaq olar. Bu zaman simvolun kodu DL registrində olmalıdır. Məsələn:
... MOV DL, ‘A’ MOV AH, 6h İNT 21h
Bu əmrlərin icrasından sonra ‘A’simvolu ekranda kur-sor dayanan mövqedə əks olunacaq.
DOS-da simvollar ardıcıllığını ekrana çıxaran funksiya nəzərdə tutulub. Bunu 21h kəsilməsinin 9h funksiyası yerinə yetirir. Bunun üçün ekrana çıxarılacaq sətrin birinci simvolunun ünvanı DX registrində olmalıdır. Başqa sözlə, simvollar sətrinin başlanğıc ünvanı DX registrində olmalıdır. Sətr mütləq ‘$’ işarəsi ilə qurtarmalıdır. Sətr istənilən uzunluqda ola bilər.9h funksiyası DX registrində göstərilən ünvandan başlayaraq ‘$’ işarəsinə rast gələnə qədər sətrdəki bütün informasiyanı ekrana çıxarır. Əgər ekranda sətr sona çatmayıbsa, 21h kəsilməsinin 9h funksiyası kursoru avtomatik olaraq yeni sətrin başlanğıcına keçirə bilməyir. Buna nail olmaq üçün sətrin lazımi yerində 0Ah (yeni sətrə keçid), 0Dh (arabanın qaytarılması) göstərişlərini yazmaq lazımdır.
Məsələn:
... LEA DX. STR1 MOV AH, 9h İNT 21h ... STR1 DB ‘ Assembleri öyrənməklə Siz,’ STR2 DB ‘sistem proqramlarını araşdıra bilərsiniz!’ DB 0Ah,0Dh, ‘$’
Assembleri öyrənməklə Siz, sistem proqramlarını araşdıra bilərsiniz!
Çünki STR1 dəyişənin sonu 0Ah,0Dh və ‘$’ işarələri ilə qurtarmır və funksiya sətrin sonu olan ‘$’ işarəsini axtarır. Ona görə də STR2 sətri də birinci sətrin davamı kimi əks olunur.
Bu funksiyaların tətbiqinə aid misalları nəzərdən keçirək.
Misal 1: ;Programda push və pop emrlərindən və 21h-int kəsilməsinin ; 6h funksiyasindan istiafdə edilib SSEG SEGMENT STACK DB 256 DUP(?) TOP_S DW ? SSEG ENDS ;seqmentin sonu DSEG SEGMENT DB 13 DSEG ENDS ; seqmentin sonu CSEG SEGMENT ASSUME CS:CSEG, DS:DSEG, SS:SSEG START PROC FAR PUSH DS PUSH AX MOV BX,DSEG MOV DS,BX CALL MAIN MOV AH, 4CH INT 21H RET START ENDP MAIN PROC NEAR MOV AX,'H!' PUSH AX MOV AX,'LE' PUSH AX MOV AX,'VA' PUSH AX MOV AH,6 POP CX MOV DL,CH INT 21H MOV DL,CL INT 21H POP CX MOV DL,CH INT 21H MOV DL,CL INT 21H POP CX MOV DL,CH INT 21H MOV DL,CL INT 21H RET MAIN ENDP CSEG ENDS END START MİSAL 2: ;Programda 21h-In kəsilməsinin 1h və 9h ; funksiyalarindan Istifadə olunub SSEG SEGMENT STACK DB 256 DUP(?) TOP_S DW ? SSEG ENDS DSEG SEGMENT MESAGE1 DB 'VERILENI DAXIL ET:$' MESAGE2 DB 0AH,0DH,'$' VERI DB 50 DUP(?),'$' DSEG ENDS ; CSEG SEGMENT ASSUME CS:CSEG, DS:DSEG, SS:SSEG START PROC FAR PUSH DS PUSH AX MOV BX,DSEG MOV DS,BX CALL MAIN MOV AH,4CH INT 21H RET START ENDP ; prosedurun sonu MAIN PROC NEAR MOV CX,6 XOR SI,SI AA: MOV AH,9H LEA DX,MESAGE1 INT 21H MOV AH,1H INT 21H MOV VERI[SI],AL MOV AH,9H LEA DX,MESAGE2 INT 21H INC SI LOOP AA MOV AH,9H LEA DX,VERI INT 21H RET MAIN ENDP CSEG ENDS END START