Witam.
Mam problem odnośnie z asemblerem. Z większością zadania wydaje mi się, że sobie poradziłem, tylko pozostał niewielki mankament.
Ale o tym za chwilę. Piszę swoje asemblerowe programy w Qtspim. Podobno piszę dla architektury MIPS.
Otóż mam taki problem.
Mam dwie tablice, jedna pobiera dane z buforu, czyli z klawiatury i zapisuje w pamięci. Ma to na to 40 miejsca.
Druga statyczna, która przechowuje znaki od A do Z oraz a do z.
Umiem zmienić adres tablicy, żeby wyświetlał pierwszy i dowolny element z tablicy, ale nie umiem tego zapisać do jakieś zmiennej, żeby móc później operować na tych zmiennych w warunku? Jak to zrobić?
Moim celem, jest wykonanie operacji coś w stylu:
beq 'literaz z tabica','litera z tablica znakow',skok
.data
tablica: .space 40
tablicaznakow: .byte 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'
,'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'
poczatek: .word 0
koniec: .word 40 #koniec musi byc rowny z rozmiarem tablicy, czyli space
koniecliter: .word 52
.text
.globl main
main:
li $v0, 8 #{
la $a0, tablica # wczytanie ciagu znakowego
li $a1, 40 #}
syscall
lw $t0, poczatek #zaladowanie z jakies zmiennej word do rejestru.
lw $t1, koniecliter #zaladowanie z jakies zmiennej word do rejestru.
la $t2, tablicaznakow #{
li $v0, 11 # wyswietlenie pierwszej litery
add $t2,$t2,$t0 #
lb $a0, ($t2) #}
syscall
lw $t3, poczatek #zaladowanie z jakies zmiennej word do rejestru
lw $t4, koniec #zaladowanie z jakies zmiennej word do rejestru
la $t5, tablica #{
li $v1, 11 # wyswietlenie pierwszej litery
add $t5,$t5,$t3 #
lb $a0, ($t5) #}
syscall
jr $ra