Menu

Daxil olun Qeydiyyat

Assembler proqramlaşdırma dili

Displeyin ekranınna çıxışın təşkili

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, ‘$’
Bu proqram fraqmenti icra olunduqdan sonra ekranda aşağıdakı birləşmiş sətr ekranda əks olunacaq:

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


Bizi dəstəkləyənlər