Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- PAGE 70,166
- 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
- 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
- ;calculare cmmdc
- INT IKEYBOARD ; citim primul numar
- MOV CL,0 ; mutam poiteru de pozitie pe afisaj
- MOV A,AL ; il salvam in variabila A
- INT IDIS_BYTE ; il afisam si pe placa
- INT IKEYBOARD ; citim al 2-lea numar
- MOV CL,0 ; mutam poiteru de pozitie pe afisaj
- MOV B,AL ; il salvam in variabila B
- INT IDIS_BYTE ; il afisam si pe placa
- ; Loop-ul de calculare
- TWHILE: CMP A,B ; comparam a si b
- JE FINISH ; daca sunt egale sare la terminare
- ; daca nu intra si face operatii cu ele
- CMP A,B
- JG AGREATER ; sari la label-ul ala daca A > B ZF = 0 (parca)
- ; Daca nu sare la labelul ala inseamna ca A < B si scade din B pe A
- SUB B,A ; daca b mai mare ca a scadem pe a din b
- AGREATER:
- SUB A,B ; DAca a > b scadem pe b din a
- ; reintoarcere in loop
- JMP TWHILE
- ; finish afisam rezultatul
- FINISH:
- MOV CL,,0
- MOV AL,A ; incarcam in al rezultatul
- INT IDIS_BYTE ; afisam rezultatul
- MSG DB ' ',00H ;declararea unei variabile sir de caractere
- A DB ?
- B DB ?
- CODE ENDS
- END START
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement