Curs 8 Setul de Instructiuni 8086: Exemple
Curs 8 Setul de Instructiuni 8086: Exemple
desecventa
instructiuni
de bazacare
8086/88.
EXEMPLE.
6.Setul
Scrieti
de program
face suma
primelor N <256
numere naturale in AX (in 2 moduri).
7. Scrieti o secventa de program care apeleaza de 50 de ori
subrutina Call_me
8. Scrieti secventa de program care umple o zona de 100 de
octeti cu caracterul $. Ce alta varianta ofera asamblorul?
9. In memorie se gasesc 2 siruri adiacente SIR1 si SIR2 de
lungime l1, l2 <256. Se cere secventa de program care
genereaza sirul intersectie INT DB (max l1,l2) DUP(?). Se cer 2
variante.
Setul de instructiuni
de baza 8086/88.
EXEMPLE.
10.Cautati
exemple de instructiuni
de 2-6 bytes
care sa aiba
efectul instructiunii NOP.
11. Dati exemplu de secvente de program care genereaza
secvente pseudoaleatoare.
12. Cum puteti face ca C=Z?
13. Scrieti o secventa de program care sa permita realizarea unor
bucle imbricate (2).
15.
and al, 0
or al, 1
or al, 80h
and al, 7Fh
stc
clc
; set Zero
; clear Zero
; set Sign
; clear Sign
; set Carry
; clear Carry
; set Overflow
or eax, 0
; clear Overflow
Iterativ
function gcd(a, b)
function gcd(a, b)
if a = 0 return b
while b 0
while b 0
t := b
if a > b
b := a mod b
a := a b
a := t
else
return a
b := b a
return a
Recursiv
function gcd(a, b)
if b = 0 return a
else return gcd(b, a mod b)
C/C++
int gcd(int a, int b)
{
return ( b == 0 ? a : gcd(b, a % b) );
}
#include <stdio.h>
#include <stdlib.h>
//RECURSIV
int GCD(int a, int b)
{
return ( b == 0 ? a : GCD(b, a % b) );
}
/* ITERATIV
int GCD(int x, int y)
{
int wX = x;
int wY = y;
int tempX;
while ( wY > 0 )
{
tempX = wX;
wX = wY;
wY = tempX % wY;
}
return(wX);
}*/
int main()
{
int inputX;
int inputY;
int inputSuccess;
printf("Please enter x: ");
inputSuccess = scanf("%d", &inputX);
printf("Please enter y: ");
inputSuccess = scanf("%d", &inputY);
printf("GCD of %d and %d is %d\n", inputX, inputY, GCD(inputX,inputY));
exit(EXIT_SUCCESS);
}
10