许多/大多数指令集参考将告诉您哪些标志受哪些指令影响,例如:
http ://home.comcast.net/~fbui/intel.html
一些参考手册有每条指令的信息,一些有一个单独的表,其目的是显示哪些标志受到影响,而这些可能不会告诉你每条指令哪些标志受到影响。
在文档的其他地方,您必须找到这些字母的含义,大多数处理器指的是 Z、V、N 和 C。我上面链接的参考当然使用不同的符号来指示标志,所以您必须找到一个表格告诉您哪些标志是哪些,然后查找问题中提出的说明。
这涵盖了问题 1 和 2。
对于第三个问题,当您回答“有符号数和无符号数之间从按位角度看有什么区别”的问题时,就会理解。我发现用 2 位或 3 位来思考是最容易的,因为我知道基本概念是按比例放大的。因此,例如考虑 3 位,如何将位模式 0b011 解释为无符号位模式,如何将其解释为有符号位模式?那么0b111呢?那么0b001呢?还有0b101?如果使用无符号数,0b011 乘以 0b010 会给你什么?作为签名号码?
如果答案尚不明确,则写下三位操作数的所有 64 种组合,假设数字被认为是无符号的,计算结果,然后用被认为是有符号的数字计算结果。如果您没有犯错误,因为相关语句表明是否设置了任一操作数的高位,那么您将不会在有符号和无符号数学之间得到相同的结果。如果高位清晰,您将获得相同的结果。原因来自于理解有符号与无符号的编码或使用另一个术语,二进制补码。
现在尝试一些有趣的 4 位案例(一些设置了高位,一些没有设置),并确定 4 位是否得到与 3 相同的结果,然后也许用计算器尝试一些 8 或 16 位数字并决定该规则是否适用于任意数量的位或是否更改。然后决定你所学到的关于 3 位数字的知识是否回答或至少澄清了相对于 IA-32 IMUL 指令中操作数大小的语句/问题。