街机模拟游戏逆向工程(HACKROM)教程:[10]68K汇编add指令

发布时间:2024年01月19日

我们之前已经介绍了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

文章来源:https://blog.csdn.net/m0_50114967/article/details/135447912
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。