47 lines
925 B
ArmAsm
47 lines
925 B
ArmAsm
.data
|
|
sentence: .ascii "My fbbirbst btbry\0" // \0 to bajt zerowy czyli koniec zdania w asm, C =
|
|
sentence2: .ascii "proba do dodawania sentence"
|
|
.text
|
|
.align 2
|
|
.globl _start
|
|
|
|
_start:
|
|
la t2, sentence
|
|
li t0, 0x62 //ascii "b"
|
|
|
|
la s2, sentence
|
|
li s3, 0x79 // ascii "o"
|
|
|
|
li s4, 0x00 // licznik o w sentence2
|
|
|
|
li t1, 0x00 // licznik b w sentence
|
|
|
|
loop:
|
|
|
|
lbu s5, 0(s2)
|
|
beq s5, zero, koniec
|
|
|
|
bne s5, s3, 1f
|
|
addi s4, s4, 1
|
|
|
|
2:
|
|
|
|
addi s2, s2, 1
|
|
j
|
|
|
|
|
|
|
|
lbu t3, 0(t2) // ladujemy do rejestra t3 adres 1 litery sentece
|
|
beq t3, zero, koniec # jezeli adres w sentence dojdzie do \0 czyli do konca programm sie skonczy
|
|
|
|
bne t3, t0, 1f // jezeli adres liczby nie jest "b" to prechodzi do 1f pomijanie przyrostu licznika.
|
|
addi t1, t1, 1 // dodajemy 1 do licznika liter b
|
|
|
|
1:
|
|
|
|
addi t2, t2, 1 // Tutaj wskaźnik zostanie przesunięty do następnego znaku w linii
|
|
j loop // skok do poczatku petli
|
|
|
|
koniec:
|
|
ebreak
|