急求:ARM汇编中的mvn指令问题

xuhongping108 2011-05-15 11:07:06
书上说MVN指令是将操作数的反码传送到目标寄存器中,比如:
MVN R0,#4 ;R0=-5
4的反码不还是4吗,怎么会是-5呢
...全文
1691 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
caochao729 2012-07-30
  • 打赏
  • 举报
回复 1
计算机里面应该都是用补码表示的吧? LZ应该看看计算机原理的书籍
rambomao 2011-11-23
  • 打赏
  • 举报
回复
mov r1, #4
mvn r2, #4
r1 + r2 =0xffffffff
ETSFH 2011-10-09
  • 打赏
  • 举报
回复
为什么用补码来计算呢?
liuhonggang23 2011-08-17
  • 打赏
  • 举报
回复
补充一下:为了可以让你看明白,特意调试了下。

我们在左边看到的就是ffff fffb,该值就是4按位取反的值,转换为十进制就是-5.
liuhonggang23 2011-08-17
  • 打赏
  • 举报
回复
4用二进制表示为:0000 0100,MVN指令将立即数取反传送至寄存器,即1111 1011,最高位为1,用补码的形式按位取反加1,即 0000 0100 +1 再加上符号位1 ,为负数,转为为十进制则为-5
ma329220777 2011-05-30
  • 打赏
  • 举报
回复
这个就是书上规定的 你如果送个#3的话 那R0就等于-4了
xuhongping108 2011-05-15
  • 打赏
  • 举报
回复
大家帮帮忙啊,没人知道吗
lr2131 2011-05-15
  • 打赏
  • 举报
回复
你的理解有问题吧,对mvn的指令的描述是这样的
MVN是数据非传送指令,将寄存器Rm按位取反后传送到目标寄存器(Rd)中,指令格式为:
MVN Rd,Rm
其中: Rd 目标寄存器,必须在R0~R7之间
Rm 源寄存器, 必须在R0~R7之间
条件码标志:
指令会更新N和Z标志,对标志C和V无影响
MVN指令举例:
MVN R1,R2 ;将R2取反结果存到R1

所以,你的MVN R0,#4 是有问题的,至于为什么R0=-5 无从得知

21,499

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧