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