我正在使用tasm。问题是基本的,但我不记得怎么做了。为此道歉,我的问题是假设我有两个具有不同值的寄存器,我希望将它们合并(合并)并将值保存到单个变量中。我该怎么做?
假设ah=01
& al=04
。我希望将它们合并为14
,十六进制等效0E
的单个值。有什么想法吗?
答案 0 :(得分: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位版本。
答案 1 :(得分:0)
这个用汇编语言编写,使用KEIL软件为16个寄存器的ARM模型
org.joda.time.DateTimeZone#forTimeZone(java.util.TimeZone zone)
其中R1和R2中的变量内容被添加并存储在R3中,即R3 < - R1 + R2。在调试整个代码后,存储在R3中的值将可见