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