Laborator 4

Sa se transmita caractere prin interfata seriala, si sa se afiseze numarul de vocale

;------ CONSTANTE --------------------

MEM_POS = 0800H

DS_SEG = 0080H

IDIS_ASCII = 00AH

IDIS_STR = 0BH

IKEYBOARD = 08H

ITIMER = 0DH

ISRL = 14H

IDIS_HEX = 09H

;----- CODE SEGMENT

CODE SEGMENT

ASSUME CS:CODE, DS:CODE

ORG 0H

START: MOV AX,DS_SEG ;initializare

MOV DS,AX ; initializare

; clear display

MOV SI, OFFSET clr

INT IDIS_STR

; init

MOV AH, 0

MOV AL, 00001111B

INT ISRL

; set DTR

MOV AH, 4

MOV AL, 1

INT ISRL

loop_dsr:

; display CHECK DSR

MOV SI, OFFSET dsr

INT IDIS_STR

; timer

MOV AX, 1000

INT ITIMER

; find DSR

MOV AH, 3

INT ISRL

AND AH, 00100000b

JZ loop_dsr

loop_receive:

; set RTS

MOV AH, 4

MOV AL, 00000011b

INT ISRL

; read character

MOV AH, 2

INT ISRL

MOV x, AL

; clear RTS

MOV AX, 0401H

;MOV AL, 00000001b

INT ISRL

; count if vowel

MOV BX, 0

loop_vowel:

CMP vowels[BX], 00h

JE end_loop_vowel

MOV AL, x

CMP AL, vowels[BX]

JNE label1

INC cnt

label1:

INC BX

JMP loop_vowel

end_loop_vowel:

MOV CL, 10

MOV AL, cnt

INT IDIS_HEX

JMP loop_receive

clr DB ' ', 00H

dsr DB 'CHECK DSR ', 00H

msg DB 'Hello world', 00H

vowels DB 'aeiou', 00H

x DB 0

cnt DB 0

CODE ENDS

END START