Files
2018-10-30 17:03:02 +07:00

179 lines
2.7 KiB
NASM

.data
xa: .float 0
ya: .float 0
xb: .float 0
yb: .float 0
xc: .float 0
yc: .float 0
a: .float 0
b: .float 0
c: .float 0
two: .float 2.0
inXA: .asciiz "Nhap xA: "
inYA: .asciiz "Nhap yA: "
inXB: .asciiz "Nhap xB: "
inYB: .asciiz "Nhap yB: "
inXC: .asciiz "Nhap xC: "
inYC: .asciiz "Nhap yC: "
outMax: .asciiz "(Cac) dinh co gia tri x lon nhat:\n"
outErr: .asciiz "Ba diem da cho khong tao thanh tam giac!"
outDT: .asciiz "Dien tich tam giac da cho la:\n"
.text
.globl main
main: la $a0, inXA
li $v0, 4
syscall
li $v0, 6
syscall
swc1 $f0, xa
la $a0, inYA
li $v0, 4
syscall
li $v0, 6
syscall
swc1 $f0, ya
la $a0, inXB
li $v0, 4
syscall
li $v0, 6
syscall
swc1 $f0, xb
la $a0, inYB
li $v0, 4
syscall
li $v0, 6
syscall
swc1 $f0, yb
la $a0, inXC
li $v0, 4
syscall
li $v0, 6
syscall
swc1 $f0, xc
la $a0, inYC
li $v0, 4
syscall
li $v0, 6
syscall
swc1 $f0, yc
lwc1 $f1, xa
lwc1 $f2, xb
lwc1 $f3, xc
lwc1 $f4, ya
lwc1 $f5, yb
lwc1 $f6, yc
mov.s $f27, $f1
mov.s $f28, $f2
mov.s $f29, $f3
jal findM
la $a0, outMax
li $v0, 4
syscall
c.eq.s $f1, $f26
bc1f skipf1
mov.s $f31, $f1
mov.s $f30, $f4
jal print
skipf1: c.eq.s $f2, $f26
bc1f skipf2
mov.s $f31, $f2
mov.s $f30, $f5
jal print
skipf2: c.eq.s $f3, $f26
bc1f skipf3
mov.s $f31, $f3
mov.s $f30, $f6
jal print
skipf3: mov.s $f8, $f1
mov.s $f9, $f4
mov.s $f10, $f2
mov.s $f11, $f5
jal cal
swc1 $f7, c
mov.s $f10, $f3
mov.s $f11, $f6
jal cal
swc1 $f7, b
mov.s $f8, $f2
mov.s $f9, $f5
jal cal
swc1 $f7, a
lwc1 $f27, a
lwc1 $f28, b
lwc1 $f29, c
jal findM
mov.s $f15, $f26
jal findm
mov.s $f17, $f26
add.s $f16, $f27, $f28
add.s $f16, $f16, $f29
sub.s $f16, $f16, $f15
c.le.s $f16, $f15
bc1t error
add.s $f18, $f16, $f15
sub.s $f16, $f16, $f17
lwc1 $f19, two
div.s $f18, $f18, $f19
mov.s $f19, $f18
sub.s $f20, $f18, $f15
mul.s $f19, $f19, $f20
sub.s $f20, $f18, $f16
mul.s $f19, $f19, $f20
sub.s $f20, $f18, $f17
mul.s $f19, $f19, $f20
sqrt.s $f19, $f19
la $a0, outDT
li $v0, 4
syscall
mov.s $f12, $f19
li $v0, 2
syscall
exit: li $v0, 10
syscall
findM: mov.s $f26, $f27
c.le.s $f28, $f26
bc1t Mskip
mov.s $f26, $f28
Mskip: c.le.s $f29, $f26
bc1t Mret
mov.s $f26, $f29
Mret: jr $ra
findm: mov.s $f26, $f27
c.lt.s $f28, $f26
bc1f mskip
mov.s $f26, $f28
mskip: c.lt.s $f29, $f26
bc1f mret
mov.s $f26, $f29
mret: jr $ra
print: li $a0, '('
li $v0, 11
syscall
mov.s $f12, $f31
li $v0, 2
syscall
li $a0, ';'
li $v0, 11
syscall
mov.s $f12, $f30
li $v0, 2
syscall
li $a0, ')'
li $v0, 11
syscall
li $a0, '\n'
li $v0, 11
syscall
jr $ra
cal: sub.s $f13, $f10, $f8
mul.s $f13, $f13, $f13
sub.s $f14, $f11, $f9
mul.s $f14, $f14, $f14
add.s $f7, $f13, $f14
sqrt.s $f7, $f7
jr $ra
error: la $a0, outErr
li $v0, 4
syscall
j exit