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