Compare commits
8 Commits
mpabi
...
sprawdzian
Author | SHA1 | Date | |
---|---|---|---|
![]() |
be3ea1c230 | ||
![]() |
91fe08a649 | ||
![]() |
4fe958dbd6 | ||
![]() |
a9b4450380 | ||
![]() |
737eed1b0c | ||
![]() |
eeda21def6 | ||
![]() |
d42add2c88 | ||
![]() |
efee78f136 |
70
counter.S
70
counter.S
@ -1,41 +1,45 @@
|
||||
.data
|
||||
// 0x8000102c
|
||||
// x7 = PC+(imm <<()
|
||||
// x7 =
|
||||
.data
|
||||
sentence:
|
||||
.ascii "Become a Prograammermmmmmrr\0"
|
||||
match:
|
||||
.ascii "Babc m\0"
|
||||
out:
|
||||
.space 256, 0
|
||||
|
||||
// =
|
||||
// 0x8000 0000 +
|
||||
// 0x8001 0000
|
||||
// = 0x8001 0000
|
||||
.text
|
||||
.align 2
|
||||
.globl _start
|
||||
|
||||
// aupic x7, 1
|
||||
|
||||
sentence: .ascii "Become a Prograammermmmmmrr\0"
|
||||
// ^
|
||||
// ^
|
||||
|
||||
.text
|
||||
.align 2
|
||||
.globl _start
|
||||
|
||||
_start:
|
||||
|
||||
la t2, sentence # Load the address of sentence into t2
|
||||
li t0, 0x72 // ascii 'm'
|
||||
|
||||
li t1, 0x00 // licznik wystapien 'm'
|
||||
|
||||
print_loop:
|
||||
lbu t3, 0(t2) # Load the byte (character) from address in t2
|
||||
beq t3, zero, done_print # If character is zero (null terminator), exit loop
|
||||
la t0, sentence # Load the address of sentence into t0
|
||||
|
||||
bne t3, t0, 1f
|
||||
addi t1, t1, 1
|
||||
1:
|
||||
read_str:
|
||||
lbu t1, 0(t0) # Load unsigned byte from sentence into t1
|
||||
beq t1, zero, read_str_done # If end of string (\0), exit loop
|
||||
|
||||
addi t2, t2, 1 # Increment pointer to the next character
|
||||
j print_loop # Repeat the loop
|
||||
la a0, match # Load address of match into a0
|
||||
la s2, out # Load address of out into s0
|
||||
|
||||
done_print:
|
||||
ebreak # End program (or use an exit system call)
|
||||
iteruj_match:
|
||||
|
||||
lbu a1, 0(a0)
|
||||
beq a1, zero, done_match
|
||||
|
||||
bne t1, a1, 1f
|
||||
|
||||
lbu s10, 0(s2)
|
||||
addi s10, s10, 1
|
||||
sb s10, 0(s2)
|
||||
|
||||
1:
|
||||
addi a0, a0, 1
|
||||
addi s2, s2, 1
|
||||
j iteruj_match
|
||||
done_match:
|
||||
|
||||
addi t0, t0, 1 # Increment pointer to the next character in sentence
|
||||
j read_str # Jump back to start of outer loop
|
||||
|
||||
read_str_done:
|
||||
ebreak # End program
|
||||
|
Loading…
Reference in New Issue
Block a user