我正在使用 tasm。这个问题有点基本,但我不记得该怎么做。对此道歉,我的问题是假设我有两个具有不同值的寄存器,我希望将它们组合(合并)并将值保存到一个变量中。我该怎么做?假设ah=01
& al=04
。我希望将它们合并为一个14
等效的 hex值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
这个是用 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 回答