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