0

我正在使用 tasm。这个问题有点基本,但我不记得该怎么做。对此道歉,我的问题是假设我有两个具有不同值的寄存器,我希望将它们组合(合并)并将值保存到一个变量中。我该怎么做?假设ah=01& al=04。我希望将它们合并为一个14等效的 hex值0E。有任何想法吗?

4

2 回答 2

0

一般的想法是乘以ah10 然后加到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

这个是用 KEIL 软件为 16 个寄存器的 ARM 模型用汇编语言编写的

   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 回答