我通过过去微软提出的面试问题样本在线寻找并发现了这一问题:
The following asm block performs a common math function, what is it?
cwd xor ax, dx sub ax, dx
有人可以回答这个问题并向我解释答案吗?谢谢!!
更新:好的,因此它可以计算绝对值。有人可以逐步解释这是怎么做的吗? IE。解释每个指令在哪个寄存器中放入什么以及在哪个寄存器等上执行的alu操作。谢谢!
最佳答案
查找绝对值
它只能在AX/EAX上运行-破坏寄存器(DX/EDX)-在Pentium和更新的处理器上可以更快地完成问题是CWD指令。要替换CWD,可以使用以下组合:mov dx,ax sar dx,15(如果使用32位寄存器,则将其值改为31。)
cwd-将单词转换为双字。
xor ax,dx => ax = ax xor dx
关于assembly - 微软ASM面试有疑问吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1425656/