首页 > 编程知识 正文

arm支持哪几种指令集,ben10

时间:2023-05-06 12:59:06 阅读:51861 作者:2096

另一方面,对于详细的cmp使用,假设当前AX寄存器的数目是0002H,且BX寄存器的数目是0003H。

要执行的命令是CMP AX、BX

运行此命令时,首先从AX的数量中减去BX的数量。

要列出二进制运算表达式:

0000 0000 0000 0010

000000000000000000011

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

(借位1 ) 1111 1111 1111 1111

因此,运算结果为0FFFFH

根据该结果,各标志位分别设定为以下值。

CF=1,因为我欠你

OF=0,无溢出

科幻=1,结果为负

ZF=0,结果都不是零

另外,AF、PF等也将相应设置。

CMP比较命令被减去之后,基于运算结果设置各个标记位。

如果设置了标志,则0FFFFH的减法结果将被浪费、丢弃或不保存。

执行CMP指令后,除CF、ZF、OF、SF、等各个标志位变化以外的数据不变化。

与通常的减法指令SUB AX、BX相比,它们的差异如下。

执行SUB命令后,原始AX中的减数丢失,并替换为减法结果。

执行CMP指令后,被减数、减数保持不变。

二. tst、cmp、bne、beq命令

1、tst :逻辑处理指令。 将一个寄存器的内容和另一个寄存器的内容或即时数按位相加,根据运算结果更新CPSR中的条件标志位的值。 当前运算结果为1时,Z=0; 当前运算结果为0时,Z=1

cmp :将一个寄存器的内容和另一个寄存器的内容或即时数进行减法比较的运算处理指令。 在不存储结果的情况下更改标志位

如果标志寄存器的z标志位不等于0,BNE:数据跳转指令跳至bne之后的标签

当标志寄存器的z标志位等于零时,BEQ:数据跳转指令跳转到beq之后的标签

2、实例tst r0、#0x2 //进行and运算,如果bit_2为1,则zero==0,如果bit_2为0,则zero==1,即该指令为bit_2为0 bne led _ blilid

3、实例sub r1、r1、#1 //r1=r1-1cmp r1、#0 //r1是否为0,如果变更了标志位bne led_blink //zero==1,则返回led_blink

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。