mirror of
https://github.com/tiennm99/KTMT.git
synced 2026-06-09 06:13:10 +00:00
179 lines
2.7 KiB
NASM
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
|