<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/6247300154457c44d0d697d0/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6247300154457c44d0d697d0/bg1.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">ARM<span class="_ _0"> </span>指令中第二操<span class="_ _1"></span>作数为<span class="_ _2"> </span><span class="fc1">常数表达式<span class="_ _3"> </span></span>时<span class="_ _4"> </span>8<span class="_ _5"> </span>位位图的理解</div><div class="t m0 x1 h3 y2 ff1 fs1 fc0 sc0 ls0 ws0">对其中的<span class="_ _6"> </span>operand2<span class="_ _6"> </span>的常数表达式有这样的规定<span class="_ _7"> </span>:<span class="_ _8"> </span>“<span class="_ _9"> </span>该常数必须对应<span class="_ _a"> </span>8<span class="_ _b"> </span>位位图<span class="_ _c"> </span>,<span class="_ _d"> </span>即</div><div class="t m0 x1 h3 y3 ff1 fs1 fc0 sc0 ls0 ws0">常数<span class="_ _e"> </span>是由一个<span class="_ _6"> </span>8<span class="_ _b"> </span>位的<span class="_ _e"> </span>常数<span class="_ _e"> </span>循环右移<span class="_ _f"> </span>偶数位<span class="_ _c"> </span>得到的。</div><div class="t m0 x2 h3 y4 ff1 fs1 fc0 sc0 ls0 ws0">通过正反例的比较,可以总结如下:<span class="_ _10"> </span>第一<span class="_ _e"> </span>,判断一个数是否符合<span class="_ _11"> </span>8<span class="_ _b"> </span>位位图的原</div><div class="t m0 x1 h3 y5 ff1 fs1 fc0 sc0 ls0 ws0">则,首先看这个数转换成二进制后<span class="_ _12"> </span>1<span class="_ _b"> </span>的个数是否不超过<span class="_ _13"> </span>8<span class="_ _b"> </span>个,如果不超过<span class="_ _a"> </span>8<span class="_ _b"> </span>个</div><div class="t m1 x3 h3 y5 ff1 fs1 fc0 sc0 ls0 ws0">,</div><div class="t m0 x1 h3 y6 ff1 fs1 fc0 sc0 ls0 ws0">再看这<span class="_ _14"> </span>n<span class="_ _b"> </span>个<span class="_ _15"> </span>1<span class="_ _16"> </span>(<span class="_ _9"> </span>n<=8<span class="_ _e"> </span>)<span class="_ _17"> </span>是否能同时放到<span class="_ _a"> </span>8<span class="_ _b"> </span>个二进制位中<span class="_ _18"> </span>,<span class="_ _17"> </span>如果可以放进去<span class="_ _19"> </span>,<span class="_ _17"> </span>再看</div><div class="t m0 x1 h3 y7 ff1 fs1 fc0 sc0 ls0 ws0">这八<span class="_ _1"></span>个二<span class="_ _1"></span>进制<span class="_ _1"></span>位是<span class="_ _1"></span>否可<span class="_ _1"></span>以循<span class="_ _1"></span>环右<span class="_ _1"></span>移偶<span class="_ _1"></span>数位<span class="_ _1"></span>得<span class="_ _1"></span>到起<span class="_ _1"></span>初被<span class="_ _1"></span>判断<span class="_ _1"></span>的那<span class="_ _1"></span>个数<span class="_ _1"></span>值,<span class="_ _1"></span>如果<span class="_ _1"></span>可</div><div class="t m0 x1 h3 y8 ff1 fs1 fc0 sc0 ls0 ws0">以,则此数值即为符合<span class="_ _11"> </span>8<span class="_ _b"> </span>位位图原理,否则,不符合。<span class="_ _1a"> </span>第二<span class="_ _e"> </span>,用<span class="_ _1b"> </span>12<span class="_ _15"> </span>位的编码来</div><div class="t m0 x1 h3 y9 ff1 fs1 fc0 sc0 ls0 ws0">表示一个任意的<span class="_ _1c"> </span>32<span class="_ _15"> </span>位数是不可能的,只能通过循环右<span class="_ _1d"> </span>移八位<span class="_ _c"> </span>二进制数偶数位来</div><div class="t m0 x1 h3 ya ff1 fs1 fc0 sc0 ls0 ws0">得到一部分<span class="_ _1e"> </span>32<span class="_ _15"> </span>位数,其余的无法表示的<span class="_ _1f"> </span>32<span class="_ _15"> </span>位数,只有通过其它途径获得了<span class="_ _20"> </span>,<span class="_ _d"> </span>比</div><div class="t m0 x1 h3 yb ff1 fs1 fc0 sc0 ls0 ws0">如<span class="_ _15"> </span>0xffffff00<span class="_ _21"> </span>,可以通过<span class="_ _1e"> </span>0x000000ff<span class="_ _1e"> </span>按位取反得到,因此在以后的编程中<span class="_ _22"> </span>,<span class="_ _23"> </span>一</div><div class="t m0 x1 h3 yc ff1 fs1 fc0 sc0 ls0 ws0">定要注意用到的第二操作数是否符合<span class="_ _24"> </span>8<span class="_ _b"> </span>位位图。</div><div class="t m0 x1 h3 yd ff1 fs1 fc0 sc0 ls0 ws0">连接寄存器<span class="_ _21"> </span>(Link<span class="_ _25"> </span>Register,<span class="_ _26"> </span>LR)<span class="_ _27"> </span>,在<span class="_ _1b"> </span>ARM<span class="_ _28"> </span>体系结构中<span class="_ _1e"> </span>LR<span class="_ _15"> </span>的特殊用途有两种<span class="_ _29"> </span>:<span class="_ _d"> </span>一</div><div class="t m0 x1 h3 ye ff1 fs1 fc0 sc0 ls0 ws0">是用来保<span class="_ _1"></span>存子程序返回<span class="_ _1"></span>地址;<span class="_ _2a"> </span>二<span class="_ _9"> </span>是当异常发生时<span class="_ _1"></span>,<span class="_ _2b"> </span>LR<span class="_ _15"> </span>中保存的值等于<span class="_ _1"></span>异常发生</div><div class="t m0 x1 h3 yf ff1 fs1 fc0 sc0 ls0 ws0">时<span class="_ _15"> </span>PC<span class="_ _15"> </span>的值减<span class="_ _14"> </span>4<span class="_ _2c"> </span>(<span class="_ _9"> </span>或者减<span class="_ _14"> </span>2<span class="_ _16"> </span>)<span class="_ _8"> </span>,<span class="_ _2d"> </span>因此在各种异常模式下可以根据<span class="_ _2e"> </span>LR<span class="_ _15"> </span>的值返回到异常</div><div class="t m0 x1 h3 y10 ff1 fs1 fc0 sc0 ls0 ws0">发生前的相应位置继续执行。</div><div class="t m0 x4 h3 y11 ff1 fs1 fc0 sc0 ls0 ws0">当通<span class="_ _e"> </span>过<span class="_ _15"> </span>B<span class="_ _16"> </span>L<span class="_ _b"> </span>或<span class="_ _2f"> </span>BL<span class="_ _9"> </span>X<span class="_ _30"> </span>指令调用子程序时<span class="_ _29"> </span>,<span class="_ _8"> </span>硬件自动将子程序返回地址保存<span class="_ _20"> </span>在<span class="_ _15"> </span>R1<span class="_ _9"> </span>4</div><div class="t m0 x1 h3 y12 ff1 fs1 fc0 sc0 ls0 ws0">寄存器中<span class="_ _f"> </span>。<span class="_ _2d"> </span>在子程序返回时<span class="_ _19"> </span>,<span class="_ _2d"> </span>把<span class="_ _15"> </span>LR<span class="_ _15"> </span>的值复制到程序计数器<span class="_ _11"> </span>PC<span class="_ _2f"> </span>即可实现子程序返</div><div class="t m0 x1 h3 y13 ff1 fs1 fc0 sc0 ls0 ws0">回。如,可以使<span class="_ _19"> </span>用<span class="_ _31"> </span>MOV<span class="_ _32"> </span>PC,<span class="_ _32"> </span>LR<span class="_ _15"> </span>或者<span class="_ _1b"> </span>BX<span class="_ _33"> </span>LR<span class="_ _15"> </span>来完成子程序返回<span class="_ _34"> </span>。另外,也可以在</div><div class="t m0 x1 h3 y14 ff1 fs1 fc0 sc0 ls0 ws0">在子程序入口处使用下面的指令将<span class="_ _12"> </span>LR<span class="_ _15"> </span>保存到栈中。</div><div class="t m0 x1 h4 y15 ff2 fs2 fc0 sc0 ls0 ws0">AR<span class="_ _35"></span>M<span class="_ _36"> </span><span class="ff1">汇编指令集</span></div><div class="t m0 x1 h4 y16 ff1 fs2 fc0 sc0 ls0 ws0">一、<span class="_ _37"> </span>跳转指令</div><div class="t m0 x1 h4 y17 ff1 fs2 fc0 sc0 ls0 ws0">跳转指令用于实<span class="_ _35"></span>现程序流<span class="_ _35"></span>程的跳转<span class="_ _35"></span>,在<span class="_ _38"> </span><span class="ff2">AR<span class="_ _35"></span>M<span class="_ _36"> </span></span>程序中有两种方<span class="_ _35"></span>法可以实<span class="_ _35"></span>现程序流<span class="_ _35"></span>程的跳转<span class="_ _39"> </span>:</div><div class="t m0 x1 h4 y18 ff1 fs2 fc0 sc0 ls0 ws0">Ⅰ<span class="_ _3a"> </span><span class="ff2">.<span class="_ _3b"> </span></span>使用专门的跳转<span class="_ _35"></span>指令。</div><div class="t m0 x1 h4 y19 ff1 fs2 fc0 sc0 ls0 ws0">Ⅱ<span class="_ _3a"> </span><span class="ff2">.<span class="_ _3b"> </span></span>直接向程序计数<span class="_ _35"></span>器<span class="_ _a"> </span><span class="ff2">PC<span class="_ _3c"> </span></span>写入跳转地址值<span class="_ _35"></span>。</div><div class="t m0 x1 h4 y1a ff1 fs2 fc0 sc0 ls0 ws0">通过向程序计数器<span class="_ _3d"> </span><span class="ff2">PC<span class="_ _3e"> </span></span>写入跳转地址值,可以实现在<span class="_ _3f"> </span><span class="ff2">4GB<span class="_ _40"> </span></span>的地址空间中的任意跳转,在跳</div><div class="t m0 x1 h4 y1b ff1 fs2 fc0 sc0 ls0 ws0">转之前结合使用</div><div class="t m0 x1 h4 y1c ff2 fs2 fc0 sc0 ls0 ws0">MOV<span class="_ _41"> </span>LR<span class="_ _15"> </span><span class="ff1">,<span class="_ _3a"> </span></span>PC</div><div class="t m0 x1 h4 y1d ff1 fs2 fc0 sc0 ls0 ws0">等类似指令,可以<span class="_ _35"></span>保存将来<span class="_ _35"></span>的返回地<span class="_ _35"></span>址值,从<span class="_ _35"></span>而实现在<span class="_ _42"> </span><span class="ff2">4GB<span class="_ _40"> </span></span>连续的线性地址空<span class="_ _35"></span>间的子程<span class="_ _35"></span>序</div><div class="t m0 x1 h4 y1e ff1 fs2 fc0 sc0 ls0 ws0">调用。</div><div class="t m0 x5 h4 y1f ff2 fs2 fc0 sc0 ls0 ws0">AR<span class="_ _35"></span>M<span class="_ _43"> </span><span class="ff1">指令<span class="_ _1"></span>集中<span class="_ _1"></span>的跳<span class="_ _1"></span>转指<span class="_ _1"></span>令可<span class="_ _1"></span>以完<span class="_ _1"></span>成从<span class="_ _1"></span>当前<span class="_ _1"></span>指令<span class="_ _1"></span>向前<span class="_ _1"></span>或向<span class="_ _1"></span>后的<span class="_ _44"> </span><span class="ff2">32MB<span class="_ _45"> </span></span>的地<span class="_ _1"></span>址空<span class="_ _1"></span>间的<span class="_ _1"></span>跳</span></div><div class="t m0 x1 h4 y20 ff1 fs2 fc0 sc0 ls0 ws0">转,包括以下<span class="_ _46"> </span><span class="ff2">4<span class="_ _47"> </span></span>条指令:</div><div class="t m0 x1 h4 y21 ff2 fs2 fc0 sc0 ls0 ws0">1<span class="_ _48"> </span><span class="ff1">、<span class="_ _4"> </span></span>B<span class="_ _49"> </span><span class="ff1">指令</span></div><div class="t m0 x1 h4 y22 ff2 fs2 fc0 sc0 ls0 ws0">B<span class="_ _49"> </span><span class="ff1">指令的格式为:</span></div><div class="t m0 x1 h4 y23 ff2 fs2 fc0 sc0 ls0 ws0">B{<span class="_ _9"> </span><span class="ff1">条件<span class="_ _40"> </span></span>}<span class="_ _4a"> </span><span class="ff1">目标地址</span></div><div class="t m0 x1 h4 y24 ff2 fs2 fc0 sc0 ls0 ws0">B<span class="_ _49"> </span><span class="ff1">指令是最简单的跳转指令。一旦遇到一个<span class="_ _4b"> </span></span>B<span class="_ _d"> </span><span class="ff1">指令,<span class="_ _4c"> </span></span>AR<span class="_ _35"></span>M<span class="_ _4d"> </span><span class="ff1">处理器将立即跳转到给定的目</span></div><div class="t m0 x1 h4 y25 ff1 fs2 fc0 sc0 ls0 ws0">标地址<span class="_ _4e"> </span>,<span class="_ _5"> </span>从那里<span class="_ _35"></span>继续执行<span class="_ _4f"> </span>。<span class="_ _5"> </span>注意存<span class="_ _35"></span>储在<span class="_ _50"> </span>跳<span class="_ _3a"> </span>转指令中<span class="_ _51"> </span>的实际值<span class="_ _52"> </span>是相对当前<span class="_ _53"> </span><span class="ff2">PC<span class="_ _3e"> </span></span>值的一个<span class="_ _51"> </span>偏移量</div><div class="t m2 x6 h4 y25 ff1 fs2 fc0 sc0 ls0 ws0">,</div><div class="t m0 x1 h4 y26 ff1 fs2 fc0 sc0 ls0 ws0">而不是一个绝对<span class="_ _35"></span>地址,它<span class="_ _35"></span>的值由汇<span class="_ _35"></span>编器来计<span class="_ _35"></span>算(参考<span class="_ _35"></span>寻址方式<span class="_ _35"></span>中的相对<span class="_ _35"></span>寻址<span class="_ _54"> </span>)<span class="_ _55"> </span>。它是<span class="_ _56"> </span><span class="ff2">24<span class="_ _2f"> </span></span>位</div><div class="t m0 x1 h4 y27 ff1 fs2 fc0 sc0 ls0 ws0">有符号数,左移两位后有符号扩展为<span class="_ _57"> </span><span class="ff2">32<span class="_ _2f"> </span></span>位,表示的有效偏移为<span class="_ _58"> </span><span class="ff2">26<span class="_ _2f"> </span></span>位<span class="_ _3a"> </span><span class="ff2">(<span class="_ _59"> </span></span>前后<span class="_ _5a"> </span><span class="ff2">32MB<span class="_ _45"> </span></span>的地址</div><div class="t m0 x1 h4 y28 ff1 fs2 fc0 sc0 ls0 ws0">空间<span class="_ _32"> </span><span class="ff2">)<span class="_ _59"> </span></span>。以下<span class="_ _35"></span>指令:</div><div class="t m0 x1 h4 y29 ff2 fs2 fc0 sc0 ls0 ws0">B<span class="_ _0"> </span>L<span class="_ _35"></span>abel<span class="_ _5b"> </span><span class="ff1">;程序无条件跳<span class="_ _35"></span>转到标号<span class="_ _5c"> </span></span>Label<span class="_ _43"> </span><span class="ff1">处执行</span></div><div class="t m0 x1 h4 y2a ff2 fs2 fc0 sc0 ls0 ws0">CMP<span class="_ _5d"> </span>R1<span class="_ _5e"> </span><span class="ff1">,#<span class="_ _32"> </span></span>0<span class="_ _5f"> </span><span class="ff1">;当<span class="_ _5a"> </span></span>CPSR<span class="_ _60"> </span><span class="ff1">寄存器中的<span class="_ _53"> </span></span>Z<span class="_ _55"> </span><span class="ff1">条件码置位时,<span class="_ _35"></span>程序跳转<span class="_ _35"></span>到标号<span class="_ _61"> </span></span>Label<span class="_ _43"> </span><span class="ff1">处执行</span></div><div class="t m0 x1 h5 y2b ff2 fs2 fc0 sc0 ls0 ws0">BEQ<span class="_ _5a"> </span>Label</div></div><div class="pi" data-data='{"ctm":[1.611830,0.000000,0.000000,1.611830,0.000000,0.000000]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6247300154457c44d0d697d0/bg2.jpg"><div class="t m0 x1 h4 y2c ff2 fs2 fc0 sc0 ls0 ws0">2<span class="_ _48"> </span><span class="ff1">、<span class="_ _4"> </span></span>BL<span class="_ _62"> </span><span class="ff1">指令</span></div><div class="t m0 x1 h4 y2d ff2 fs2 fc0 sc0 ls0 ws0">BL<span class="_ _62"> </span><span class="ff1">指令的格式为:</span></div><div class="t m0 x1 h4 y2e ff2 fs2 fc0 sc0 ls0 ws0">BL<span class="_ _35"></span>{<span class="_ _63"> </span><span class="ff1">条件<span class="_ _32"> </span></span>}<span class="_ _55"> </span><span class="ff1">目标地址</span></div><div class="t m0 x1 h4 y2f ff2 fs2 fc0 sc0 ls0 ws0">BL<span class="_ _64"> </span><span class="ff1">是另一个跳转指<span class="_ _35"></span>令<span class="_ _19"> </span>,<span class="_ _3a"> </span>但跳转之前<span class="_ _50"> </span>,<span class="_ _3a"> </span>会在寄存器<span class="_ _53"> </span></span>R14<span class="_ _65"> </span><span class="ff1">中保存<span class="_ _25"> </span></span>PC<span class="_ _3e"> </span><span class="ff1">的当前内容<span class="_ _50"> </span>,<span class="_ _3a"> </span>因此<span class="_ _32"> </span>,<span class="_ _66"> </span>可以</span></div><div class="t m0 x1 h4 y30 ff1 fs2 fc0 sc0 ls0 ws0">通过将<span class="_ _67"> </span><span class="ff2">R14<span class="_ _68"> </span></span>的内容重新加载到<span class="_ _3d"> </span><span class="ff2">PC<span class="_ _3e"> </span></span>中,来返回到跳转指令之后的那个指令处执行。该指令</div><div class="t m0 x1 h4 y31 ff1 fs2 fc0 sc0 ls0 ws0">是实现子程序调<span class="_ _35"></span>用的一个<span class="_ _35"></span>基本但常<span class="_ _35"></span>用的手段<span class="_ _35"></span>。以下指<span class="_ _35"></span>令:</div><div class="t m0 x1 h4 y32 ff2 fs2 fc0 sc0 ls0 ws0">BL<span class="_ _69"> </span>Label<span class="_ _6"> </span><span class="ff1">;<span class="_ _1"></span>当程<span class="_ _1"></span>序<span class="_ _1"></span>无条<span class="_ _1"></span>件<span class="_ _1"></span>跳转<span class="_ _1"></span>到<span class="_ _1"></span>标号<span class="_ _6a"> </span><span class="ff2">Label<span class="_ _1b"> </span></span>处<span class="_ _1"></span>执行<span class="_ _1"></span>时<span class="_ _1"></span>,同<span class="_ _1"></span>时<span class="_ _1"></span>将当<span class="_ _1"></span>前<span class="_ _1"></span>的<span class="_ _6b"> </span><span class="ff2">PC<span class="_ _6c"> </span></span>值</span></div><div class="t m0 x7 h4 y33 ff1 fs2 fc0 sc0 ls0 ws0">保存到<span class="_ _25"> </span><span class="ff2">R14<span class="_ _65"> </span></span>中</div><div class="t m0 x1 h4 y34 ff2 fs2 fc0 sc0 ls0 ws0">3<span class="_ _48"> </span><span class="ff1">、<span class="_ _4"> </span></span>BL<span class="_ _35"></span>X<span class="_ _6d"> </span><span class="ff1">指令</span></div><div class="t m0 x1 h4 y35 ff2 fs2 fc0 sc0 ls0 ws0">BL<span class="_ _35"></span>X<span class="_ _6d"> </span><span class="ff1">指令的格式为:</span></div><div class="t m0 x1 h4 y36 ff2 fs2 fc0 sc0 ls0 ws0">BL<span class="_ _35"></span>X<span class="_ _6e"> </span><span class="ff1">目标地址</span></div><div class="t m0 x1 h4 y37 ff2 fs2 fc0 sc0 ls0 ws0">BL<span class="_ _35"></span>X<span class="_ _6d"> </span><span class="ff1">指令从<span class="_ _25"> </span></span>AR<span class="_ _35"></span>M<span class="_ _36"> </span><span class="ff1">指令集跳转到指<span class="_ _35"></span>令中所指<span class="_ _35"></span>定的目标<span class="_ _35"></span>地址<span class="_ _6f"> </span>,<span class="_ _3a"> </span>并将处理器的工<span class="_ _35"></span>作状态有<span class="_ _5c"> </span></span>AR<span class="_ _70"> </span>M</div><div class="t m0 x1 h4 y38 ff1 fs2 fc0 sc0 ls0 ws0">状态切换到<span class="_ _71"> </span><span class="ff2">Thum<span class="_ _35"></span>b<span class="_ _4e"> </span></span>状态,该指令同时将<span class="_ _72"> </span><span class="ff2">PC<span class="_ _3e"> </span></span>的当前内容保存到寄存器<span class="_ _73"> </span><span class="ff2">R14<span class="_ _65"> </span></span>中。因此,当子</div><div class="t m0 x1 h4 y39 ff1 fs2 fc0 sc0 ls0 ws0">程序使用<span class="_ _74"> </span><span class="ff2">Thum<span class="_ _35"></span>b<span class="_ _4e"> </span></span>指令集<span class="_ _4e"> </span>,<span class="_ _66"> </span>而调用者使用<span class="_ _46"> </span><span class="ff2">A<span class="_ _35"></span>RM<span class="_ _36"> </span></span>指令集<span class="_ _35"></span>时<span class="_ _51"> </span>,<span class="_ _66"> </span>可以通<span class="_ _35"></span>过<span class="_ _74"> </span><span class="ff2">BLX<span class="_ _6d"> </span></span>指令实现子程序<span class="_ _35"></span>的</div><div class="t m0 x1 h4 y3a ff1 fs2 fc0 sc0 ls0 ws0">调用和处理器工<span class="_ _35"></span>作状态的<span class="_ _35"></span>切换<span class="_ _75"> </span>。<span class="_ _d"> </span>同时<span class="_ _32"> </span>,<span class="_ _d"> </span>子程序<span class="_ _35"></span>的返回可<span class="_ _35"></span>以通过将<span class="_ _35"></span>寄存器<span class="_ _61"> </span><span class="ff2">R14<span class="_ _65"> </span></span>值复制到<span class="_ _74"> </span><span class="ff2">PC<span class="_ _3c"> </span></span>中</div><div class="t m0 x1 h4 y3b ff1 fs2 fc0 sc0 ls0 ws0">来完成。</div><div class="t m0 x1 h4 y3c ff2 fs2 fc0 sc0 ls0 ws0">4<span class="_ _48"> </span><span class="ff1">、<span class="_ _4"> </span></span>BX<span class="_ _64"> </span><span class="ff1">指令</span></div><div class="t m0 x1 h4 y3d ff2 fs2 fc0 sc0 ls0 ws0">BX<span class="_ _64"> </span><span class="ff1">指令的<span class="_ _35"></span>格式为:</span></div><div class="t m0 x1 h4 y3e ff2 fs2 fc0 sc0 ls0 ws0">BX{<span class="_ _76"> </span><span class="ff1">条件<span class="_ _32"> </span></span>}<span class="_ _66"> </span><span class="ff1">目标地址</span></div><div class="t m0 x1 h4 y3f ff2 fs2 fc0 sc0 ls0 ws0">BX<span class="_ _64"> </span><span class="ff1">指令跳转<span class="_ _35"></span>到指令中<span class="_ _35"></span>所指定的<span class="_ _35"></span>目标地址<span class="_ _35"></span>,目标地<span class="_ _35"></span>址处的指<span class="_ _35"></span>令既可以<span class="_ _35"></span>是<span class="_ _77"> </span></span>AR<span class="_ _35"></span>M<span class="_ _36"> </span><span class="ff1">指令,也<span class="_ _35"></span>可以</span></div><div class="t m0 x1 h4 y15 ff1 fs2 fc0 sc0 ls0 ws0">是<span class="_ _17"> </span><span class="ff2">T<span class="_ _35"></span>hum<span class="_ _35"></span>b<span class="_ _4e"> </span></span>指令。</div><div class="t m0 x1 h3 y40 ff1 fs2 fc0 sc0 ls0 ws0">二、<span class="_ _32"> </span><span class="fs1 fc1">数据处理指令</span></div><div class="t m0 x1 h4 y17 ff1 fs2 fc0 sc0 ls0 ws0">数据处理指令可<span class="_ _35"></span>分为数据<span class="_ _35"></span>传送指令<span class="_ _35"></span>、算术逻<span class="_ _35"></span>辑运算指<span class="_ _35"></span>令和比较<span class="_ _35"></span>指令等。</div><div class="t m0 x1 h4 y18 ff1 fs2 fc0 sc0 ls0 ws0">数据传送指令用<span class="_ _35"></span>于在寄存<span class="_ _35"></span>器和存储<span class="_ _35"></span>器之间进<span class="_ _35"></span>行数据的<span class="_ _35"></span>双向传输<span class="_ _35"></span>。</div><div class="t m0 x1 h4 y19 ff1 fs2 fc0 sc0 ls0 ws0">算术逻辑运算指<span class="_ _35"></span>令完成常<span class="_ _35"></span>用的算术<span class="_ _35"></span>与逻辑的<span class="_ _35"></span>运算<span class="_ _78"> </span>,<span class="_ _5f"> </span>该类指<span class="_ _35"></span>令不但将<span class="_ _35"></span>运算结果<span class="_ _35"></span>保存在目<span class="_ _35"></span>的寄存</div><div class="t m0 x1 h4 y1a ff1 fs2 fc0 sc0 ls0 ws0">器中,同时更新<span class="_ _79"> </span><span class="ff2">CPS<span class="_ _35"></span>R<span class="_ _60"> </span></span>中的相应条件标<span class="_ _35"></span>志位。</div><div class="t m0 x1 h4 y1b ff1 fs2 fc0 sc0 ls0 ws0">比较指令不保存<span class="_ _35"></span>运算结果<span class="_ _35"></span>,只更新<span class="_ _7a"> </span><span class="ff2">CPS<span class="_ _35"></span>R<span class="_ _60"> </span></span>中相应的条件标<span class="_ _35"></span>志位。</div><div class="t m0 x1 h4 y1c ff1 fs2 fc0 sc0 ls0 ws0">数据处理指令共<span class="_ _35"></span>以下<span class="_ _29"> </span><span class="ff2">16<span class="_ _17"> </span></span>条。</div><div class="t m0 x1 h4 y1d ff2 fs2 fc0 sc0 ls0 ws0">1<span class="_ _48"> </span><span class="ff1">、<span class="_ _32"> </span></span>MOV<span class="_ _41"> </span><span class="ff1">指令</span></div><div class="t m0 x1 h4 y1e ff2 fs2 fc0 sc0 ls0 ws0">MOV<span class="_ _41"> </span><span class="ff1">指令的<span class="_ _35"></span>格式为:</span></div><div class="t m0 x1 h3 y41 ff2 fs1 fc0 sc0 ls0 ws0">MOV{<span class="_ _7b"> </span><span class="ff1">条件<span class="_ _e"> </span></span>}{S}<span class="_ _60"> </span><span class="ff1">目的寄存器,源操作数</span></div><div class="t m0 x1 h4 y20 ff2 fs2 fc0 sc0 ls0 ws0">MOV<span class="_ _41"> </span><span class="ff1">指令可<span class="_ _35"></span>完成从另<span class="_ _35"></span>一个寄存<span class="_ _35"></span>器、被移<span class="_ _35"></span>位的寄存<span class="_ _35"></span>器或将一<span class="_ _35"></span>个立即数<span class="_ _35"></span>加载到目<span class="_ _35"></span>的寄存器<span class="_ _7c"> </span>。<span class="_ _66"> </span>其</span></div><div class="t m0 x1 h4 y21 ff1 fs2 fc0 sc0 ls0 ws0">中<span class="_ _17"> </span><span class="ff2">S<span class="_ _30"> </span></span>选项决定指令的<span class="_ _35"></span>操作是否<span class="_ _35"></span>影响<span class="_ _7d"> </span><span class="ff2">CPS<span class="_ _35"></span>R<span class="_ _60"> </span></span>中条件标志位的<span class="_ _35"></span>值<span class="_ _7e"> </span>,<span class="_ _7f"> </span>当没有<span class="_ _25"> </span><span class="ff2">S<span class="_ _30"> </span></span>时指令不更新<span class="_ _46"> </span><span class="ff2">CP<span class="_ _35"></span>S<span class="_ _80"> </span>R</span></div><div class="t m0 x1 h4 y22 ff1 fs2 fc0 sc0 ls0 ws0">中条件标志位的<span class="_ _35"></span>值。</div><div class="t m0 x1 h4 y23 ff1 fs2 fc0 sc0 ls0 ws0">指令示例:</div><div class="t m0 x1 h4 y24 ff2 fs2 fc0 sc0 ls0 ws0">MOV<span class="_ _41"> </span>R1<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R0<span class="_ _81"> </span><span class="ff1">;将寄存器<span class="_ _53"> </span></span>R<span class="_ _35"></span>0<span class="_ _31"> </span><span class="ff1">的值传送到寄存<span class="_ _35"></span>器<span class="_ _a"> </span></span>R1</div><div class="t m0 x1 h4 y25 ff2 fs2 fc0 sc0 ls0 ws0">MOV<span class="_ _41"> </span>PC<span class="_ _82"> </span><span class="ff1">,<span class="_ _66"> </span></span>R<span class="_ _35"></span>14<span class="_ _83"> </span><span class="ff1">;<span class="_ _66"> </span>将寄存<span class="_ _35"></span>器<span class="_ _74"> </span></span>R14<span class="_ _65"> </span><span class="ff1">的值传送到<span class="_ _53"> </span></span>P<span class="_ _35"></span>C<span class="_ _84"> </span><span class="ff1">,<span class="_ _66"> </span>常用于<span class="_ _35"></span>子程序返<span class="_ _35"></span>回</span></div><div class="t m0 x1 h4 y26 ff2 fs2 fc0 sc0 ls0 ws0">MOV<span class="_ _41"> </span>R1<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R0<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>LS<span class="_ _35"></span>L<span class="_ _80"> </span><span class="ff1">#<span class="_ _66"> </span></span>3<span class="_ _85"> </span><span class="ff1">;将寄存器<span class="_ _53"> </span></span>R<span class="_ _35"></span>0<span class="_ _31"> </span><span class="ff1">的值左移<span class="_ _74"> </span></span>3<span class="_ _86"> </span><span class="ff1">位后传送到<span class="_ _53"> </span></span>R<span class="_ _35"></span>1</div><div class="t m0 x1 h4 y27 ff2 fs2 fc0 sc0 ls0 ws0">2<span class="_ _48"> </span><span class="ff1">、<span class="_ _4"> </span></span>MVN<span class="_ _41"> </span><span class="ff1">指令<span class="_ _40"> </span>?</span></div><div class="t m0 x1 h4 y28 ff2 fs2 fc0 sc0 ls0 ws0">MVN<span class="_ _41"> </span><span class="ff1">指令的<span class="_ _35"></span>格式为:</span></div><div class="t m0 x1 h3 y42 ff2 fs1 fc0 sc0 ls0 ws0">MVN{<span class="_ _7b"> </span><span class="ff1">条件<span class="_ _e"> </span></span>}{S}<span class="_ _60"> </span><span class="ff1">目的寄存器,源操作数</span></div><div class="t m0 x1 h4 y2a ff2 fs2 fc0 sc0 ls0 ws0">MVN<span class="_ _41"> </span><span class="ff1">指令可<span class="_ _35"></span>完成从另<span class="_ _35"></span>一个寄存<span class="_ _35"></span>器、被移<span class="_ _35"></span>位的寄存<span class="_ _35"></span>器、或将<span class="_ _35"></span>一个立即<span class="_ _35"></span>数加载到<span class="_ _35"></span>目的寄存<span class="_ _35"></span>器<span class="_ _87"> </span>。</span></div><div class="t m0 x1 h4 y2b ff1 fs2 fc0 sc0 ls0 ws0">与<span class="_ _17"> </span><span class="ff2">M<span class="_ _35"></span>OV<span class="_ _41"> </span></span>指令不<span class="_ _35"></span>同之处是<span class="_ _35"></span>在传送之<span class="_ _35"></span>前按位被<span class="_ _88"> </span>取反<span class="_ _32"> </span>了<span class="_ _3a"> </span>,<span class="_ _8"> </span>即把一<span class="_ _35"></span>个被取反<span class="_ _35"></span>的值传送<span class="_ _35"></span>到目的寄<span class="_ _35"></span>存器</div></div><div class="pi" data-data='{"ctm":[1.611830,0.000000,0.000000,1.611830,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6247300154457c44d0d697d0/bg3.jpg"><div class="t m0 x1 h4 y43 ff1 fs2 fc0 sc0 ls0 ws0">中<span class="_ _3a"> </span>。<span class="_ _55"> </span>其<span class="_ _3a"> </span>中<span class="_ _17"> </span><span class="ff2">S<span class="_ _89"> </span></span>决定指令的操作<span class="_ _35"></span>是否影<span class="_ _8a"> </span>响<span class="_ _17"> </span><span class="ff2">CPS<span class="_ _80"> </span>R<span class="_ _5f"> </span></span>中条件<span class="_ _35"></span>标志位的<span class="_ _35"></span>值<span class="_ _19"> </span>,<span class="_ _5f"> </span>当没<span class="_ _32"> </span>有<span class="_ _17"> </span><span class="ff2">S<span class="_ _89"> </span></span>时指令不更<span class="_ _50"> </span>新<span class="_ _17"> </span><span class="ff2">CPS<span class="_ _80"> </span>R</span></div><div class="t m0 x1 h4 y2c ff1 fs2 fc0 sc0 ls0 ws0">中条件标志位的<span class="_ _35"></span>值。</div><div class="t m0 x1 h4 y2d ff1 fs2 fc0 sc0 ls0 ws0">指令示例:</div><div class="t m0 x1 h4 y2e ff1 fs2 fc0 sc0 ls0 ws0">注意:<span class="_ _4e"> </span>这是逻辑非操作<span class="_ _35"></span>而不是算<span class="_ _35"></span>术操作,<span class="_ _35"></span>这个取反<span class="_ _35"></span>的值加<span class="_ _8b"> </span><span class="ff3">1<span class="_ _8c"> </span></span>才是它的取负的<span class="_ _35"></span>值<span class="_ _19"> </span><span class="ff3">:<span class="_ _8d"> </span></span>?</div><div class="t m0 x1 h4 y44 ff2 fs2 fc0 sc0 ls0 ws0">MVN<span class="_ _8e"> </span>R0<span class="_ _5e"> </span><span class="ff1">,<span class="_ _7f"> </span>#<span class="_ _66"> </span></span>0<span class="_ _8f"> </span><span class="ff1">;<span class="_ _7f"> </span>将立即数<span class="_ _74"> </span></span>0<span class="_ _47"> </span><span class="ff1">取反传送到寄存<span class="_ _35"></span>器<span class="_ _90"> </span></span>R0<span class="_ _31"> </span><span class="ff1">中<span class="_ _3a"> </span>,<span class="_ _7f"> </span>完成后<span class="_ _25"> </span></span>R0=<span class="_ _28"> </span>-<span class="_ _91"> </span>1</div><div class="t m0 x1 h4 y45 ff2 fs2 fc0 sc0 ls0 ws0">MVN<span class="_ _8e"> </span>R0<span class="_ _5e"> </span><span class="ff1">,<span class="_ _7f"> </span>#<span class="_ _66"> </span></span>4<span class="_ _8f"> </span><span class="ff1">;<span class="_ _7f"> </span>将立即数<span class="_ _74"> </span></span>4<span class="_ _47"> </span><span class="ff1">取反传送到寄存<span class="_ _35"></span>器<span class="_ _90"> </span></span>R0<span class="_ _31"> </span><span class="ff1">中<span class="_ _3a"> </span>,<span class="_ _7f"> </span>完成后<span class="_ _25"> </span></span>R0=<span class="_ _28"> </span>-5</div><div class="t m0 x1 h4 y46 ff2 fs2 fc0 sc0 ls0 ws0">3<span class="_ _48"> </span><span class="ff1">、<span class="_ _4"> </span></span>CMP<span class="_ _37"> </span><span class="ff1">指令</span></div><div class="t m0 x1 h4 y47 ff2 fs2 fc0 sc0 ls0 ws0">CMP<span class="_ _92"> </span><span class="ff1">指令的格式为:</span></div><div class="t m0 x1 h4 y48 ff2 fs2 fc0 sc0 ls0 ws0">CMP{<span class="_ _5d"> </span><span class="ff1">条件<span class="_ _40"> </span></span>}<span class="_ _b"> </span><span class="ff1">操作数<span class="_ _25"> </span></span>1<span class="_ _48"> </span><span class="ff1">,操作<span class="_ _35"></span>数<span class="_ _74"> </span></span>2</div><div class="t m0 x1 h4 y49 ff2 fs2 fc0 sc0 ls0 ws0">CMP<span class="_ _37"> </span><span class="ff1">指令<span class="_ _1"></span>用于<span class="_ _1"></span>把一<span class="_ _1"></span>个寄<span class="_ _1"></span>存器<span class="_ _1"></span>的内<span class="_ _1"></span>容和<span class="_ _1"></span>另一<span class="_ _1"></span>个寄<span class="_ _1"></span>存器<span class="_ _1"></span>的内<span class="_ _1"></span>容或<span class="_ _1"></span>立即<span class="_ _1"></span>数进<span class="_ _1"></span>行比<span class="_ _1"></span>较,<span class="_ _1"></span>同时<span class="_ _1"></span>更<span class="_ _93"> </span>新</span></div><div class="t m0 x1 h4 y4a ff2 fs2 fc0 sc0 ls0 ws0">CPS<span class="_ _35"></span>R<span class="_ _60"> </span><span class="ff1">中条件标志位的<span class="_ _35"></span>值。该指<span class="_ _35"></span>令进行一<span class="_ _35"></span>次减法运<span class="_ _35"></span>算,但不<span class="_ _35"></span>存储结果<span class="_ _35"></span>,只更改<span class="_ _35"></span>条件标志<span class="_ _35"></span>位</span></div><div class="t m3 x8 h4 y4a ff1 fs2 fc0 sc0 ls0 ws0">。</div><div class="t m0 x1 h4 y4b ff1 fs2 fc0 sc0 ls0 ws0">标志位表示的是<span class="_ _35"></span>操作数<span class="_ _94"> </span><span class="ff2">1<span class="_ _86"> </span></span>与操作<span class="_ _35"></span>数<span class="_ _74"> </span><span class="ff2">2<span class="_ _47"> </span></span>的关系<span class="_ _4e"> </span><span class="ff2">(<span class="_ _59"> </span></span>大<span class="_ _3a"> </span>、<span class="_ _3a"> </span>小<span class="_ _66"> </span>、<span class="_ _3a"> </span>相等<span class="_ _32"> </span><span class="ff2">)<span class="_ _59"> </span></span>,<span class="_ _3a"> </span>例如<span class="_ _32"> </span>,<span class="_ _66"> </span>当操作<span class="_ _35"></span>数<span class="_ _74"> </span><span class="ff2">1<span class="_ _86"> </span></span>大于操<span class="_ _35"></span>作操</div><div class="t m0 x1 h4 y4c ff1 fs2 fc0 sc0 ls0 ws0">作数<span class="_ _6d"> </span><span class="ff2">2<span class="_ _48"> </span></span>,则此<span class="_ _35"></span>后的有<span class="_ _46"> </span><span class="ff2">GT<span class="_ _95"> </span></span>后缀的指令将可<span class="_ _35"></span>以执行。</div><div class="t m0 x1 h4 y4d ff1 fs2 fc0 sc0 ls0 ws0">指令示例:</div><div class="t m0 x1 h4 y4e ff2 fs2 fc0 sc0 ls0 ws0">CMP<span class="_ _96"> </span>R1<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R0<span class="_ _97"> </span><span class="ff1">;将寄存器<span class="_ _53"> </span></span>R<span class="_ _35"></span>1<span class="_ _31"> </span><span class="ff1">的值与寄存器<span class="_ _46"> </span></span>R0<span class="_ _15"> </span><span class="ff1">的值相<span class="_ _35"></span>减,并根<span class="_ _35"></span>据</span></div><div class="t m0 x9 h4 y4f ff1 fs2 fc0 sc0 ls0 ws0">结果设置<span class="_ _74"> </span><span class="ff2">CPS<span class="_ _35"></span>R<span class="_ _60"> </span></span>的标志位</div><div class="t m0 x1 h4 y50 ff2 fs2 fc0 sc0 ls0 ws0">CMP<span class="_ _8e"> </span>R1<span class="_ _5e"> </span><span class="ff1">,#<span class="_ _40"> </span></span>100<span class="_ _98"> </span><span class="ff1">;将寄存器<span class="_ _53"> </span></span>R1<span class="_ _31"> </span><span class="ff1">的值与立即数<span class="_ _46"> </span></span>100<span class="_ _99"> </span><span class="ff1">相减,并根据结<span class="_ _35"></span>果</span></div><div class="t m0 x9 h4 y51 ff1 fs2 fc0 sc0 ls0 ws0">设置<span class="_ _5a"> </span><span class="ff2">CPS<span class="_ _35"></span>R<span class="_ _60"> </span></span>的标志位</div><div class="t m0 x1 h4 y52 ff2 fs2 fc0 sc0 ls0 ws0">4<span class="_ _48"> </span><span class="ff1">、<span class="_ _4"> </span></span>CMN<span class="_ _43"> </span><span class="ff1">指令</span></div><div class="t m0 x1 h4 y53 ff2 fs2 fc0 sc0 ls0 ws0">CMN<span class="_ _43"> </span><span class="ff1">指令的格式为:</span></div><div class="t m0 x1 h4 y54 ff2 fs2 fc0 sc0 ls0 ws0">CMN{<span class="_ _9a"> </span><span class="ff1">条件<span class="_ _32"> </span></span>}<span class="_ _55"> </span><span class="ff1">操作数<span class="_ _25"> </span></span>1<span class="_ _48"> </span><span class="ff1">,操作数<span class="_ _74"> </span></span>2</div><div class="t m0 x1 h4 y55 ff2 fs2 fc0 sc0 ls0 ws0">CMN<span class="_ _43"> </span><span class="ff1">指令用<span class="_ _35"></span>于把一个寄存器的<span class="_ _35"></span>内容和<span class="_ _9b"> </span>另一个<span class="_ _4e"> </span>寄存器的内容或<span class="_ _35"></span>立即数<span class="_ _9c"> </span>取反<span class="_ _37"> </span>后进行比较,同</span></div><div class="t m0 x1 h4 y56 ff1 fs2 fc0 sc0 ls0 ws0">时更新<span class="_ _25"> </span><span class="ff2">CPS<span class="_ _35"></span>R<span class="_ _60"> </span></span>中条件标志位的<span class="_ _35"></span>值<span class="_ _19"> </span>。<span class="_ _d"> </span>该指令<span class="_ _35"></span>实际完成<span class="_ _35"></span>操作数<span class="_ _9d"> </span><span class="ff2">1<span class="_ _47"> </span></span>和操作数<span class="_ _74"> </span><span class="ff2">2<span class="_ _47"> </span></span>相加<span class="_ _32"> </span>,<span class="_ _d"> </span>并根据结果更</div><div class="t m0 x1 h4 y57 ff1 fs2 fc0 sc0 ls0 ws0">改条件标志位。</div><div class="t m0 x1 h4 y58 ff1 fs2 fc0 sc0 ls0 ws0">指令示例:</div><div class="t m0 x1 h4 y59 ff2 fs2 fc0 sc0 ls0 ws0">CMN<span class="_ _9e"> </span>R1<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R0<span class="_ _97"> </span><span class="ff1">;将寄存器<span class="_ _53"> </span></span>R<span class="_ _35"></span>1<span class="_ _31"> </span><span class="ff1">的值与寄存器<span class="_ _46"> </span></span>R0<span class="_ _15"> </span><span class="ff1">的值相<span class="_ _35"></span>加,并根<span class="_ _35"></span>据结果</span></div><div class="t m0 xa h4 y5a ff1 fs2 fc0 sc0 ls0 ws0">设置<span class="_ _6d"> </span><span class="ff2">CPS<span class="_ _35"></span>R<span class="_ _60"> </span></span>的标志位</div><div class="t m0 x1 h4 y5b ff2 fs2 fc0 sc0 ls0 ws0">CMNR1<span class="_ _9f"> </span><span class="ff1">,#<span class="_ _32"> </span></span>100<span class="_ _98"> </span><span class="ff1">;将寄<span class="_ _35"></span>存器<span class="_ _53"> </span></span>R<span class="_ _35"></span>1<span class="_ _15"> </span><span class="ff1">的值与<span class="_ _35"></span>立即数<span class="_ _46"> </span></span>100<span class="_ _99"> </span><span class="ff1">相加,<span class="_ _35"></span>并根据结<span class="_ _35"></span>果设置</span></div><div class="t m0 xa h4 y5c ff2 fs2 fc0 sc0 ls0 ws0">CPS<span class="_ _35"></span>R<span class="_ _60"> </span><span class="ff1">的标志位</span></div><div class="t m0 x1 h4 y5d ff2 fs2 fc0 sc0 ls0 ws0">5<span class="_ _48"> </span><span class="ff1">、<span class="_ _4"> </span></span>TS<span class="_ _35"></span>T<span class="_ _76"> </span><span class="ff1">指令</span></div><div class="t m0 x1 h4 y5e ff2 fs2 fc0 sc0 ls0 ws0">TST<span class="_ _a0"> </span><span class="ff1">指令的格式为:</span></div><div class="t m0 x1 h4 y5f ff2 fs2 fc0 sc0 ls0 ws0">TST<span class="_ _35"></span>{<span class="_ _37"> </span><span class="ff1">条件<span class="_ _32"> </span></span>}<span class="_ _55"> </span><span class="ff1">操作数<span class="_ _25"> </span></span>1<span class="_ _48"> </span><span class="ff1">,操作数<span class="_ _74"> </span></span>2</div><div class="t m0 x1 h4 y60 ff2 fs2 fc0 sc0 ls0 ws0">TST<span class="_ _a0"> </span><span class="ff1">指令用于把一个<span class="_ _35"></span>寄存器的<span class="_ _35"></span>内容和另<span class="_ _35"></span>一个寄存<span class="_ _35"></span>器的内容<span class="_ _35"></span>或立即数<span class="_ _35"></span>进行<span class="_ _a1"> </span>按位与<span class="_ _4e"> </span>运算<span class="_ _32"> </span>,<span class="_ _5f"> </span>并根据</span></div><div class="t m0 x1 h4 y61 ff1 fs2 fc0 sc0 ls0 ws0">运算结果更新<span class="_ _46"> </span><span class="ff2">C<span class="_ _35"></span>PS<span class="_ _35"></span>R<span class="_ _a2"> </span></span>中条件标志位的<span class="_ _35"></span>值<span class="_ _7e"> </span>。<span class="_ _d"> </span>操作数<span class="_ _25"> </span><span class="ff2">1<span class="_ _86"> </span></span>是要测<span class="_ _35"></span>试的数据<span class="_ _4f"> </span>,<span class="_ _7f"> </span>而操作<span class="_ _35"></span>数<span class="_ _74"> </span><span class="ff2">2<span class="_ _47"> </span></span>是一个位掩</div><div class="t m0 x1 h4 y62 ff1 fs2 fc0 sc0 ls0 ws0">码,该指令一般<span class="_ _35"></span>用来检测<span class="_ _35"></span>是否设置<span class="_ _35"></span>了特定的<span class="_ _35"></span>位。</div><div class="t m0 x1 h4 y63 ff1 fs2 fc0 sc0 ls0 ws0">指令示例:</div><div class="t m0 x1 h4 y64 ff2 fs2 fc0 sc0 ls0 ws0">TST<span class="_ _9a"> </span>R1<span class="_ _5e"> </span><span class="ff1">,<span class="_ _d"> </span>#%<span class="_ _32"> </span></span>1<span class="_ _37"> </span><span class="ff1">;<span class="_ _d"> </span>用于测<span class="_ _35"></span>试在寄存<span class="_ _35"></span>器<span class="_ _90"> </span></span>R<span class="_ _35"></span>1<span class="_ _15"> </span><span class="ff1">中是否<span class="_ _35"></span>设置了最<span class="_ _35"></span>低位<span class="_ _a3"> </span>(<span class="_ _66"> </span>%表示<span class="_ _35"></span>二进制数<span class="_ _4f"> </span>)</span></div><div class="t m0 x1 h4 y65 ff2 fs2 fc0 sc0 ls0 ws0">TST<span class="_ _a4"> </span>R1<span class="_ _5e"> </span><span class="ff1">,#<span class="_ _32"> </span></span>0xf<span class="_ _35"></span>f<span class="_ _35"></span>e<span class="_ _a5"> </span><span class="ff1">;将寄存器<span class="_ _71"> </span></span>R1<span class="_ _31"> </span><span class="ff1">的值与立即数<span class="_ _a6"> </span></span>0xff<span class="_ _35"></span>e<span class="_ _a7"> </span><span class="ff1">按位与,并根据结果设</span></div><div class="t m0 xa h4 y66 ff1 fs2 fc0 sc0 ls0 ws0">置<span class="_ _17"> </span><span class="ff2">C<span class="_ _35"></span>PS<span class="_ _35"></span>R<span class="_ _a2"> </span></span>的标志<span class="_ _35"></span>位</div><div class="t m0 x1 h4 y67 ff2 fs2 fc0 sc0 ls0 ws0">6<span class="_ _48"> </span><span class="ff1">、<span class="_ _4"> </span></span>TEQ<span class="_ _69"> </span><span class="ff1">指令</span></div><div class="t m0 x1 h4 y68 ff2 fs2 fc0 sc0 ls0 ws0">TEQ<span class="_ _69"> </span><span class="ff1">指令的<span class="_ _35"></span>格式为:</span></div><div class="t m0 x1 h4 y69 ff2 fs2 fc0 sc0 ls0 ws0">TEQ{<span class="_ _1b"> </span><span class="ff1">条件<span class="_ _32"> </span></span>}<span class="_ _b"> </span><span class="ff1">操作数<span class="_ _67"> </span></span>1<span class="_ _a8"> </span><span class="ff1">,操作数<span class="_ _74"> </span></span>2</div><div class="t m0 x1 h4 y6a ff2 fs2 fc0 sc0 ls0 ws0">TEQ<span class="_ _69"> </span><span class="ff1">指令用于把一个寄存器的内容和另一个寄存器的内容或立即数进行<span class="_ _a9"> </span>按位异或<span class="_ _52"> </span>运算,并</span></div><div class="t m0 x1 h4 y6b ff1 fs2 fc0 sc0 ls0 ws0">根据运算结果更<span class="_ _35"></span>新<span class="_ _90"> </span><span class="ff2">C<span class="_ _35"></span>PS<span class="_ _35"></span>R<span class="_ _a2"> </span></span>中条件<span class="_ _35"></span>标志位的<span class="_ _35"></span>值<span class="_ _19"> </span>。<span class="_ _5"> </span>该指令通常用于<span class="_ _35"></span>比较操作<span class="_ _35"></span>数<span class="_ _aa"> </span><span class="ff2">1<span class="_ _47"> </span></span>和操作数<span class="_ _74"> </span><span class="ff2">2<span class="_ _47"> </span></span>是否</div></div><div class="pi" data-data='{"ctm":[1.611830,0.000000,0.000000,1.611830,0.000000,0.000000]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6247300154457c44d0d697d0/bg4.jpg"><div class="t m0 x1 h4 y43 ff1 fs2 fc0 sc0 ls0 ws0">相等。</div><div class="t m0 x1 h4 y2c ff1 fs2 fc0 sc0 ls0 ws0">指令示例:</div><div class="t m0 x1 h4 y2d ff2 fs2 fc0 sc0 ls0 ws0">TEQ<span class="_ _45"> </span>R1<span class="_ _5e"> </span><span class="ff1">,<span class="_ _66"> </span></span>R<span class="_ _35"></span>2<span class="_ _ab"> </span><span class="ff1">;<span class="_ _66"> </span>将寄存<span class="_ _35"></span>器<span class="_ _74"> </span></span>R1<span class="_ _31"> </span><span class="ff1">的值与寄存器<span class="_ _46"> </span></span>R2<span class="_ _31"> </span><span class="ff1">的值按位异或<span class="_ _ac"> </span>,<span class="_ _66"> </span>并根</span></div><div class="t m0 xb h4 y2e ff1 fs2 fc0 sc0 ls0 ws0">据结果设置<span class="_ _53"> </span><span class="ff2">CPS<span class="_ _35"></span>R<span class="_ _60"> </span></span>的标志位</div><div class="t m0 x1 h3 y4 ff2 fs1 fc0 sc0 ls0 ws0">7<span class="_ _ad"> </span><span class="ff1">、<span class="_ _ae"> </span></span>ADD<span class="_ _af"> </span><span class="ff1">指令</span></div><div class="t m0 x1 h4 y30 ff2 fs2 fc0 sc0 ls0 ws0">ADD<span class="_ _b0"> </span><span class="ff1">指令的格式为:</span></div><div class="t m0 x1 h4 y31 ff2 fs2 fc0 sc0 ls0 ws0">ADD{<span class="_ _b1"> </span><span class="ff1">条件<span class="_ _32"> </span></span>}{S}<span class="_ _92"> </span><span class="ff1">目的寄<span class="_ _35"></span>存器,操<span class="_ _35"></span>作数<span class="_ _29"> </span></span>1<span class="_ _a8"> </span><span class="ff1">,操作<span class="_ _35"></span>数<span class="_ _74"> </span></span>2</div><div class="t m0 x1 h4 y32 ff2 fs2 fc0 sc0 ls0 ws0">ADD<span class="_ _b0"> </span><span class="ff1">指令用于把两个操<span class="_ _35"></span>作数相加<span class="_ _35"></span>,并将结<span class="_ _35"></span>果存放到<span class="_ _35"></span>目的寄存<span class="_ _35"></span>器中。操<span class="_ _35"></span>作数<span class="_ _b2"> </span></span>1<span class="_ _47"> </span><span class="ff1">应是一个寄存</span></div><div class="t m0 x1 h4 y33 ff1 fs2 fc0 sc0 ls0 ws0">器,操作数<span class="_ _53"> </span><span class="ff2">2<span class="_ _47"> </span></span>可以是<span class="_ _35"></span>一个寄存<span class="_ _35"></span>器,被移<span class="_ _35"></span>位的寄存<span class="_ _35"></span>器,或一<span class="_ _35"></span>个立即数<span class="_ _35"></span>。</div><div class="t m0 x1 h4 y34 ff1 fs2 fc0 sc0 ls0 ws0">指令示例<span class="_ _51"> </span>:</div><div class="t m0 x1 h4 y35 ff2 fs2 fc0 sc0 ls0 ws0">ADD<span class="_ _c"> </span>R0<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R1<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R2<span class="_ _71"> </span><span class="ff1">;<span class="_ _2f"> </span></span>R0<span class="_ _15"> </span>=<span class="_ _30"> </span>R<span class="_ _35"></span>1<span class="_ _31"> </span>+<span class="_ _b3"> </span>R2</div><div class="t m0 x1 h4 y36 ff2 fs2 fc0 sc0 ls0 ws0">ADD<span class="_ _c"> </span>R0<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R1<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>#256<span class="_ _b4"> </span><span class="ff1">;<span class="_ _2f"> </span></span>R0<span class="_ _15"> </span>=<span class="_ _30"> </span>R1<span class="_ _31"> </span>+<span class="_ _89"> </span>256</div><div class="t m0 x1 h4 y37 ff2 fs2 fc0 sc0 ls0 ws0">ADD<span class="_ _c"> </span>R0<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R2<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R3<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>LSL#1<span class="_ _50"> </span><span class="ff1">;<span class="_ _2f"> </span></span>R0<span class="_ _31"> </span>=<span class="_ _b3"> </span>R2<span class="_ _31"> </span>+<span class="_ _b3"> </span>(R3<span class="_ _99"> </span><<<span class="_ _2f"> </span>1)</div><div class="t m0 x1 h3 yd ff2 fs2 fc0 sc0 ls0 ws0">8<span class="_ _48"> </span><span class="ff1">、<span class="_ _4"> </span></span><span class="fs1">A<span class="_ _35"></span>D<span class="_ _35"></span>C<span class="_ _a4"> </span><span class="ff1">指令</span></span></div><div class="t m0 x1 h4 y39 ff2 fs2 fc0 sc0 ls0 ws0">ADC<span class="_ _92"> </span><span class="ff1">指令的格式为:</span></div><div class="t m0 x1 h3 yf ff2 fs1 fc0 sc0 ls0 ws0">ADC{<span class="_ _b5"> </span><span class="ff1">条件<span class="_ _e"> </span></span>}{S}<span class="_ _60"> </span><span class="ff1">目的寄存器,操作数<span class="_ _b6"> </span></span>1<span class="_ _ad"> </span><span class="ff1">,操作数<span class="_ _6"> </span></span>2</div><div class="t m0 x1 h4 y3b ff2 fs2 fc0 sc0 ls0 ws0">ADC<span class="_ _92"> </span><span class="ff1">指令用于把两个<span class="_ _35"></span>操作数相<span class="_ _35"></span>加,再加<span class="_ _35"></span>上<span class="_ _2e"> </span></span>CP<span class="_ _35"></span>SR<span class="_ _60"> </span><span class="ff1">中的<span class="_ _5a"> </span></span>C<span class="_ _49"> </span><span class="ff1">条件标<span class="_ _35"></span>志位的值<span class="_ _35"></span>,并将结<span class="_ _35"></span>果存放到</span></div><div class="t m0 x1 h4 y3c ff1 fs2 fc0 sc0 ls0 ws0">目的寄存器中。<span class="_ _35"></span>它使用一<span class="_ _35"></span>个<span class="_ _b7"> </span>进位标志位<span class="_ _50"> </span>,这样<span class="_ _35"></span>就可以做比<span class="_ _a"> </span><span class="ff2">32<span class="_ _17"> </span></span>位大的<span class="_ _35"></span>数的加法<span class="_ _35"></span>,注意不<span class="_ _35"></span>要忘</div><div class="t m0 x1 h4 y3d ff1 fs2 fc0 sc0 ls0 ws0">记设置<span class="_ _67"> </span><span class="ff2">S<span class="_ _b3"> </span></span>后缀来更改进位标志<span class="_ _b8"> </span>。操作数<span class="_ _b9"> </span><span class="ff2">1<span class="_ _47"> </span></span>应是一个寄存器,操作数<span class="_ _ba"> </span><span class="ff2">2<span class="_ _47"> </span></span>可以是一个寄存器,</div><div class="t m0 x1 h4 y3e ff1 fs2 fc0 sc0 ls0 ws0">被移位的寄存器<span class="_ _35"></span>,或一个<span class="_ _35"></span>立即数。</div><div class="t m0 x1 h4 y3f ff1 fs2 fc0 sc0 ls0 ws0">以下指令序列完<span class="_ _35"></span>成两个<span class="_ _94"> </span><span class="ff2">128<span class="_ _99"> </span></span>位数的加法<span class="_ _50"> </span>,<span class="_ _66"> </span>第一个<span class="_ _35"></span>数由高到<span class="_ _35"></span>低存放在<span class="_ _35"></span>寄存器<span class="_ _61"> </span><span class="ff2">R7<span class="_ _5e"> </span></span>~<span class="_ _66"> </span><span class="ff2">R4<span class="_ _bb"> </span></span>,<span class="_ _66"> </span>第二个</div><div class="t m0 x1 h4 y15 ff1 fs2 fc0 sc0 ls0 ws0">数由高到低存放<span class="_ _35"></span>在寄存器<span class="_ _5c"> </span><span class="ff2">R1<span class="_ _35"></span>1<span class="_ _99"> </span></span>~<span class="_ _3a"> </span><span class="ff2">R<span class="_ _35"></span>8<span class="_ _5e"> </span></span>,运算结果由高<span class="_ _35"></span>到低存放<span class="_ _35"></span>在寄存器<span class="_ _7a"> </span><span class="ff2">R3<span class="_ _5e"> </span></span>~<span class="_ _3a"> </span><span class="ff2">R0<span class="_ _5e"> </span></span>:</div><div class="t m0 x1 h4 y16 ff2 fs2 fc0 sc0 ls0 ws0">ADDS<span class="_ _bc"> </span>R0<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R4<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R8<span class="_ _bd"> </span><span class="ff1">;<span class="_ _2f"> </span>加低端的字</span></div><div class="t m0 x1 h4 y17 ff2 fs2 fc0 sc0 ls0 ws0">ADCS<span class="_ _bd"> </span>R1<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R5<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R9<span class="_ _be"> </span><span class="ff1">;<span class="_ _2f"> </span>加第二个字,带<span class="_ _35"></span>进位</span></div><div class="t m0 x1 h4 y18 ff2 fs2 fc0 sc0 ls0 ws0">ADCS<span class="_ _bd"> </span>R2<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R6<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R10<span class="_ _b9"> </span><span class="ff1">;<span class="_ _2f"> </span>加第三<span class="_ _35"></span>个字,带<span class="_ _35"></span>进位</span></div><div class="t m0 x1 h4 y19 ff2 fs2 fc0 sc0 ls0 ws0">ADC<span class="_ _bf"> </span>R3<span class="_ _5e"> </span><span class="ff1">,<span class="_ _66"> </span></span>R<span class="_ _35"></span>7<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R1<span class="_ _35"></span>1<span class="_ _53"> </span><span class="ff1">;<span class="_ _2f"> </span>加第四个字,带<span class="_ _35"></span>进位</span></div><div class="t m0 x1 h3 y6c ff2 fs2 fc0 sc0 ls0 ws0">9<span class="_ _48"> </span><span class="ff1">、<span class="_ _4"> </span></span><span class="fs1">SUB<span class="_ _c0"> </span><span class="ff1">指令</span></span></div><div class="t m0 x1 h4 y1b ff2 fs2 fc0 sc0 ls0 ws0">SU<span class="_ _35"></span>B<span class="_ _69"> </span><span class="ff1">指令的格式为:</span></div><div class="t m0 x1 h4 y1c ff2 fs2 fc0 sc0 ls0 ws0">SU<span class="_ _35"></span>B{<span class="_ _43"> </span><span class="ff1">条件<span class="_ _40"> </span></span>}{S}<span class="_ _92"> </span><span class="ff1">目的寄<span class="_ _35"></span>存器,操<span class="_ _35"></span>作数<span class="_ _c1"> </span></span>1<span class="_ _48"> </span><span class="ff1">,操作数<span class="_ _74"> </span></span>2<span class="_ _55"> </span><span class="ff1">(<span class="_ _3a"> </span>只能让<span class="_ _35"></span>操作数<span class="_ _46"> </span></span>2<span class="_ _47"> </span><span class="ff1">为立即数<span class="_ _51"> </span>)</span></div><div class="t m0 x1 h4 y1d ff2 fs2 fc0 sc0 ls0 ws0">SU<span class="_ _35"></span>B<span class="_ _69"> </span><span class="ff1">指令用于把操作<span class="_ _35"></span>数<span class="_ _90"> </span></span>1<span class="_ _47"> </span><span class="ff1">减去操<span class="_ _35"></span>作数<span class="_ _53"> </span></span>2<span class="_ _48"> </span><span class="ff1">,<span class="_ _d"> </span>并将结果存放到<span class="_ _35"></span>目的寄存器中<span class="_ _75"> </span>。<span class="_ _d"> </span>操作数<span class="_ _25"> </span></span>1<span class="_ _86"> </span><span class="ff1">应是一<span class="_ _35"></span>个</span></div><div class="t m0 x1 h4 y1e ff1 fs2 fc0 sc0 ls0 ws0">寄存器<span class="_ _4e"> </span>,<span class="_ _c2"> </span>操作数<span class="_ _25"> </span><span class="ff2">2<span class="_ _47"> </span></span>可以是一个寄存<span class="_ _35"></span>器<span class="_ _19"> </span>,<span class="_ _c2"> </span>被移位<span class="_ _35"></span>的寄存器<span class="_ _c3"> </span>,<span class="_ _c2"> </span>或一个立即数<span class="_ _c4"> </span>。<span class="_ _c2"> </span>该指令可用于有<span class="_ _35"></span>符</div><div class="t m0 x1 h4 y1f ff1 fs2 fc0 sc0 ls0 ws0">号数或无符号数<span class="_ _35"></span>的减法运<span class="_ _35"></span>算。</div><div class="t m0 x1 h4 y20 ff1 fs2 fc0 sc0 ls0 ws0">指令示例<span class="_ _51"> </span>:</div><div class="t m0 x1 h4 y21 ff2 fs2 fc0 sc0 ls0 ws0">SU<span class="_ _35"></span>B<span class="_ _c5"> </span>R0<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R1<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R2<span class="_ _c6"> </span><span class="ff1">;<span class="_ _2f"> </span></span>R0<span class="_ _31"> </span>=<span class="_ _89"> </span>R<span class="_ _35"></span>1<span class="_ _15"> </span>-<span class="_ _2c"> </span>R2</div><div class="t m0 x1 h4 y22 ff2 fs2 fc0 sc0 ls0 ws0">SU<span class="_ _35"></span>B<span class="_ _c5"> </span>R0<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R1<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>#256<span class="_ _b4"> </span><span class="ff1">;<span class="_ _2f"> </span></span>R0<span class="_ _31"> </span>=<span class="_ _b3"> </span>R1<span class="_ _31"> </span>-<span class="_ _2c"> </span>256</div><div class="t m0 x1 h4 y23 ff2 fs2 fc0 sc0 ls0 ws0">SU<span class="_ _35"></span>B<span class="_ _c5"> </span>R0<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R2<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R3<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>LS<span class="_ _35"></span>L#1<span class="_ _50"> </span><span class="ff1">;<span class="_ _2f"> </span></span>R0<span class="_ _31"> </span>=<span class="_ _89"> </span>R<span class="_ _35"></span>2<span class="_ _31"> </span>-<span class="_ _c7"> </span>(R3<span class="_ _99"> </span><<<span class="_ _2f"> </span>1)</div><div class="t m0 x1 h4 y24 ff2 fs2 fc0 sc0 ls0 ws0">10<span class="_ _3a"> </span><span class="ff1">、<span class="_ _66"> </span></span>~~~~<span class="_ _35"></span>C<span class="_ _b5"> </span><span class="ff1">指令</span></div><div class="t m0 x1 h4 y25 ff2 fs2 fc0 sc0 ls0 ws0">~~~~C<span class="_ _b5"> </span><span class="ff1">指令的<span class="_ _35"></span>格式为:</span></div><div class="t m0 x1 h4 y26 ff2 fs2 fc0 sc0 ls0 ws0">~~~~C{<span class="_ _c8"> </span><span class="ff1">条件<span class="_ _32"> </span></span>}{S}<span class="_ _92"> </span><span class="ff1">目的寄<span class="_ _35"></span>存器,操<span class="_ _35"></span>作数<span class="_ _29"> </span></span>1<span class="_ _a8"> </span><span class="ff1">,操作<span class="_ _35"></span>数<span class="_ _74"> </span></span>2</div><div class="t m0 x1 h4 y27 ff2 fs2 fc0 sc0 ls0 ws0">~~~~C<span class="_ _b5"> </span><span class="ff1">指令用<span class="_ _35"></span>于把操作<span class="_ _35"></span>数<span class="_ _90"> </span></span>1<span class="_ _47"> </span><span class="ff1">减去操<span class="_ _35"></span>作数<span class="_ _53"> </span></span>2<span class="_ _48"> </span><span class="ff1">,<span class="_ _d"> </span>再减去<span class="_ _25"> </span></span>C<span class="_ _35"></span>PSR<span class="_ _60"> </span><span class="ff1">中<span class="_ _3a"> </span>的<span class="_ _17"> </span></span>C<span class="_ _49"> </span><span class="ff1">条件标<span class="_ _35"></span>志位的反<span class="_ _35"></span>码<span class="_ _7e"> </span>,<span class="_ _7f"> </span>并将结</span></div><div class="t m0 x1 h4 y28 ff1 fs2 fc0 sc0 ls0 ws0">果存放到目的寄<span class="_ _35"></span>存器中<span class="_ _8a"> </span>。<span class="_ _d"> </span>操作数<span class="_ _25"> </span><span class="ff2">1<span class="_ _47"> </span></span>应是一<span class="_ _35"></span>个寄存器<span class="_ _c3"> </span>,<span class="_ _c2"> </span>操作数<span class="_ _25"> </span><span class="ff2">2<span class="_ _86"> </span></span>可以是<span class="_ _35"></span>一个寄存<span class="_ _35"></span>器<span class="_ _19"> </span>,<span class="_ _c9"> </span>被移位的</div><div class="t m0 x1 h4 y29 ff1 fs2 fc0 sc0 ls0 ws0">寄存器<span class="_ _4e"> </span>,<span class="_ _d"> </span>或一个<span class="_ _35"></span>立即数<span class="_ _c4"> </span>。<span class="_ _d"> </span>该指令<span class="_ _35"></span>使用进位<span class="_ _35"></span>标志来表<span class="_ _35"></span>示借位<span class="_ _9b"> </span>,<span class="_ _d"> </span>这样就<span class="_ _35"></span>可以做大<span class="_ _35"></span>于<span class="_ _90"> </span><span class="ff2">32<span class="_ _9"> </span></span>位的减法</div><div class="t m2 x6 h4 y29 ff1 fs2 fc0 sc0 ls0 ws0">,</div><div class="t m0 x1 h4 y2a ff1 fs2 fc0 sc0 ls0 ws0">注意不要忘记设<span class="_ _35"></span>置<span class="_ _90"> </span><span class="ff2">S<span class="_ _b3"> </span></span>后缀来<span class="_ _35"></span>更改进位<span class="_ _35"></span>标志<span class="_ _ca"> </span>。<span class="_ _3a"> </span>该指令可用于有<span class="_ _35"></span>符号数或<span class="_ _35"></span>无符号数<span class="_ _35"></span>的减法运<span class="_ _35"></span>算<span class="_ _cb"> </span>。</div><div class="t m0 x1 h4 y2b ff1 fs2 fc0 sc0 ls0 ws0">指令示例:</div></div><div class="pi" data-data='{"ctm":[1.611830,0.000000,0.000000,1.611830,0.000000,0.000000]}'></div></div>
<div id="pf5" class="pf w0 h0" data-page-no="5"><div class="pc pc5 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/6247300154457c44d0d697d0/bg5.jpg"><div class="t m0 x1 h4 y43 ff2 fs2 fc0 sc0 ls0 ws0">SU<span class="_ _35"></span>BS<span class="_ _cc"> </span>R0<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R1<span class="_ _5e"> </span><span class="ff1">,<span class="_ _66"> </span></span>R<span class="_ _35"></span>2<span class="_ _cd"> </span><span class="ff1">;<span class="_ _2f"> </span></span>R0<span class="_ _31"> </span>=<span class="_ _b3"> </span>R1<span class="_ _31"> </span>-<span class="_ _c7"> </span>R2<span class="_ _15"> </span>-<span class="_ _86"> </span><span class="ff1">!<span class="_ _66"> </span></span>C<span class="_ _89"> </span><span class="ff1">,并根据结果设</span></div><div class="t m0 xc h4 y2c ff1 fs2 fc0 sc0 ls0 ws0">置<span class="_ _17"> </span><span class="ff2">C<span class="_ _35"></span>PS<span class="_ _35"></span>R<span class="_ _a2"> </span></span>的进位</div><div class="t m0 x1 h4 y2e ff2 fs2 fc0 sc0 ls0 ws0">64<span class="_ _17"> </span><span class="ff1">位操作<span class="_ _35"></span>数的减法</span></div><div class="t m0 x1 h5 y2f ff2 fs2 fc0 sc0 ls0 ws0">SU<span class="_ _35"></span>BS<span class="_ _af"> </span>R0,R0,R2</div><div class="t m0 x1 h4 y30 ff2 fs2 fc0 sc0 ls0 ws0">SBS<span class="_ _e"> </span>R1,R1<span class="_ _5d"> </span><span class="ff1">,<span class="_ _66"> </span></span>R<span class="_ _35"></span>3</div><div class="t m0 x1 h4 y31 ff2 fs2 fc0 sc0 ls0 ws0">11<span class="_ _66"> </span><span class="ff1">、<span class="_ _3a"> </span></span>R<span class="_ _89"> </span>SB<span class="_ _3c"> </span><span class="ff1">指令</span></div><div class="t m0 x1 h4 y32 ff2 fs2 fc0 sc0 ls0 ws0">R<span class="_ _89"> </span>SB<span class="_ _3c"> </span><span class="ff1">指令的<span class="_ _35"></span>格式为:</span></div><div class="t m0 x1 h4 y33 ff2 fs2 fc0 sc0 ls0 ws0">R<span class="_ _89"> </span>SB<span class="_ _84"> </span>{<span class="_ _a8"> </span><span class="ff1">条件<span class="_ _32"> </span></span>}{S<span class="_ _35"></span>}<span class="_ _92"> </span><span class="ff1">目的寄<span class="_ _35"></span>存器,操<span class="_ _35"></span>作数<span class="_ _29"> </span></span>1<span class="_ _a8"> </span><span class="ff1">,操作<span class="_ _35"></span>数<span class="_ _74"> </span></span>2</div><div class="t m0 x1 h4 y34 ff2 fs2 fc0 sc0 ls0 ws0">R<span class="_ _89"> </span>SB<span class="_ _3c"> </span><span class="ff1">指令称<span class="_ _35"></span>为逆向减<span class="_ _35"></span>法指令<span class="_ _ce"> </span>,<span class="_ _49"> </span>用于把<span class="_ _35"></span>操作数<span class="_ _46"> </span></span>2<span class="_ _47"> </span><span class="ff1">减去操作数<span class="_ _53"> </span></span>1<span class="_ _48"> </span><span class="ff1">,<span class="_ _49"> </span>并将结<span class="_ _35"></span>果存放到<span class="_ _35"></span>目的寄存器中</span></div><div class="t m2 x6 h4 y34 ff1 fs2 fc0 sc0 ls0 ws0">。</div><div class="t m0 x1 h4 y35 ff1 fs2 fc0 sc0 ls0 ws0">操作数<span class="_ _25"> </span><span class="ff2">1<span class="_ _47"> </span></span>应是一个寄存器<span class="_ _35"></span>,操作数<span class="_ _5c"> </span><span class="ff2">2<span class="_ _47"> </span></span>可以是一个寄存<span class="_ _35"></span>器,被移<span class="_ _35"></span>位的寄存<span class="_ _35"></span>器,或一<span class="_ _35"></span>个立即数</div><div class="t m4 x6 h4 y35 ff1 fs2 fc0 sc0 ls0 ws0">。</div><div class="t m0 x1 h4 y36 ff1 fs2 fc0 sc0 ls0 ws0">该指令可用于有<span class="_ _35"></span>符号数或<span class="_ _35"></span>无符号数<span class="_ _35"></span>的减法运<span class="_ _35"></span>算。</div><div class="t m0 x1 h4 y37 ff1 fs2 fc0 sc0 ls0 ws0">指令示例<span class="_ _51"> </span>:</div><div class="t m0 x1 h4 y38 ff2 fs2 fc0 sc0 ls0 ws0">R<span class="_ _89"> </span>SB<span class="_ _cf"> </span>R0<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R1<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R2<span class="_ _d0"> </span><span class="ff1">;<span class="_ _2f"> </span></span>R0<span class="_ _15"> </span>=<span class="_ _30"> </span>R2<span class="_ _d1"> </span><span class="ff1">–<span class="_ _2f"> </span></span>R1</div><div class="t m0 x1 h4 y39 ff2 fs2 fc0 sc0 ls0 ws0">R<span class="_ _89"> </span>SB<span class="_ _cf"> </span>R0<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R1<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>#256<span class="_ _ca"> </span><span class="ff1">;<span class="_ _82"> </span></span>R<span class="_ _35"></span>0<span class="_ _31"> </span>=<span class="_ _b3"> </span>256<span class="_ _63"> </span><span class="ff1">–<span class="_ _2f"> </span></span>R1</div><div class="t m0 x1 h4 y3a ff2 fs2 fc0 sc0 ls0 ws0">R<span class="_ _89"> </span>SB<span class="_ _cf"> </span>R0<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R2<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R3<span class="_ _5e"> </span><span class="ff1">,<span class="_ _66"> </span></span>L<span class="_ _35"></span>SL#1<span class="_ _d2"> </span><span class="ff1">;<span class="_ _2f"> </span></span>R0<span class="_ _31"> </span>=<span class="_ _89"> </span>(R3<span class="_ _d3"> </span><<<span class="_ _2f"> </span>1)<span class="_ _4a"> </span>-<span class="_ _c7"> </span>R2</div><div class="t m0 x1 h4 y3b ff2 fs2 fc0 sc0 ls0 ws0">12<span class="_ _3a"> </span><span class="ff1">、<span class="_ _66"> </span></span>R<span class="_ _35"></span>SC<span class="_ _40"> </span><span class="ff1">指令</span></div><div class="t m0 x1 h4 y3c ff2 fs2 fc0 sc0 ls0 ws0">RSC<span class="_ _40"> </span><span class="ff1">指令的<span class="_ _35"></span>格式为:</span></div><div class="t m0 x1 h4 y3d ff2 fs2 fc0 sc0 ls0 ws0">RSC<span class="_ _35"></span>{<span class="_ _c0"> </span><span class="ff1">条件<span class="_ _32"> </span></span>}{S}<span class="_ _92"> </span><span class="ff1">目的寄<span class="_ _35"></span>存器,操<span class="_ _35"></span>作数<span class="_ _29"> </span></span>1<span class="_ _a8"> </span><span class="ff1">,操作<span class="_ _35"></span>数<span class="_ _74"> </span></span>2</div><div class="t m0 x1 h4 y3e ff2 fs2 fc0 sc0 ls0 ws0">RSC<span class="_ _40"> </span><span class="ff1">指令用<span class="_ _35"></span>于把操作数<span class="_ _a"> </span></span>2<span class="_ _47"> </span><span class="ff1">减去操作数<span class="_ _53"> </span></span>1<span class="_ _48"> </span><span class="ff1">,<span class="_ _7f"> </span>再减去<span class="_ _25"> </span></span>C<span class="_ _35"></span>PS<span class="_ _35"></span>R<span class="_ _a2"> </span><span class="ff1">中的<span class="_ _5a"> </span></span>C<span class="_ _49"> </span><span class="ff1">条件标志位的反<span class="_ _35"></span>码<span class="_ _7e"> </span>,<span class="_ _7f"> </span>并将结<span class="_ _35"></span>果</span></div><div class="t m0 x1 h4 y3f ff1 fs2 fc0 sc0 ls0 ws0">存放到目的寄存<span class="_ _35"></span>器中<span class="_ _ca"> </span>。<span class="_ _c9"> </span>操作数<span class="_ _25"> </span><span class="ff2">1<span class="_ _47"> </span></span>应是一个寄存器<span class="_ _4f"> </span>,<span class="_ _d"> </span>操作数<span class="_ _25"> </span><span class="ff2">2<span class="_ _47"> </span></span>可以是<span class="_ _35"></span>一个寄存<span class="_ _35"></span>器<span class="_ _19"> </span>,<span class="_ _c9"> </span>被移位<span class="_ _35"></span>的寄</div><div class="t m0 x1 h4 y15 ff1 fs2 fc0 sc0 ls0 ws0">存器,或一个立<span class="_ _35"></span>即数。该<span class="_ _35"></span>指令使用<span class="_ _35"></span>进位标志<span class="_ _35"></span>来表示借<span class="_ _35"></span>位,这样<span class="_ _35"></span>就可以做<span class="_ _35"></span>大于<span class="_ _d4"> </span><span class="ff2">32<span class="_ _17"> </span></span>位的减法,</div><div class="t m0 x1 h4 y16 ff1 fs2 fc0 sc0 ls0 ws0">注意不要忘记设<span class="_ _35"></span>置<span class="_ _90"> </span><span class="ff2">S<span class="_ _b3"> </span></span>后缀来<span class="_ _35"></span>更改进位<span class="_ _35"></span>标志<span class="_ _ca"> </span>。<span class="_ _3a"> </span>该指令可用于有<span class="_ _35"></span>符号数或<span class="_ _35"></span>无符号数<span class="_ _35"></span>的减法运<span class="_ _35"></span>算<span class="_ _cb"> </span>。</div><div class="t m0 x1 h4 y17 ff1 fs2 fc0 sc0 ls0 ws0">指令示例<span class="_ _51"> </span>:</div><div class="t m0 x1 h4 y18 ff2 fs2 fc0 sc0 ls0 ws0">RSC<span class="_ _67"> </span>R0<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R1<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R2<span class="_ _d5"> </span><span class="ff1">;<span class="_ _2f"> </span></span>R0<span class="_ _31"> </span>=<span class="_ _89"> </span>R<span class="_ _35"></span>2<span class="_ _62"> </span><span class="ff1">–<span class="_ _2f"> </span></span>R<span class="_ _35"></span>1<span class="_ _15"> </span>-<span class="_ _d6"> </span><span class="ff1">!<span class="_ _3a"> </span></span>C</div><div class="t m0 x1 h3 y6d ff2 fs1 fc0 sc0 ls0 ws0">13<span class="_ _9"> </span><span class="ff1">、<span class="_ _9"> </span></span>AND<span class="_ _af"> </span><span class="ff1">指令</span></div><div class="t m0 x1 h4 y1a ff2 fs2 fc0 sc0 ls0 ws0">AND<span class="_ _b0"> </span><span class="ff1">指令的格式为:</span></div><div class="t m0 x1 h4 y1b ff2 fs2 fc0 sc0 ls0 ws0">AND{<span class="_ _b1"> </span><span class="ff1">条件<span class="_ _32"> </span></span>}{S}<span class="_ _92"> </span><span class="ff1">目的寄<span class="_ _35"></span>存器,操<span class="_ _35"></span>作数<span class="_ _29"> </span></span>1<span class="_ _a8"> </span><span class="ff1">,操作<span class="_ _35"></span>数<span class="_ _74"> </span></span>2</div><div class="t m0 x1 h4 y1c ff2 fs2 fc0 sc0 ls0 ws0">AND<span class="_ _b0"> </span><span class="ff1">指令用于在两个操作数上进行逻辑<span class="_ _d7"> </span>与<span class="_ _3a"> </span>运算,并把结果放置到目的寄存器中。操作数<span class="_ _d8"> </span></span>1</div><div class="t m0 x1 h4 y1d ff1 fs2 fc0 sc0 ls0 ws0">应是一个寄存器<span class="_ _c3"> </span>,<span class="_ _c2"> </span>操作数<span class="_ _25"> </span><span class="ff2">2<span class="_ _47"> </span></span>可以是<span class="_ _35"></span>一个寄存<span class="_ _35"></span>器<span class="_ _19"> </span>,<span class="_ _c2"> </span>被移位的寄存器<span class="_ _4f"> </span>,<span class="_ _c9"> </span>或一个<span class="_ _35"></span>立即数<span class="_ _ac"> </span>。<span class="_ _c2"> </span>该指令<span class="_ _35"></span>常</div><div class="t m0 x1 h4 y1e ff1 fs2 fc0 sc0 ls0 ws0">用于<span class="_ _32"> </span>屏蔽操作数<span class="_ _53"> </span><span class="ff2">1<span class="_ _47"> </span></span>的某些<span class="_ _35"></span>位<span class="_ _51"> </span>。</div><div class="t m0 x1 h4 y1f ff1 fs2 fc0 sc0 ls0 ws0">指令示例:</div><div class="t m0 x1 h4 y20 ff2 fs2 fc0 sc0 ls0 ws0">AND<span class="_ _b0"> </span>R0<span class="_ _5e"> </span><span class="ff1">,<span class="_ _d"> </span></span>R0<span class="_ _5e"> </span><span class="ff1">,<span class="_ _d"> </span>#<span class="_ _3a"> </span></span>3<span class="_ _d9"> </span><span class="ff1">;<span class="_ _5e"> </span>该指令保持<span class="_ _53"> </span></span>R0<span class="_ _31"> </span><span class="ff1">的<span class="_ _17"> </span></span>0<span class="_ _48"> </span><span class="ff1">、<span class="_ _d"> </span></span>1<span class="_ _47"> </span><span class="ff1">位<span class="_ _3a"> </span>,<span class="_ _d"> </span>其余位<span class="_ _35"></span>零<span class="_ _51"> </span>。</span></div><div class="t m0 x1 h3 y6e ff2 fs2 fc0 sc0 ls0 ws0">14<span class="_ _3a"> </span><span class="ff1">、<span class="_ _66"> </span></span><span class="fs1">OR<span class="_ _35"></span>R<span class="_ _6e"> </span><span class="ff1">指令</span></span></div><div class="t m0 x1 h4 y22 ff2 fs2 fc0 sc0 ls0 ws0">ORR<span class="_ _da"> </span><span class="ff1">指令的格式为:</span></div><div class="t m0 x1 h4 y23 ff2 fs2 fc0 sc0 ls0 ws0">ORR{<span class="_ _a4"> </span><span class="ff1">条件<span class="_ _32"> </span></span>}{S<span class="_ _35"></span>}<span class="_ _37"> </span><span class="ff1">目的寄<span class="_ _35"></span>存器,操作数<span class="_ _c1"> </span></span>1<span class="_ _48"> </span><span class="ff1">,操作<span class="_ _35"></span>数<span class="_ _74"> </span></span>2</div><div class="t m0 x1 h4 y24 ff2 fs2 fc0 sc0 ls0 ws0">ORR<span class="_ _da"> </span><span class="ff1">指令用于在两个操作数上进行逻辑<span class="_ _db"> </span>或<span class="_ _3a"> </span>运算,并把结果放置到目的寄存器中。操作数<span class="_ _dc"> </span></span>1</div><div class="t m0 x1 h4 y25 ff1 fs2 fc0 sc0 ls0 ws0">应是一个寄存器<span class="_ _c3"> </span>,<span class="_ _c2"> </span>操作数<span class="_ _25"> </span><span class="ff2">2<span class="_ _47"> </span></span>可以是<span class="_ _35"></span>一个寄存<span class="_ _35"></span>器<span class="_ _19"> </span>,<span class="_ _c2"> </span>被移位的寄存器<span class="_ _4f"> </span>,<span class="_ _c9"> </span>或一个<span class="_ _35"></span>立即数<span class="_ _ac"> </span>。<span class="_ _c2"> </span>该指令<span class="_ _35"></span>常</div><div class="t m0 x1 h4 y26 ff1 fs2 fc0 sc0 ls0 ws0">用于<span class="_ _32"> </span>设置操作数<span class="_ _53"> </span><span class="ff2">1<span class="_ _47"> </span></span>的某些<span class="_ _35"></span>位。</div><div class="t m0 x1 h4 y27 ff1 fs2 fc0 sc0 ls0 ws0">指令示例:</div><div class="t m0 x1 h4 y28 ff2 fs2 fc0 sc0 ls0 ws0">ORR<span class="_ _da"> </span>R0<span class="_ _5e"> </span><span class="ff1">,<span class="_ _3a"> </span></span>R0<span class="_ _5e"> </span><span class="ff1">,#<span class="_ _32"> </span></span>3<span class="_ _dd"> </span><span class="ff1">;<span class="_ _2f"> </span>该指令设置<span class="_ _53"> </span></span>R0<span class="_ _31"> </span><span class="ff1">的<span class="_ _17"> </span></span>0<span class="_ _48"> </span><span class="ff1">、<span class="_ _3a"> </span></span>1<span class="_ _47"> </span><span class="ff1">位,其余位保持<span class="_ _35"></span>不变。</span></div><div class="t m0 x1 h3 y42 ff2 fs2 fc0 sc0 ls0 ws0">15<span class="_ _3a"> </span><span class="ff1">、<span class="_ _66"> </span></span><span class="fs1">EOR<span class="_ _1b"> </span><span class="ff1">指令</span></span></div><div class="t m0 x1 h4 y2a ff2 fs2 fc0 sc0 ls0 ws0">EOR<span class="_ _6d"> </span><span class="ff1">指令的<span class="_ _35"></span>格式为:</span></div><div class="t m0 x1 h4 y2b ff2 fs2 fc0 sc0 ls0 ws0">EOR{<span class="_ _cf"> </span><span class="ff1">条件<span class="_ _40"> </span></span>}{S}<span class="_ _92"> </span><span class="ff1">目的寄<span class="_ _35"></span>存器,操<span class="_ _35"></span>作数<span class="_ _c1"> </span></span>1<span class="_ _48"> </span><span class="ff1">,操作<span class="_ _35"></span>数<span class="_ _74"> </span></span>2</div></div><div class="pi" data-data='{"ctm":[1.611830,0.000000,0.000000,1.611830,0.000000,0.000000]}'></div></div>