Sunteți pe pagina 1din 2

Mediu de simulare CPUsim

CPUsim este un mediu care permite simularea funcționării unei unități


centrale de prelucrare a calculatorului numeric.
Acest program are următoarele facilităţi:
- Permite definirea unui CPU propriu utilizatorului;
- Permite definirea unui limbaj de asamblare şi a unui limbaj maşină al
utilizatorului.
CPUsim are implementat un calculator simplu denumit Wombat1 şi un
limbaj de asamblare elementar pentru acest calculator, care permit rularea unor
programe simple.
Aceste programe pot fi rulate normal sau în regim pas cu pas. In regim
pas cu pas programele pot fi rulate la nivel de instrucțiune sau la nivel de
microoperație. O microoperație reprezintă toate operațiile care por fi executate
într-un ciclu de ceas.
Pentru început vom utiliza calculatorul Wombat1, dar pe măsură ce
aplicațiile vor deveni mai complexe vom adăuga facilitățile necesare.

Procesorul calculatorului didactic Wombat1 are definite următoarele


registre:

pc (program counter) - memorează adresa instrucțiunii următoare;


acc (accumulator) – registru acumulator;
ir (instruction register) – registrul de instrucțiuni;
mar (memory address register) – registrul de adrese;
mdr (memory data register) – registrul de date;
status – registrul de stare.

Programul ce urmează să fie executat pe calculatorul Wombat1 este adus


în fereastra W1-0.a. Limbajul de asamblare a calculatorului Wombat1 este
compus din 12 instrucțiuni. Aceste instrucţiuni ocupă 16 biţi dintre care primii 4
(0 - 3) reprezintă codul operației, iar ceilalți 12 – câmpul de adresă (4 – 15). In
continuare se prezintă aceste instrucțiuni împreună cu corespondentul în limbaj
mașină al codului operației.

Mnemonic Cod operaţie Lung. câmp Semnificaţie


stop 0 16 opreşte execuţia programului
load 1 4 12 transferă data din memorie în acumulator
store 2 4 12 transferă data din acumulator în memorie
read 3 4 (12) încarcă data de la consolă şi o depune în acumulator
write 4 4 (12) trimite la consolă data din acumulator
add 5 4 12 adună data din memorie la acumulator. Rez. în acumul.
subtract 6 4 12 scade data din memorie din acumulator. Rz. în acumulator
multiply 7 4 12 înmulţeşte data din memorie cu acumulatorul. Rez. în ac.
devide 8 4 12 împarte data dim memorie la acumulator. Rez. în acumul.
jump 9 4 12 salt necondiţionat la adresă
jmpz A 4 12 salt la adresa dacă acumulaorul este 0
jmpn B 4 12 salt la adresă dacă acumulatorul este negativ
Pentru alocare de memorie şi inițializare se utilizează instrucţiunea
Sum: .data 2 0;
prin care se informează asamblorul că variabilei sum i se rezervă în memorie doi
octeţi şi că valoarea iniţială a variabilei este 0.
Acum putem să începem simularea. Se activează fereastra W1-0.a și din
Execute se alege comanda Assamble & load. Programul este asamblat şi în
memorie este încărcat programul obiect, fapt ușor de observat în fereastra RAM
Main. Din Execute se alege acum comanda Debug Mode, care permite
executarea programului pas cu pas. In partea de sus a ecranului apare acum un
nou tool bar. Acționarea comenzii Step by instr, permite execuția programului
instrucțiune cu instrucțiune, iar acționarea comenzii Step by micro, ne dă
posibilitatea să executăm programul microoperație cu microoperație.

S-ar putea să vă placă și