我们之前已经介绍了move指令,从本章开始,我们会一步步介绍更多的M68K指令。
add??????? :加法指令
该指令的作用是[源操作数]加[目的操作数],结果传递至[目的操作数],[源操作数]保持不变。
为了方便后续的计算,我们统一事先把寄存器做一些定义:
add.w d1,d2
如果 d1 = $05 , d2 = $05 ,执行后 d2 = $0A
如果 d1 = $FF, d2 = $01 ,执行后 d2 = $100(因为操作长度为双字节)
add.b d1, $1234
如果 d1 = $05 , $1234 = $05 ,执行后 d2 = $0A
如果 d1 = $FF, $1234 = $01 ,执行后 d2 = $00(因为操作长度为单字节)
当我们需要计算一个立即数时,我们需要使用add指令的扩展指令addi:
addi.b #$08, d1
?如果 d1 = $08 ,执行后d1 = $10
addi.b #$10, (a1) *地址$100 = $10
如果(a1) = $FF , 执行后(a1) = $0F(因为操作长度为单字节)
add指令和move指令不同,该指令的目的操作数和源操作数不能同时为内存地址,比如以下的的指令为非法指令:
add.b $10, $15 ?
add.w (a0), (a1) ?
add.l (a0)+, $10(a2) ?
add.w $9E(a4), -(a3) ?
add.b $10(a0), $10(a6) ?
?我们可以尝试先把源操作数传递到数字寄存器,再使用add指令进行加法运算,比如
move.b #$10,d0
add.b d0,$15