{"id":183,"date":"2012-05-04T21:06:19","date_gmt":"2012-05-04T21:06:19","guid":{"rendered":"http:\/\/www.cclo.idv.tw:8080\/blogs\/wordpress\/?p=183"},"modified":"2021-11-15T16:33:57","modified_gmt":"2021-11-15T08:33:57","slug":"swapping_nibbles_in_keil_c51","status":"publish","type":"post","link":"https:\/\/blog.cclo.idv.tw\/?p=183","title":{"rendered":"Swapping Nibbles in Keil C51"},"content":{"rendered":"\n<p>\u4eca\u5929\u5beb\u7a0b\u5f0f\u7684\u6642\u5019\uff0c\u6709\u500b\u5730\u65b9\u9700\u8981 swap \u67d0\u500b byte \u7684\u5169\u500b nibbles\u3002\u5176\u5be6 <a href=\"http:\/\/www.keil.com\/support\/man\/docs\/is51\/is51_swap.htm\">8051 \u539f\u672c\u5c31\u6709\u4e00\u500b instruction \u5c08\u9580\u505a\u9019\u4ef6\u4e8b<\/a>\u3002\u82e5\u662f\u76f4\u63a5\u5beb\u7d44\u8a9e\u7684\u8a71\uff0c\u53ea\u8981 3 \u884c\u5c31\u641e\u5b9a\u4e86\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush: text\">    MOV     A,tmp       ; \u5148\u5c07\u539f\u672c\u7684\u503c\u642c\u9032 accumulator\n    SWAP    A           ; swap nibbles\n    MOV     tmp,A       ; \u5148\u5c07\u539f\u672c\u7684\u503c\u642c\u9032 accumulator\n<\/pre>\n\n\n\n<p>\u554f\u984c\u6211\u662f\u7528 C \u5728\u5beb code \u7684\uff0c\u6240\u4ee5\u6211\u5c31\u958b\u59cb\u7814\u7a76\u662f\u4e0d\u662f\u6709\u8fa6\u6cd5\u8b93 Keil C \u5e6b\u6211\u7522\u751f\u9019\u6a23\u7684 code\u3002<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>\u9996\u5148\uff0c\u6211\u5011\u7528\u6a19\u6e96\u7684 C \u7684\u4f5c\u6cd5\u4f86\u505a\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush: c\">    tmp = (tmp &gt;&gt; 4) | (tmp &lt;&lt; 4);\n<\/pre>\n\n\n\n<p>Keil C \u7522\u751f\u51fa\u4f86\u7684\u7d44\u8a9e\u7a0b\u5f0f\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush: text\">    MOV     A,tmp\n    SWAP    A\n    ANL     A,#0F0H\n    MOV     R7,A\n    MOV     A,tmp\n    SWAP    A\n    ANL     A,#0FH\n    ORL     A,R7\n    MOV     tmp,A\n<\/pre>\n\n\n\n<p>\u9019\u6a23\u7ffb\u51fa\u4f86\u7684\u7d44\u8a9e\u7a0b\u5f0f\u96d6\u7136\u770b\u8d77\u4f86\u5f88\u9577\uff0c\u4e0d\u904e\u6211\u5011\u9084\u662f\u53ef\u4ee5\u770b\u51fa Keil C \u53b2\u5bb3\u7684\u5730\u65b9\uff1a\u96d6\u7136\u6211\u5011\u5beb\u7684\u7a0b\u5f0f\u78bc\u662f\u300c\u5411\u5de6\/\u5411\u53f3 shift 4 \u500b bits\u300d\uff0c\u4f46\u7ffb\u51fa\u4f86\u7684\u4e26\u6c92\u6709\u300c\u9023\u7e8c shift 4 \u6b21\u300d\u9019\u6a23\u7684\u904e\u7a0b\uff088051 \u7684 shift \u4e00\u6b21\u53ea\u80fd shift 1 \u500b bit\uff0c\u6240\u4ee5\u8981 shift \u591a\u500b bits \u5c31\u5f97\u7528\u8ff4\u5708\u4f86\u8dd1\uff09\uff0c\u800c\u662f\u5f88\u8070\u660e\u5730\u5229\u7528 <code>SWAP<\/code>\uff0c\u5206\u5225\u53d6\u5f97 high\/low nibble\uff0c\u518d\u91cd\u65b0\u7d44\u5408\u6210 \u5b8c\u6210\u7684 byte\u3002<\/p>\n\n\n\n<p>\u9019\u6a23\u7684\u7d50\u679c\u8b93\u6211\u883b\u8208\u596e\u7684\uff0c\u56e0\u70ba\u9019\u8868\u793a Keil C \u6703\u53bb\u770b bit operation \u7684\u4f4d\u6578\uff0c\u9069\u6642\u5730\u4f7f\u7528\u8655\u7406 nibble \u7684\u6307\u4ee4\u3002\u4e5f\u5c31\u662f\u8aaa\uff0c\u6211\u6709\u6a5f\u6703\u627e\u5230\u4e00\u7a2e\u5beb\u6cd5\uff0c\u8b93 Keil C \u7ffb\u51fa\u76f4\u63a5 <code>SWAP<\/code> \u7684\u7d44\u8a9e\u7a0b\u5f0f\u3002<\/p>\n\n\n\n<p>\u4f46\u63a5\u4e0b\u4f86\u6211\u5c31\u5361\u4f4f\u4e86\uff0c\u56e0\u70ba\u6211\u627e\u4e0d\u5230\u66f4\u597d\u7684\u5beb\u6cd5\u53bb\u8868\u9054 \"swap nibble\" \u9019\u6a23\u7684\u60f3\u6cd5\u3002<\/p>\n\n\n\n<p>\u5f8c\u4f86\uff0c\u6211\u5728 Keil \u7684\u6587\u4ef6\u4e2d\u627e\u5230<a href=\"http:\/\/www.keil.com\/support\/man\/docs\/c51\/c51_lib_intrinsic.htm\">\u4e00\u7cfb\u5217 intrinsic routines<\/a>\u3002\u5f88\u4e0d\u5e78\u5730\uff0c\u88e1\u9762\u9084\u662f\u6c92\u6709 swap\uff1b\u4f46\u537b<code>_crol_()<\/code> \u548c <code>_cror_()<\/code> \u9019\u6a23\u7684 rotate \u51fd\u5f0f\u3002\u65bc\u662f\u6211\u8a66\u8457\u9019\u6a23\u5beb\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush: c\">    tmp = _crol_(tmp,4);\n<\/pre>\n\n\n\n<p>\u7d50\u679c\u7ffb\u51fa\u4f86\u7684\u7d44\u8a9e\u5982\u4e0b\uff1a<\/p>\n\n\n\n<pre class=\"wp-block-preformatted brush: text\">    MOV     R7,tmp\n    MOV     R0,#04H\n    MOV     A,R7\n    INC     R0\n    SJMP    ?C0081\n?C0080:\n    RL      A\n?C0081:\n    DJNZ    R0,?C0080\n    MOV     tmp,A\n<\/pre>\n\n\n\n<p>\u7d50\u679c\u4ee4\u4eba\u5931\u671b\uff1a\u8b8a\u5f97\u66f4\u7cdf\u4e86\uff01\u6c92\u6709\u76f4\u63a5\u7528 <code>SWAP<\/code> \u5c31\u7b97\u4e86\uff0c\u9084\u5229\u7528\u8ff4\u5708\u7684\u65b9\u5f0f\u4f86\u8655\u7406\u3002\u770b\u6a23\u5b50\u9019\u500b\u65b9\u6cd5\u4e5f\u884c\u4e0d\u901a\u3002<\/p>\n\n\n\n<p>\u5269\u4e0b\u4e00\u500b\u65b9\u6cd5\uff1a\u5beb inline assembly\u3002\u4f46 Keil C \u7684 inline assembly \u5be6\u5728\u5f88\u96e3\u7528\uff1a\u53ea\u8981\u7528\u4e86\u9019\u500b\u529f\u80fd\uff0c\u8a72 .C \u6a94\u5c31\u4e0d\u80fd\u76f4\u63a5\u7de8\u8b6f\u6210 .OBJ \u6a94\uff0c\u800c\u5fc5\u9808\u5148\u7522\u751f\u51fa\u7d44\u8a9e\u7a0b\u5f0f\uff0c\u518d\u53e6\u5916\u53bb\u7d44\u8b6f\u9019\u500b\u6a94\u6848\u3002\u5f88\u9ebb\u7169\u3002\u7ad9\u5728\u5c08\u6848\u7dad\u8b77\u7684\u89d2\u5ea6\u4f86\u770b\uff0c\u4ee3\u50f9\u592a\u9ad8\u4e86\uff0c\u6240\u4ee5\u6211\u653e\u68c4\u9019\u6a23\u7684\u505a\u6cd5\u3002<\/p>\n\n\n\n<p>\u5230\u982d\u4f86\uff0c\u6211\u9084\u662f\u63a1\u7528\u4e00\u958b\u59cb\u7684\u90a3\u7a2e\u505a\u6cd5\uff0c\u7562\u7adf\u5728\u53ef\u7dad\u8b77\u6027\u3001\u57f7\u884c\u901f\u5ea6\u3001code size \u7b49\u5404\u65b9\u9762\uff0c\u90fd\u7b97\u662f\u5e73\u8861\u7684\u505a\u6cd5\u3002\u53ea\u662f\u4e0d\u80fd\u7528\u5230 8051 \u63d0\u4f9b\u7684\u529f\u80fd\uff0c\u5fc3\u4e2d\u9084\u662f\u6709\u4e9b\u907a\u61be....<\/p>\n\n\n\n<p>PS: \u5728 <a href=\"http:\/\/www.keil.com\/forum\/3382\/\">\u9019\u500b\u8a0e\u8ad6\u4e32<\/a>\u4e2d\uff0c\u4e5f\u6709\u4eba\u63d0\u5230\u7528 intrisic routine \u7684\u505a\u6cd5\uff0c\u800c\u4e14\u8aaa Keil C \u6703\u5e6b\u5fd9\u505a\u6700\u4f73\u5316\uff1b\u4e0d\u904e\u6211\u5be6\u9a57\u7684\u7d50\u679c\u4e26\u4e0d\u662f\u9019\u6a23\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u4eca\u5929\u5beb\u7a0b\u5f0f\u7684\u6642\u5019\uff0c\u6709\u500b\u5730\u65b9\u9700\u8981 swap \u67d0\u500b byte \u7684\u5169\u500b nibbles\u3002\u5176\u5be6 8051 \u539f\u672c\u5c31\u6709\u4e00\u500b [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[10,13],"tags":[18,20,23,32],"table_tags":[],"class_list":["post-183","post","type-post","status-publish","format-standard","hentry","category--working-days","category--computer-science","tag-18","tag-assembly","tag-c-2","tag-keil-c51"],"aioseo_notices":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/blog.cclo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts\/183","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.cclo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.cclo.idv.tw\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.cclo.idv.tw\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.cclo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=183"}],"version-history":[{"count":1,"href":"https:\/\/blog.cclo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts\/183\/revisions"}],"predecessor-version":[{"id":586,"href":"https:\/\/blog.cclo.idv.tw\/index.php?rest_route=\/wp\/v2\/posts\/183\/revisions\/586"}],"wp:attachment":[{"href":"https:\/\/blog.cclo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=183"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.cclo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=183"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.cclo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=183"},{"taxonomy":"table_tags","embeddable":true,"href":"https:\/\/blog.cclo.idv.tw\/index.php?rest_route=%2Fwp%2Fv2%2Ftable_tags&post=183"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}