Advertisement
Guest User

ex2.asm

a guest
Oct 23rd, 2014
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.84 KB | None | 0 0
  1. org $0010 ;okreslenie poprawnych adresow segmentow
  2. db $00,$90,$00,$9F,$00,$a0
  3.  
  4. org $0090 ;wartosci w pierwszym segmencie
  5. db $0f,$01,$02,$03,$04,$05,$06,$07,$a0,$a1,$a2,$a3,$a4,$dd,$bc,$aa
  6. org $00a0 ;wartosci w drugim segmencie
  7. db $b0,$b1,$b2,$b3,$b4,$ee,$ad,$99,$0a,$01,$02,$03,$04,$05,$06,$07
  8.  
  9. org $0000 ;wartosci dla warunkow sprawdzenia
  10. db $00,$ff,$11
  11.  
  12. org $0020
  13. ;poczatek programu, wczytanie poczatku pierwszego obszaru i czyszczenie pomocniczego adresu
  14. begin:
  15. ldaa 13h ;koniec pierwszego obszaru
  16. ldab 15h ;poczatek drugiego obszaru
  17. cba ;porownanie, czy zachodza na siebie (A-B)
  18. bge close2 ;skok do zapisu z 11h
  19. blt close0 ;jezeli ok, to skok do close0 i zapis do rejestru koncowego 00h
  20. back:
  21. ldx 10h ;wczytanie pierwszej wartosci, do sprawdzenia czy dobry zakres, jezeli zaczyna sie od 00h, to zle
  22. clra
  23. ldaa 0,X
  24. cmpa 05h ;sprawdzenie czy nie rowna sie zero
  25. beq close1 ;jezeli pierwsza = 0, to skok do koniec programu
  26. clra
  27. clrb
  28. ldx 10h ;wczytanie do rej index poczatku przestrzeni z wartosciami
  29. clr 16h ;czyszczenie 0016h, pomocnicza pamiec na pierwszy obszar
  30. clr 18h ;czyszczenie 0018h, pamiec na drugi obszar pomocnicza
  31. ldaa 0,X ;do acc A wczytanie wartosci z adresu w rej X
  32. stx 16h ;zapis do 16h wartosci adresu z X
  33. ldx 14h ;wczytanie do rej X poczatku przestrzeni z drugimi wartosciami
  34. ;suma obu wartosci i zapis wyniku do drugiej wartosci
  35. add:
  36. ldab 0,X ;do acc B wczytanie drugiej wartosci do dodania
  37. stx 18h ;zapis do 18h ostatniej drugiej wartosci dodawanej
  38. aba ;A=B+A
  39. staa 0,X ;zapis wartosci dodanej do komorki z druga wartoscia
  40. clrb ;czyszczenie akumulatora B, na koncu programu tam wyswietla sie status
  41. ;sprawdzenie czy koniec puli wartosci
  42. clra
  43. ldaa 13h ;zaladowanie do A adresu konca obszaru
  44. ldab 17h ;zaladowanie adresu ostatniej wykorzystanej wartosci z pierwszej puli
  45. cba ;porownanie czy wartosc 16h jest rowna ostatniemu adresowi
  46. beq end_program ;jezeli Z=1, to skok do konca programu
  47. clra ;czyszczenie A, zeby wczytac ostatnia pierwsza wartosc
  48. ldaa 17h
  49. ;jezeli nie skonczyl program, to zwiekszam o 1 adres pierwszego i drugiego obszaru
  50. inca ;wartosc w acc A (adres pierwszej wartosci) + 1
  51. staa 17h
  52. ldx 18h ;wczytanie do inkrementacji ostatniej wartosci sumowania z drugiego obszaru
  53. inx ;wartosc w reg X (adres drugiej wartosci) + 1
  54. stx 18h
  55. ldx 16h
  56. ldaa 0,X
  57. ldx 18h
  58. jmp add ;skok bezwarunkowy do wczytania pierwszej wartosci do sumowania
  59. ;sprawdzenie wszystkich warunkow wyswietlenia do acc B
  60. ;ffh gdy blednie pierwszy adres, 11h gdy gdy obszary zachodza na siebie, 00h gdy ok
  61. close0: ;gdy wszystko ok
  62. clrb
  63. clr 00h
  64. ldab 00h
  65. stab 00h
  66. jmp back
  67. close1: ;ffh
  68. clrb
  69. clr 00h
  70. ldab 01h
  71. stab 00h
  72. jmp end_program
  73. close2: ;11h
  74. clrb
  75. clr 00h
  76. ldab 02h
  77. stab 00h
  78. jmp back
  79. end_program:
  80. ldab 00h
  81. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement