Assembly 将两个寄存器的值合并为一个变量

Assembly 将两个寄存器的值合并为一个变量,assembly,x86,tasm,Assembly,X86,Tasm,我在用tasm。这个问题有点基本,但我记不起该怎么做了。对此表示歉意,我的问题是,假设我有两个具有不同值的寄存器,我希望组合(合并)它们并将值保存到单个变量中。我该怎么做? 假设ah=01和al=04。我希望将它们合并为一个值14,十六进制等效值0E。有什么想法吗?一般的想法是将ah乘以10,然后加上al。并不是说x86汇编中的实现有点单调乏味,因为乘法指令的操作范围有限。作为替代方案,您可以将乘法分解为移位和加法,如: add ah, ah ; ah*2 add al, ah ; al + 2

我在用tasm。这个问题有点基本,但我记不起该怎么做了。对此表示歉意,我的问题是,假设我有两个具有不同值的寄存器,我希望组合(合并)它们并将值保存到单个变量中。我该怎么做?
假设
ah=01
al=04
。我希望将它们合并为一个值
14
,十六进制等效值
0E
。有什么想法吗?

一般的想法是将
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位版本。

这是使用KEIL软件用汇编语言编写的,适用于16个寄存器的ARM型号

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

如果R1和R2中变量的内容被添加并存储在R3中,即R3,则在这种情况下,您可以使用
AAD