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

本文详细介绍了M68K处理器中的add加法指令,包括其基本用法、目的操作数和源操作数的规定,以及扩展指令addi用于处理立即数的情况。还讨论了add与move指令的区别和一些非法用法示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

字节狂徒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值