标签:寻址 asm 指针 寄存器 参数 鼠标 通过 相等 键盘响应
0.常见操作符
add $r10, $r1, $r2
表示r10 = r1+r2
addi $r1, $zero, 1000
表示0寄存器和立即数1000相加放入r1
lw $r0, 8($sp)
表示load word sp地址+8 到r0
beq $r3, $r9, LABEL
表示branch equal
如果相等,则跳转LABELload
从内存加载寄存器store
存储回去addi
、subi
、divi
、multi
slt
表示set if less than
如果小于执行
slt $d, $rs, $rt
slit $d, $rs, 5
j LABEL
LABEL寻址jr $a0
寄存器寻址jal LABEL
多合一跳转
j LABEL
返回1.判断求和
if(i == j) {
f = i + j
} else {
f = i - j
}
汇编
bne $r3, $r4, ELSE # bne——branch not equal
add $r5, $r3, $r4
j EXIT # j——jump
ELSE:
sub $r5, $r3, $r4
EXIT
2.for loop
sum = 0
for(i = 0; i < 100; i++) {
sum += i
}
汇编
addi $s3, $zero, 0 # sum = 0
addi $s4, $zero, 0 # i = 0
addi $s5, $zero, 100 # 100
LOOP:
beq $s4, $5, EXIT
add $s3, $s4, $s3
addi $s4, $s4, 1
j LOOP # -16
EXIT:
3.函数
# fac(5)
addiu $s0, $0, 5 # 函数参数5存入栈 add immidiate unsigned
sw $s0, $sp # s0写入sp
addi $sp, $sp, -4 # 栈指针指向下一个
jal FACT # 跳转
# 函数体
lw $s0, 4($sp) # 读取参数
4.函数返回
# 函数体最前面
sw $ra, 0$(sp)
addiu $sp, $sp, -4
lw $t1, 4($sp)
lw $s0, 8($sp)
jr $t1 # 跳转回去
当外界发生变化,通过中断CPU注意某个时间的发生。这个时候,CPU执行的状态被保存,中断响应程序被执行
标签:寻址 asm 指针 寄存器 参数 鼠标 通过 相等 键盘响应
原文地址:https://www.cnblogs.com/littlepage/p/12526798.html