Вот несколько строк кода, чтобы проиллюстрировать то, что вы спрашиваете:
# $a0 = argc, $a1 = argv
# 4($a1) is first command line argv 8($a1) is second
main:
lw $a0, 8($a1) # get second command line argv
li $v0, 4 # print code for the argument (string)
syscall # tells system to print
li $v0, 10 # exit code
syscall # terminate cleanly
Количество аргументов находится в $a0, и вы можете проверить количество аргументов по целочисленному значению, загруженному (li) во временный регистр для целей проверки.
Значения аргументов командной строки, argv, хранятся в $a1, и к ним можно получить доступ, загрузив слово. Слово занимает 4 байта, поэтому мы можем получить доступ к argv[0] с помощью 0($a1), к argv[1] с помощью 4($a1) и так далее.
В этом случае нам нужен argv[2], в который мы можем загрузить слово (lw) из 8($a1) в любой выбранный нами регистр. В данном случае я загрузил его в $a0, потому что после этого я его непосредственно печатаю.
Резюме:
# $a0 is argc, $a1 is argv
lw $t0, 8($a1) # gets argv[2] and stores it in $t0
person
wazy
schedule
07.06.2013
$a0
вместоargc
и$a1
вместоargv
? - person Michael   schedule 03.06.2013