Advertisement
Guest User

Untitled

a guest
Jan 28th, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.26 KB | None | 0 0
  1. rozkazy:
  2.  
  3. //daj na stos
  4. ROZKAZ dns;
  5. argumenty 0;
  6. czyt wys wei il;
  7. dws;
  8. wyws wea wyak wes;
  9. pisz wyl wea;
  10.  
  11. //(AK+((Ad))-> Ak
  12. ROZKAZ DOD;
  13. czyt wys wei il;
  14. wyad wea eni
  15. JEŻELI INT TO @przerw GDY NIE @norm;
  16. @norm czyt wys weja dod weak wyl wea KONIEC;
  17. @przerw czyt wys weja dod weak dws;
  18. wyls wes wyws wea;
  19. pisz wyap wel wea rint;
  20.  
  21. // (Ak)->(Ad)
  22. ROZKAZ ŁAD;
  23. czyt wys wei il;
  24. wyad wea wyak wes eni
  25. JEŻELI INT TO @przerw GDY NIE @norm;
  26. @norm pisz wyl wea KONIEC;
  27. @przerw pisz dws;
  28. wyls wes wyws wea;
  29. pisz wyap wea wel rint;
  30.  
  31. // Rozkaz maskowania adresowanie natychmiastowe
  32. ROZKAZ MAS;
  33. czyt wys wei il;
  34. wyad werm;
  35. wyl wea;
  36.  
  37. // Rozkaz maskowania adresowanie bezpośrednie
  38. ROZKAZ MSK;
  39. czyt wys wei il;
  40. wyad wea;
  41. czyt wys sa werm;
  42. wyl wea;
  43.  
  44. //(Ak)-((Ad))->Ak
  45. ROZKAZ ODE;
  46. czyt wys wei il;
  47. wyad wea eni
  48. JEŻELI INT TO @przerw GDY NIE @norm;
  49. @norm czyt wys weja ode weak wyl wea KONIEC;
  50. @przerw czyt wys weja ode weak dws;
  51. wyls wes wyws wea;
  52. pisz wyap wel wea rint;
  53.  
  54. //((Ad))->Ak
  55. ROZKAZ POB;
  56. czyt wys wei il;
  57. wyad wea eni
  58. JEŻELI INT TO @przerw GDY NIE @norm;
  59. @norm czyt wys weja przep weak wyl wea KONIEC;
  60. @przerw czyt wys weja przep weak dws;
  61. wyls wes wyws wea;
  62. pisz wyap wel wea rint;
  63.  
  64. //powrot
  65. rozkaz pwr;
  66. argumenty 0;
  67. czyt wys wei il;
  68. wyws wea iws;
  69. czyt wys as wea wel;
  70.  
  71. //pobierz ze stosu
  72. rozkaz pzs;
  73. argumenty 0;
  74. czyt wys wei il;
  75. wyws wea iws;
  76. czyt wys weja przep weak wyl wea;
  77.  
  78. // Odczyt rejestru maski
  79. ROZKAZ RMSK;
  80. czyt wys wei il;
  81. wyad wea;
  82. wyrm sa wes;
  83. pisz wyl wea;
  84.  
  85. // wczytanie znaku z UZ o numerze podanym jako argument rozkazu
  86. ROZKAZ WPR;
  87. czyt wys wei il;
  88. start wyak weja ode weak;
  89. @czekaj wyg weja ode weak JEŻELI Z to @dalej GDY NIE @czekaj;
  90. @dalej wyrb weja przep weak wyl wea;
  91.  
  92. // rozkaz WYP przerywalny
  93. ROZKAZ WYP;
  94. czyt wys wei il;
  95. wyak weja ode weak wes werb start;
  96. @czekaj wyg weja ode weak JEŻELI Z to @dalej GDY NIE @czekaj;
  97. @dalej eni Jeżeli Int to @przerw Gdy nie @norm;
  98. @norm wys weja przep weak wyl wea KONIEC;
  99. @przerw wys weja przep weak dws;
  100. wyls wes wyws wea;
  101. pisz wyap wel wea rint;
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111. PROGRAM 1:
  112.  
  113. SOB START
  114. SOB PRZE1 //przerwanie 1
  115. SOB PRZE2 //przerwanie 2
  116. SOB PRZE3 //przerwanie 3
  117. SOB PRZE4 //przerwanie 4
  118. POB ST0
  119. ŁAD IL1 //zerowanie ilości przer1
  120. ŁAD IL2 //zerowanie ilości przer2
  121. ŁAD IL3 //zerowanie ilości przer3
  122. ŁAD IL4 //zerowanie ilości przer4
  123. //PETLA WYPISUJACA
  124. START: WPR 1 //odczyt znaku
  125. ŁAD ZNAK //i załadowanie go do zmiennej
  126. PETLA: POB ZNAK//główna pętla wypisująca znak
  127. WYP 2 //w oczekiwaniu na przerwania
  128. SOB PETLA
  129. //===== PROCEDURY PRZERWAN =====
  130. PRZE1: DNS // akumulator na stos
  131. POB IL1 //pob aktualnej il przerwań1
  132. DOD ST1 //zapam ilość przerwań1 ++
  133. ŁAD IL1 //zapisanie nowej ilości przer1
  134. ODE ST5 //if<0 -nie było jeszcze 5 prze
  135. SOM POWROT //if nie było 5 przer, skok
  136. POB ST1 //if było 5, w AK numer przerw
  137. STP //KONIEC PROGRAMU
  138. PRZE2: DNS
  139. POB IL2
  140. DOD ST1
  141. ŁAD IL2
  142. ODE ST5
  143. SOM POWROT
  144. POB ST2
  145. STP
  146. PRZE3: DNS
  147. POB IL3
  148. DOD ST1
  149. ŁAD IL3
  150. ODE ST5
  151. SOM POWROT
  152. POB ST3
  153. STP
  154. PRZE4: DNS
  155. POB IL4
  156. DOD ST1
  157. ŁAD IL4
  158. ODE ST5
  159. SOM POWROT
  160. POB ST4
  161. STP
  162. // POWROT Z PRZERWANIA
  163. POWROT: PZS//pobranie akumulatora ze stosu
  164. PWR //powrót z przerwa, zwrot licznika
  165. //===== DEKLARACJE=====
  166. ST0: RST 0 // stała zero
  167. ST1: RST 1 // stała jeden
  168. ST2: RST 2 // stała dwa
  169. ST3: RST 3 // stała trzy
  170. ST4: RST 4 // stała cztery
  171. ST5: RST 5 // stała pięć
  172. IL1: RPA // zmienna przech il przerwań 1
  173. IL2: RPA // zmienna przech il przerwań 2
  174. IL3: RPA // zmienna przech il przerwań 3
  175. IL4: RPA // zmienna przech il przerwań 4
  176. ZNAK: RPA // zmienna przech wczytany znak
  177.  
  178. PROGRAM 2:
  179.  
  180. SOB START
  181. SOB PRZER1 //przerwanie 1
  182. SOB PRZER2 //przerwanie 2
  183. SOB PRZER3 //przerwanie 3
  184. SOB PRZER4 //przerwanie 4
  185. POB ST0
  186. ŁAD IL_PRZER1 //zerowanie ilości przerwan1
  187. ŁAD IL_PRZER2 //zerowanie ilości przerwan2
  188. ŁAD IL_PRZER3 //zerowanie ilości przerwan3
  189. ŁAD IL_PRZER4 //zerowanie ilości przerwan4
  190. START: WPR 1 //pobranie wprowadzonego znaku
  191. ŁAD ZNAK //zapisanie go w zmiennej
  192. PETLA: POB ZNAK //pętla wypisująca pobrany znak
  193. WYP 2 // w oczekiwaniu na przerwania
  194. SOB PETLA //następne wywołanie pętli
  195. // ==== P R O C E D U R Y przerwań ====
  196. PRZER1: DNS //akumulator na stos
  197. RMSK MASKA_TMP //odczyt maski, zapis w zmiennej
  198. MSK MASKA_1 //maskowanie 1111
  199. POB MASKA_TMP //pobranie zapisanej maski
  200. DNS // i umieszczenie jej na stosie
  201. POB ST3 //pobranie ilości wypisywanej liczby
  202. ŁAD LICZNIK_1 //ład do licz pętli wypisującej
  203. // wypisanie 111
  204. PISZ_1: POB ASCII_1 //pętla wypisująca 1 (49 w ASCII)
  205. WYP 2 //wyprowadzenie jedynki
  206. POB LICZNIK_1
  207. ODE ST1 //licznik pętli --
  208. ŁAD LICZNIK_1 //nowy licznik pętli
  209. SOZ NEXT_1 //gdy już koniec pętli skok
  210. SOB PISZ_1 //gdy nie koniec, ponowne wypisanie
  211. //kontynuowanie procedury, po wypisaniu 111
  212. NEXT_1: POB IL_PRZER1 //pob aktualnej il zglosz przer1
  213. DOD ST1 //zwiększenie ilości zgłosz przerwań
  214. ŁAD IL_PRZER1 //zapis nowej ilości zgłoszeń
  215. ODE ST5 //sprawdzenie czy przerwano 5 razy
  216. SOM POWR_1 //gdy nie zgłoszono 5 przer, skok
  217. POB ST1 //gdy zgłoszono 5 przer, 1 do AK
  218. STP // KONIEC PROGRAMU
  219. //powrót z procedury przerwania
  220. POWR_1: PZS //pobranie poprzedniej maski ze stosu
  221. ŁAD MASKA_TMP //zapisanie w zmiennej
  222. MSK MASKA_TMP //maskowanie poprzednią maską
  223. PZS //pobranie akumulatora ze stosu
  224. PWR //powrót z przerw, zwrot licznika ze stosu
  225. // ANALOGICZNIE WYGLĄDA OPIS PROCEDUR PRZERWAŃ 2, 3, 4
  226. PRZER2: DNS
  227. RMSK MASKA_TMP
  228. MSK MASKA_2
  229. POB MASKA_TMP
  230. DNS
  231. POB ST5
  232. ŁAD LICZNIK_2
  233. PISZ_2: POB ASCII_2
  234. WYP 2
  235. POB LICZNIK_2
  236. ODE ST1
  237. ŁAD LICZNIK_2
  238. SOZ NEXT_2
  239. SOB PISZ_2
  240. NEXT_2: POB IL_PRZER2
  241. DOD ST1
  242. ŁAD IL_PRZER2
  243. ODE ST5
  244. SOM POWR_2
  245. POB ST2
  246. STP
  247. POWR_2: PZS
  248. ŁAD MASKA_TMP
  249. MSK MASKA_TMP
  250. PZS
  251. PWR
  252. PRZER3: DNS
  253. RMSK MASKA_TMP
  254. MSK MASKA_3
  255. POB MASKA_TMP
  256. DNS
  257. POB ST7
  258. ŁAD LICZNIK_3
  259. PISZ_3: POB ASCII_3
  260. WYP 2
  261. POB LICZNIK_3
  262. ODE ST1
  263. ŁAD LICZNIK_3
  264. SOZ NEXT_3
  265. SOB PISZ_3
  266. NEXT_3: POB IL_PRZER3
  267. DOD ST1
  268. ŁAD IL_PRZER3
  269. ODE ST5
  270. SOM POWR_3
  271. POB ST3
  272. STP
  273. POWR_3: PZS
  274. ŁAD MASKA_TMP
  275. MSK MASKA_TMP
  276. PZS
  277. PWR
  278. PRZER4: DNS
  279. RMSK MASKA_TMP
  280. MSK MASKA_4
  281. POB MASKA_TMP
  282. DNS
  283. POB ST9
  284. ŁAD LICZNIK_4
  285. PISZ_4: POB ASCII_4
  286. WYP 2
  287. POB LICZNIK_4
  288. ODE ST1
  289. ŁAD LICZNIK_4
  290. SOZ NEXT_4
  291. SOB PISZ_4
  292. NEXT_4: POB IL_PRZER4
  293. DOD ST1
  294. ŁAD IL_PRZER4
  295. ODE ST5
  296. SOM POWR_4
  297. POB ST4
  298. STP
  299. POWR_4: PZS
  300. ŁAD MASKA_TMP
  301. MSK MASKA_TMP
  302. PZS
  303. PWR
  304. // ====== DEKLARACJE =====
  305. ZNAK: RPA //miejsce na pobrany znak do wyp
  306. ST0: RST 0 //stała zero
  307. ST1: RST 1 //stała jeden
  308. ST2: RST 2 //stała dwa
  309. ST3: RST 3 //stała trzy
  310. ST4: RST 4 //stała cztery
  311. ST5: RST 5 //stała pięć
  312. ST7: RST 7 //stała siedem
  313. ST9: RST 9 //stała dziewięć
  314. LICZNIK_1: RPA //licznik pętli wypro {111}
  315. LICZNIK_2: RPA //licznik pętli wypro {22222}
  316. LICZNIK_3: RPA //licznik pętli wypro {3333333}
  317. LICZNIK_4: RPA //licznik pętli wypr {444444444}
  318. MASKA_TMP: RPA //zmienna pomoc do przech maski
  319. IL_PRZER1: RPA //ilość przerwań priorytetu 1
  320. IL_PRZER2: RPA //ilość przerwań priorytetu 2
  321. IL_PRZER3: RPA //ilość przerwań priorytetu 3
  322. IL_PRZER4: RPA //ilość przerwań priorytetu 4
  323. ASCII_1: RST 49 //’1’ w ASCII, do wypisywania 1
  324. ASCII_2: RST 50 //’2’ w ASCII, do wypisywania 2
  325. ASCII_3: RST 51 //’3’ w ASCII, do wypisywania 3
  326. ASCII_4: RST 52 //’4’ w ASCII, do wypisywania 4
  327. MASKA_1: RST 15 //MASKA 1111
  328. MASKA_2: RST 7 //MASKA 0111
  329. MASKA_3: RST 3 //MASKA 0011
  330. MASKA_4: RST 1 //MASKA 0001
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement