我目前正在创建一个程序,将小数转换为二进制。我目前正在使用shift方法来获取0和1。

我看过其他导致使用LAHF和PUSHF来访问标志并进行设置的线程。但是,我要做的就是获取进位标志的当前值并将其存储到寄存器中(即该位置的1或0),然后将其复制到数组中。由于我对LAFH或PUSHF不太熟悉,所以我想知道您是否可以使用LAFH或PUSHF完成我上面要求的相同任务。

例如,我想将当前CF移到eax中:mov edx,cf(我知道这行不通,但是我正在寻找类似的东西)。复制1或0后,我将其移入从C ++程序传递的数组中。

最佳答案

我发现在EDX中存储进位的最明显方法是:

setc  dl
movzx edx, dl


它比其他答案中提出的方法短(6个字节),但最短(5个字节)必须是:

pushfd
pop   edx
and   edx, 1

关于assembly - 英特尔x86组装-读取和复制进位标志,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33787812/

10-13 00:20