0

タスムを使用しています。質問は基本的なものですが、その方法を思い出せません。申し訳ありませんが、私の質問は、値が異なる 2 つのレジスタがあり、それらを結合 (マージ) して値を 1 つの変数に保存したいとします。どうすればいいですか?ah=01&と仮定しal=04ます。14それらを16 進数の 1 つの値にマージしたいと考えています0E。何か案は?

4

2 に答える 2

0

一般的な考え方はah、10 を掛けて に足すことalです。乗算命令は操作できる対象が限られているため、x86 アセンブリでの実装がやや面倒というわけではありません。別の方法として、次のように、乗算をシフトと加算に分解できます。

add ah, ah ; ah*2
add al, ah ; al + 2*ah
shl ah, 2  ; 8*ah
add al, ah ; al + 10*ah

コメントは元の値を参照しており、これは 8 ビット バージョンであることに注意してください。

于 2013-09-29T14:48:16.720 に答える
0

これは、16 レジスタの ARM モデル用の KEIL ソフトウェアを使用して、アセンブリ言語でコーディングされています。

   main 
       LDR R1,#0x07 
       LDR R2,#0x12
       LDR R3,#0x00
       ADD R3,R1,R2 
   END

ここで、R1 と R2 の変数の内容が追加され、R3 に格納されます。つまり、R3 <--R1+R2 です。R3 に格納された値は、コード全体のデバッグ後に表示されます。

于 2017-08-30T12:17:21.700 に答える