Kompilator
5. Wnioski.
if (test = =true)
cout << "MOV AX,";
test=false;
mpLewyNP->DrukujNP(stream);
cout << endl;
Warunek if (test = =true) powoduje wpisanie pierwszej wartości do akumulatora. Operacja ta jest wykonywana na początku tylko dla pierwszego działania wykonywanego w danym równaniu.
cout << "MOV BX,";
mpPrawyNP->DrukujNP(stream);
cout << endl;
stream << "SUB AX,BX";
return;
Następne Dane są wpisywane kolejno do BX ze wzgledu na to iż wynik operacji jest przechowywany w akumulatorze następne operacje są wykonywane na akumulatorze i na wartości rejestru BX.
if (test = = true)
cout << "MOV AX,";
test=false;
mpLewyNP->DrukujNP(stream);
cout << endl;
cout << "MOV BX,AX";
cout << endl;
cout << "MOV CX,";
mpPrawyNP->DrukujNP(stream);
cout << "DALEJ:";
stream << "MUL BX";
cout << "LOOP DALEJ";
return;
Nieco inaczej zachowuje sie procedura tłumacząca potęgowanie. Przypisanie zmiennych odbywa się następująco:
1.Potegowana jest zawartość rejestru AX.
2.W rejestrze BX znajduje się kopia początkowej zawartości rejestru AX wykorzystywana podczas mnożenia.
3. W rejestrze CX znajduje się liczba okreslająca wykładnik potęgi.
W pętli do momentu aż zawartość CX=0 jest wykonywana operacja MUL BX czyli mnożenie zawartości rejestru AX przez zawartość rejestru BX.
cout << endl;
cout <<"Wartosc wyrazenia wynosi: "<< WyrazArytmONP.DajWartoscONP();
cout << endl;
cout << endl;
cout <<"ASSEMBLER: "<< endl;
cout << endl;
cout << ".model tiny";
cout << endl;
cout << ".code";
cout << endl;
cout << "org 100h";
cout << endl;
cout << "start:";
cout << endl;
WyrazArytmNP.DrukujNP();
cout << "end start";
cout << endl;
Powyższy fragment programu uzupełnia wyświetlany kod o podstawowe dyrektywy, dzięki czemu program jest w pełni użyteczny.
.model tiny - oznacza model pamięci, w którym zarówno kod (cs) jak i dane (ds) programu muszą się zmieścić w 64k.
.code - oznacza code segment - segment kodu programu.
org 100h - program będzie się zaczynać od CS:0100H
Start: - etykieta "początek"
Odwrotna notacja polska bardzo ułatwia wykonywanie na komputerze obliczeń z nawiasami i zachowaniem kolejności działań. W odwrotnej notacji polskiej znak wykonywanej operacji jest umieszczany po argumentach tej operacji. Zapis ten pozwala na całkowitą rezygnację z użycia nawiasów w wyrażeniach, jako że jednoznacznie określa kolejność wykonywanych działań.
Zastosowanie odwrotnej notacji polskiej znacznie upraszcza przebieg translacji argumentów wejściowych na składnie języka asembler.