###前提・実現したいこと
学校の課題でMIPSのアセンブリ言語を書いているのですが、同じエラーに悩まされています。もし分かる方がいましたら教えていただきたいです。
問題:入力された2つの文字の掛け算の九九の表を作りなさい。
目標は下記の画像のようにすることです。
###発生している問題・エラーメッセージ
Instruction references undefined symbol at 0x00400014 [0x00400014] 0x0c000000 jal 0x00000000 [main] ; 188: jal main
###該当のソースコード
#Data Segment .data msg: .asciiz "\n" row: .asciiz "please input the number of rows : " column: .asciiz "please input the number of columns : " line: .asciiz "--" haifun: .asciiz "-" line2: .asciiz "|" space2: .asciiz " " space1: .asciiz " " plus: .asciiz "+" #Text Segment .text .globl main COUNT: move $t4,$a0 li $v0,0 li $t6,10 CLOOP: addi $v0,$v0,1 div $t4,$t4,$t6 ble $t4,$zero,CEND j CLOOP CEND: jr $ra func: addi $sp,$sp,-20 sw $a0,0($sp) sw $a1,4($sp) sw $s0,8($sp) sw $s1,12($sp) sw $s2,16($sp) move $t0,$a0 #row move $t1,$a1 #column li $t2,1 move $a0,$t0 addi $sp,$sp,-4 sw $ra,0($sp) jal COUNT lw $ra,0($sp) addi $sp,$sp,4 move $t4,$v0 li $t5,5 sub $t4,$t5,$t4 move $t6,$t4 li $t5,1 WIDTHr: li $v0,4 la $a0,space1 syscall sub $t4,$t4,$t5 bgt $t4,$zero,WIDTHr li $v0,1 move $a0,$t0 syscall li $v0,4 la $a0,space1 syscall la $a0,line2 syscall WIDTH1: li $v0,4 la $a0,space1 syscall sub $t6,$t6,$t5 bgt $t6,$zero,WIDTH1 mul $t3,$t0,$t2 li $v0,1 move $a0,$t3 syscall FLOOP: li $t5,5 #width beq $t2,$t1,FEND addi $t2,$t2,1 mul $t3,$t0,$t2 move $a0,$t3 addi $sp,$sp,-4 sw $ra,0($sp) jal COUNT lw $ra,0($sp) addi $sp,$sp,4 move $t4,$v0 li $v0,4 la $a0,line2 syscall sub $t4,$t5,$t4 li $t5,1 WIDTH: li $v0,4 la $a0,space1 syscall sub $t4,$t4,$t5 bgt $t4,$zero,WIDTH li $v0,1 move $a0,$t3 syscall j FLOOP FEND: li $v0,4 la $a0,line2 syscall la $a0,msg syscall la $a0,line syscall syscall syscall li $t0,0 FENDLOOP: addi $t0,$t0,1 li $v0,4 la $a0,plus syscall la $a0,line syscall syscall la $a0,haifun syscall bne $t0,$t1,FENDLOOP li $v0,4 la $a0,plus syscall la $a0,msg syscall lw $a0,0($sp) lw $a1,4($sp) lw $s0,8($sp) lw $s1,12($sp) lw $s2,16($sp) addi $sp,$sp,20 jr $ra prep: addi $sp,$sp,-4 sw $a0,0($sp) li $t0,1 #counter move $t1,$a0 li $v0,4 la $a0,space2 syscall syscall syscall#spaceを6つ la $a0,line2 syscall#"|"を出力 li $v0,4 la $a0,space2 syscall#spaceを2つ li $v0,1 move $a0,$t0 syscall#t0を出力 li $v0,4 la $a0,space2 syscall#spaceを2つ prepLOOP: li $v0,4 la $a0,line2 syscall#"|"を出力 beq $t0,$t1,prepEND addi $t0,$t0,1 move $a0,$t0 addi $sp,$sp,-4 sw $ra,0($sp) jal COUNT lw $ra,0($sp) addi $sp,$sp,4 move $t4,$v0 li $t5,4 sub $t4,$t5,$t4 li $t5,1 WIDTHc: li $v0,4 la $a0,space1 syscall sub $t4,$t4,$t5 bgt $t4,$zero,WIDTHc li $v0,1 move $a0,$t0 syscall li $v0,4 la $a0,space1 syscall j prepLOOP prepEND: la $a0,msg syscall la $a0,line syscall syscall syscall li $t0,0 prepENDLOOP: addi $t0,$t0,1 li $v0,4 la $a0,plus syscall la $a0,line syscall syscall la $a0,haifun syscall bne $t0,$t1,prepENDLOOP li $v0,4 la $a0,plus syscall la $a0,msg syscall lw $a0,0($sp) addi $sp,$sp,4 jr $ra main: li $v0,4#文字列の出力システムコールコード4 la $a0,row syscall#"please input the number of rows : " li $v0,5 syscall#整数の入力 move $s0,$v0 li $v0,4#文字列の出力システムコールコード4 la $a0,column syscall#"please input the number of columns : " li $v0,5 syscall#整数の入力 move $s1,$v0#s1=v0 li $v0,4#文字列の出力システムコールコード4 la $a0,msg syscall#改行 move $a0,$s1#s1をa0に格納 addi $sp,$sp,-4 sw $ra,0($sp) jal prep#prepにジャンプ lw $ra,0($sp) addi $sp,$sp,4 li $s2,1 LOOP: move $a0,$s2 move $a1,$s1 addi $sp,$sp,-4 sw $ra,0($sp) jal func lw $ra,0($sp) addi $sp,$sp,4 beq $s0,$s2,END addi $s2,$s2,1 j LOOP END: jr $ra
###補足情報(言語/FW/ツール等のバージョンなど)
.asmという拡張子のプログラムを書いています。
実行環境はQtSpimというソフトウェアを使っています。
MacOSでの実行です。
このプログラムで実現したいのは下記の画像のような
見た目をコンソールに出力することです。
あなたの回答
tips
プレビュー