rootuss

6 zadanie

Mar 30th, 2020
698
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ljmp start
  2. org 0100h
  3.  
  4. start:
  5.     ; wpisanie dziesieciu wartosci
  6.     mov a,#03h
  7.     mov dptr,#3000h
  8.     movx @dptr,a
  9.    
  10.     mov a,#02h
  11.     inc dptr
  12.     movx @dptr,a
  13.    
  14.     mov a,#02h
  15.     inc dptr;
  16.     movx @dptr,a
  17.    
  18.     mov a,#08h
  19.     inc dptr
  20.     movx @dptr,a
  21.    
  22.     mov a,#06h
  23.     inc dptr
  24.     movx @dptr,a
  25.    
  26.     mov a,#01h
  27.     inc dptr
  28.     movx @dptr,a
  29.    
  30.     mov a,#07h
  31.     inc dptr
  32.     movx @dptr,a
  33.    
  34.     mov a,#04h
  35.     inc dptr
  36.     movx @dptr,a
  37.    
  38.     mov a,#09h
  39.     inc dptr
  40.     movx @dptr,a
  41.    
  42.     mov a,#03h
  43.     inc dptr
  44.     movx @dptr,a
  45.  
  46.     mov dptr,#03000h        ; zapis do dprt miejsca w pamieci z poczatkiem tablocy
  47.    
  48.     movx a,@dptr            ; wartosc z komorki pamieci, na która wzkazuje teraz dptr bedzie nowym
  49.     mov r6, a               ; 1) minimum
  50.     mov r7, a               ; 2) maksimum
  51.    
  52.     inc dptr                ; przejscie do kolejnego elementu tablicy (komórki pamieci)   
  53.    
  54.     mov r0,#9               ; iterator petli (r0)
  55.    
  56. petla:                 
  57.     movx a,@dptr            ; wartosc z komorki pamieci, na która wzkazuje teraz dptr bedzie zapisana w akumulatorze              
  58.     mov r2,a                ; zapis powyzszej wartosci do r2       
  59.     inc dptr                ; przejscie do kolejnego elementu tablicy (komórki pamieci)           
  60.    
  61. ;------------MAX------------   
  62.     mov a,r7                ; zapis do akumulatora aktualnego maksimum
  63.     subb a,r2               ; wykonanie odjecia: aktuane maksimum - aktualnie przetwarzana wartosc
  64.     mov a,#00h         
  65.     addc a,#00h             ; jesli ta rozniza bedzie ujemna to mamy zapozyczenie
  66.                             ; czyli inczej mówiac nowy element jest wiekszy niz aktualne maksimum
  67.     jnz zmien_max           ; wtedy zmianiamy maksimum w r7
  68. ;---------------------------       
  69.     powrot1:
  70.    
  71. ;------------MIN------------   
  72.     mov a,r2                ; zapis aktualnie przetwarzanej liczby do akumulatora
  73.     subb a,r6               ; wykonanie odjecia: aktualnie przetwarzanej wartosci - aktualne minimum
  74.     mov a,#00h         
  75.     addc a,#00h             ; jesli ta rozniza bedzie ujemna to mamy zapozyczenie
  76.                             ; czyli inczej mówiac nowy element jest mniejszy niz aktualne minimum
  77.     jnz zmien_min           ; wtedy zmianiamy minimum w r6
  78. ;---------------------------
  79.     powrot2:
  80.    
  81.     dec r0                  ; zmniejszenie licznika
  82.     mov a,r0                ; zapis wartosci licznika w akumulatorze   
  83.     jnz petla               ; dopoki akumulator jest wiekszy od 0 (wlasciwie !=0) to
  84.                                 ;przechodzimy do ponownego wywolania petli
  85.                                
  86.     jz przejdz_na_koniec_programu ; jesli a==0 to przejscie na koniec programu
  87.  
  88.  
  89.     zmien_max:              ; wykonanie zmiany maksimum w r7
  90.         mov a,r2
  91.         mov r7, a    
  92.         jnz powrot1         ; powrot do petli
  93.    
  94.     zmien_min:              ; wykonanie zmiany minimum w r6
  95.         mov a,r2
  96.         mov r6, a
  97.         jnz powrot2         ; powrot do petli  
  98.    
  99.     przejdz_na_koniec_programu:
  100.    
  101.     nop
  102.     nop
  103.     nop
  104.  end start
RAW Paste Data