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