Guest User

Untitled

a guest
Jun 23rd, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. •void interrupt ( int i, int CR1 ) { //ohjelman keskeytys
  2. mem [CURRENT..CURRENT+6] = //Tallentaa nykyhetken
  3. (PC, RO, R1, TIMER, BASE, LlMIT, PSW);
  4. PSW.MASK = true; PSW.USER-MODE = false;
  5. R1 = CR1 ; PC = i; BASE = 0; LlMIT = 9999999; //aloituspiste 0, pituus 9999999;
  6. }
  7. while ( true ) {
  8. if ( "ulkoinen keskeytys tulossa" && !PSW.MASK )
  9. interrupt ( 0, "laitenumero"); //Keskeytyksen keskeytys laitteelle
  10. TIMER = TIMER-1 ;
  11. if ( PC > LlMIT ) interrupt (1, invalid-address ); //jos muistin pituus pienempi, keskeytetään
  12. INSTR = mem[BASE+PC]; //muistin aloituspiste + PC pituus
  13. PC = PC+1;
  14. switch ( INSTR.OPCODE ) {
  15.  
  16.  
  17. • caseST1:
  18. if ( INSTR.ADDR > LlMIT ) //jos käskyn osoite lyhyempi, keskeytetään
  19. interrupt (1, invalid-address);
  20. else //Muulloin
  21. mem[base+INSTR.ADDR] = R1 ;
  22. break;
  23. case SVC: interrupt (2, INSTR.ADDR);
  24. break;
  25. case RETI:
  26. (PC, RO, R1. TIMER, BASE. LlMIT, PSW) =
  27. mem [CURRENT..CURRENT+6];
  28. break;
  29. case SET -CURRENT: //asetetaan nykyinen pino-osoitin
  30. if ( PSW.USER-MODE ) //jos tilasanarekisteri käyttäjämoodissa, keskeytetään
  31. interrupt (1, privileged-instruction);
  32. else //Muulloin
  33. CURRENT = mem[INSTR.ADDR]; //ympäristön nykyhetki on muistista käskyn osoite
  34. break; }}
Add Comment
Please, Sign In to add comment