tu mas kus zdrojaku Nepsal jsi, co to po tom porovnani ma delat, tak jsem napsal 1 pruchod polem řadiciho algoritmu bublesort Pokud ten pruchod budes opakovat tak dlouho, dokud se behem pruchodu bude provadet zamena cisel, tak ti to setridi cely pole Az se behem pruchodu zadna zamena neprovede, je serazeno…
[code]$NOPAGING
; porovnavani peti cisel se znamenkem ulozenych ve vnitrni pameti
; vysledek do vnejsi pameti …
x0 EQU 2
x1 EQU 3
x2 EQU 1
x3 EQU 5
x4 EQU 6
z_pole DATA 30h ;promenna v RAM - obsahuje zacatek pole razenych cisel
k_pole DATA 31h ;konec pole
temp DATA 32h ;pomocna prom.
ORG 0h
sjmp start
start: mov z_pole, #40h ;rekneme, ze pole bude zacinat napriklad adresou 40h
mov r0, z_pole ;pole bude ulozeno od adresy 31h (nad registry a bit. oblast)
mov @r0, #x0 ;nacteni cisel do RAM, cislo x0 nacteno na adresu 31h
inc r0
mov @r0, #x1
inc r0
mov @r0, #x2
inc r0
mov @r0, #x3
inc r0
mov @r0, #x4 ;x4 na adr. 35h
mov k_pole, r0 ;ulozit adresu konce pole
;jedina pouzitelna varianta CJNE: "CJNE A, direct_addres, jump_relativ_addres"
;cisla budu radit sestupne (od zacatku pole), nizsi adresa bude obsahovat vetsi cislo
;-----------------------------------------
;------ 1 pruchod polem ------------------
;-----------------------------------------
mov r0, z_pole
dalsi: mov a, r0
cjne a, k_pole, pokr1 ;kontrola, zda jiz nebylo projito cele pole
sjmp stop ;doslo se na konec, stop
pokr1: mov a, @r0 ;A <- 1. cislo
inc r0
mov temp, @r0 ;temp (30h) <- 2. cislo
cjne a, temp, pokr2 ;v C vysledek porovnani, pokracuje se nasledujicim radkem (pripadny skok je tamtez)
pokr2: jnc dalsi ;pokud je 1. cislo vetsi (na nizsi adrese), porovnej dasli 2 cisla
mov @r0, a ;jinak cisla prohodime, v A je mensi cislo a r0 miri na vyssi adresu (adresa
;toho vetsiho cisla) tam to mensi zapisem.
dec r0 ;presmerujem r0 zpatky na nizsi adresu
mov @r0, temp ;a zapisem vetsi cislo
inc r0 ;vratime r0 zpatky o misto vys a jdem porovnavat dalsi 2 cisla
sjmp dalsi
;-----------------------------------------
;-----------------------------------------
;-----------------------------------------
stop: sjmp $
end[/code]