2009-03-21 12:13:47夏途島
組合語言初體驗
花了好幾天,找遍公館舊書攤,google所有網路上能找到的指令和規格說明,好不容易終於完成了我這輩子第一支組合語言的程式,也讓我驕傲一下吧!
哈!哈!哈!
雖然只是一支很簡單的加減乘除程式,可也是費了九牛二虎之力喲!這支是mips的,將來有機會,也來攻看看著名的 80X86,今天是我邁入computer science堂奧的milestone的一天啊!
.data
maxlen: .word 31
buffer: .space 31
.text
.globl main
main:
li $v0, 5
syscall
move $s0, $v0
la $a0, buffer
lw $a1, maxlen
li $v0, 8
syscall
li $t0, 0
lb $s2, buffer($t0)
li $v0, 5
syscall
move $s1, $v0
li $t1, 43
beq $s2, $t1, Sum
nop
li $t2, 45
beq $s2, $t2, Subtract
nop
li $t3, 42
beq $s2, $t3, Multiple
nop
li $t4, 47
beq $s2, $t4, Divide
nop
j End
nop
Sum:
add $s6, $s0, $s1
j End
nop
Subtract:
subu $s6, $s0, $s1
j End
nop
Multiple:
mul $s6, $s0, $s1
j End
nop
Divide:
beq $s1, $zero, Exit
nop
div $s6, $s0, $s1
End:
move $a0, $s6
li $v0, 1
syscall
Exit:
li $v0, 10
syscall
哈!哈!哈!
雖然只是一支很簡單的加減乘除程式,可也是費了九牛二虎之力喲!這支是mips的,將來有機會,也來攻看看著名的 80X86,今天是我邁入computer science堂奧的milestone的一天啊!
.data
maxlen: .word 31
buffer: .space 31
.text
.globl main
main:
li $v0, 5
syscall
move $s0, $v0
la $a0, buffer
lw $a1, maxlen
li $v0, 8
syscall
li $t0, 0
lb $s2, buffer($t0)
li $v0, 5
syscall
move $s1, $v0
li $t1, 43
beq $s2, $t1, Sum
nop
li $t2, 45
beq $s2, $t2, Subtract
nop
li $t3, 42
beq $s2, $t3, Multiple
nop
li $t4, 47
beq $s2, $t4, Divide
nop
j End
nop
Sum:
add $s6, $s0, $s1
j End
nop
Subtract:
subu $s6, $s0, $s1
j End
nop
Multiple:
mul $s6, $s0, $s1
j End
nop
Divide:
beq $s1, $zero, Exit
nop
div $s6, $s0, $s1
End:
move $a0, $s6
li $v0, 1
syscall
Exit:
li $v0, 10
syscall
確實對我來說是一大突破.
識別碼嗎?只能說垃圾留言機器人愈來愈厲害了吧!啊!我覺得好玩的是,那種垃圾留言,留了也是馬上被刪,內容又經常是落落長,到底他們是在貼好玩的嗎?
看不懂...不過想必應該很有成就感!恭喜!
此外,新聞台的識別碼實在越來越有挑戰性了。我想哪一天,可能會連人類都看不懂到底要怎麼做...:p
要 po 執行結果的圖啦, 只有骨頭, 是看不出美女的.