TD IML:
[TD_IML.git] / TD4 / mips1.asm
1 .data
2 buffer1: .space 20
3 buffer2: .space 20
4 n: .asciiz "\n"
5 string_part_one: .asciiz "Le temps est "
6 string_part_two: .asciiz ", je devrais prendre "
7 string_part_three: .asciiz " avant de sortir."
8 string_hole: .asciiz "__________"
9 input_string: .asciiz "Mot manquant ? "
10 .text
11 la $a0,string_part_one
12 li $v0,4
13 syscall
14 la $a0,string_hole
15 li $v0,4
16 syscall
17 la $a0,string_part_two
18 li $v0,4
19 syscall
20 la $a0,string_hole
21 li $v0,4
22 syscall
23 la $a0,string_part_three
24 li $v0,4
25 syscall
26 la $a0,n
27 li $v0,4
28 syscall
29 la $a0,input_string
30 li $v0,4
31 syscall
32 li $v0,8
33 la $a0,buffer1
34 li $a1,20
35 syscall
36
37 la $s0, buffer1 # $s0 contains base address of the string buffer
38 addi $s3, $0, '\n' # $s3 = '\n'
39 loop1:
40 lb $s1, 0($s0) # load character into $s0
41 beq $s1, $s3, end1 # break if byte is newline
42 addi $s0, $s0, 1 # increment buffer address
43 j loop1
44 end1:
45 sb $0, 0($s0) #replace newline with 0
46
47 la $a0,input_string
48 li $v0,4
49 syscall
50 li $v0,8
51 la $a0,buffer2
52 li $a1,20
53 syscall
54
55 la $s0, buffer2 # $s0 contains base address of the string buffer
56 addi $s3, $0, '\n' # $s3 = '\n'
57 loop2:
58 lb $s1, 0($s0) # load character into $s0
59 beq $s1, $s3, end2 # break if byte is newline
60 addi $s0, $s0, 1 # increment buffer address
61 j loop2
62 end2:
63 sb $0, 0($s0) #replace newline with 0
64
65 la $a0,string_part_one
66 li $v0,4
67 syscall
68 la $a0,buffer1
69 li $v0,4
70 syscall
71 la $a0,string_part_two
72 li $v0,4
73 syscall
74 la $a0,buffer2
75 li $v0,4
76 syscall
77 la $a0,string_part_three
78 li $v0,4
79 syscall
80
81 li $v0,10
82 syscall