我在 i386 架构上使用 AT&T 表示法进行编程。
是否可以使用单个指令添加两个 8 位数字以设置要设置的进位、溢出和符号标志add
?
我认为不可能得到这个标志组合。为了使 S 标志与 O 标志一起设置,两个数字的最高有效位必须为 0,结果的最高有效位必须为 1。这让我们无法通过添加最高有效位生成进位。
这是我第一次在这个网站上提问,如果我做错了什么,我深表歉意。提前致谢。
编辑:我只能使用以下三个指令:
movb $_, %ah
movb $_,%al
addb %ah,%al
我必须用十进制值修改两个下划线。
编辑:在 CF、OF、SF 和 ZF 中,我只能设置 CF、OF 和 SF。我不能设置进位标志。
(编者注:最后一句话没有意义。这是 Parity 或 Zero Flag 的拼写错误,还是他的意思是 CF 不能在之前设置addb
?它是add
,不是adc
,所以它不依赖于以前的标志状态. 将此保留为编辑,而不是在评论中要求澄清,因为这是一个可能无法得到答复的老问题。如果/当您修复关于“不能设置进位标志”的句子时,请编辑此注释,Shan。)