Laborator 3
Enunt
;------ CONSTANTE --------------------
MEM_POS = 0800H
DS_SEG = 0080H
IDIS_ASCII = 00AH
IDIS_STR = 0BH
IKEYBOARD = 08H
ITIMER = 0DH
ISRL = 14H
;----- 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, 01100011B
INT ISRL
; set DTR
MOV AH, 4
MOV AL, 1
INT ISRL
; display DSR
MOV SI, OFFSET dsr
INT IDIS_STR
; timer
MOV AX, 1000
INT ITIMER
; find DSR
loop_dsr:
MOV AH, 3
INT ISRL
AND AH, 00100000b
JZ loop_dsr
; display CTS
MOV SI, OFFSET cts
INT IDIS_STR
;loop_cts:
; ;timer
; MOV AX, 500
; INT ITIMER
;
; ; find CTS
; MOV AH, 3
; INT ISRL
; AND AH, 00010000b
; JZ loop_cts
;
; ; send data
; INT IKEYBOARD
; MOV CL, 5
; ADD AL, 65
; MOV BL, AL
; INT IDIS_ASCII
;
; MOV AH, 1
; MOV AL, BL
; INT ISRL
;
; JMP loop_cts
MOV BX, 0
loop_str:
; check if message is over
CMP msg[bx], 00H
JZ end_loop_str
; timer
MOV AX, 500
INT ITIMER
; find CTS
MOV AH, 3
INT ISRL
AND AH, 00010000b
JZ loop_str
;MOV AL, 65
;INT IDIS_ASCII
; send char from string
MOV AH, 1
MOV AL, msg[bx]
INC BX
INT ISRL
JMP loop_str
end_loop_str:
; display msg
MOV SI, OFFSET msg
INT IDIS_STR
clr DB ' ', 00H
dsr DB 'DSR ', 00H
cts DB 'CTS ', 00H
msg DB 'Hello world', 00H
CODE ENDS
END START