Laborator 1

Sa se calculeze (x3 - y)/z

PAGE 70,166

;Definirea de constante utilizate in program

MEM_POS = 0800H ;adresa de inceput a programului in segment

DS_SEG = 0080H ;segmentul de date

IKEYBOARD = 08H ;intrerupere specifica placii pentru citirea de la tastatura

IDIS_BYTE = 09H ;intrerupere specifica placii pentru afisarea unui octet

IDIS_STR = 0BH ;intrerupere specifica placii pentru afisarea unui sir de caractere

;segmentul de cod

;se comunica asamblorului în ce segment trebuie cautate simbolurile

;registrul CS indica spre segmentul de cod => acolo se afla codul

;registrul DS indica tot spre segmentul de cod => tot acolo se vor declara si variabile – vezi declararea variabilei ;MSG

CODE SEGMENT

ASSUME CS:CODE, DS:CODE

ORG 0H ;codul incepe de la offsetul 0h in segmentul de cod

;inceputul programului

START:

;partea de initializare a segmentului de date !!

MOV AX,DS_SEG

MOV DS,AX ;se incarca segmentul de date

;afisarea unui sir de caractere

MOV SI,OFFSET MSG

INT IDIS_STR ;display message MSG

;bucla TLOOP in care se citeste un caracter si se afiseaza pe display

TLOOP:

INT IKEYBOARD ; read x

MOV x, AL

;mov CL, 0

;int 09h

mov AL, x

MUL x ; ax = al * al

MOV BX, 0 ; ax = x^2 -> bx

mov BL, x

MUL BX

MOV X3, AX


MOV BL, AH

MOV CL, 2

INT 09H

MOV AL, BL

MOV CL, 0

INT 09H


INT IKEYBOARD ; read y

MOV y, AL

mov CL, 5

int 09h

mov bx, 0

mov bl, y

SUB X3, bx

MOV BX, X3

MOV rez, BX


INT IKEYBOARD ; read z

MOV z, AL

mov CL, 8

int 09h

mov ax, rez

DIV z


mov final, Ax

MOV BL, AH

MOV CL, 13

INT 09H

MOV AL, BL

MOV CL, 11

INT 09H


JMP TLOOP

MSG DB 'KB, hex key: xx ',00H ;declararea unei variabile sir de caractere

x db ?

X3 DW 0

y db ?

z dw ?

rez DW 0

final DW 0

CODE ENDS

END START