Laborator 2
; sum (i=1->n) (i^2-1) for n=5a+b/2+rest
;------ CONSTANTE --------------------
MEM_POS = 0800H
DS_SEG = 0080H
IKEYBOARD = 08H ;intrerupere specifica placii pentru citirea de la tastatura
IDIS_BYTE = 09H ;intrerupere specifica placii pentru afisarea unui octet
IDIS_STR = 0BH
;----- CODE SEGMENT
CODE SEGMENT
ASSUME CS:CODE, DS:CODE
ORG 0H
START: MOV AX,DS_SEG ;initializare
MOV DS,AX ; initializare
MOV CL, 0
MOV SI, offset clr
INT IDIS_STR
INT IKEYBOARD
MOV a, AL
MOV CL, 0
INT IDIS_BYTE
INT IKEYBOARD
MOV b, AL
MOV CL, 3
INT IDIS_BYTE
MOV AL, a
MOV BL, 5
MUL BL
ADD n, AL
MOV AH, 0
MOV AL, b
MOV BL, 2
DIV BL
ADD n, AL
ADD n, AH
MOV AL, n
MOV CL, 6
INT IDIS_BYTE
MOV CH, 0
MOV CL, n
start_loop:
CMP CX, 0
JZ end_loop
MOV AH, 0
MOV AL, CL
MUL AX
SUB AX, one
ADD res, DX
ADD res, AX
LOOP start_loop
end_loop:
MOV BX, res
MOV AL, BH
MOV CL, 9
INT IDIS_BYTE
MOV AL, BL
MOV CL, 11
INT IDIS_BYTE
INT IKEYBOARD
JMP START
a DB 0
b DB 0
n DB 0
res DW 0
one DW 1
clr DB ' ',00H
CODE ENDS
END START