首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >X86处理器中的辅助标志

X86处理器中的辅助标志
EN

Stack Overflow用户
提问于 2014-01-30 15:57:25
回答 2查看 399关注 0票数 2

当较低的咬口产生一进位到更高阶的咬口时,辅助标志被设置。例如:

代码语言:javascript
复制
  1001   9
  1001   9
  ---- ----
1 0010  18

在这种情况下,腋窝的移动是设定的。

我还听说,在BCD加法期间,这个进位被用来将0110添加到低阶咬边,以便得到正确的BCD答案。

但考虑一下这个案子

代码语言:javascript
复制
1001  9
0011  3
---- ---
1100  12

在这种情况下,进位不是从这个咬口产生的,辅助进位没有设置,但是答案不是正确的BCD加法。那么是什么促使处理器更正答案并得到正确的BCD答案呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-30 16:05:14

DAA (或AAA)的其余语义。完整地说,它们(对于DAA)是:

代码语言:javascript
复制
IF 64-Bit Mode
  THEN
    #UD;
  ELSE
    old_AL ← AL;
    old_CF ← CF;
    CF ← 0;
    IF (((AL AND 0FH) > 9) or AF = 1)
      THEN
        AL ← AL + 6;
        CF ← old_CF or (Carry from AL ← AL + 6);
        AF ← 1;
      ELSE
        AF ← 0;
      FI;
    IF ((old_AL > 99H) or (old_CF = 1))
      THEN
        AL ← AL + 60H;
        CF ← 1;
      ELSE
        CF ← 0;
    FI;
FI;

所以你看,重要的不仅仅是AF,它还检查数字是否大于9。

票数 3
EN

Stack Overflow用户

发布于 2014-01-30 16:01:44

您必须使用DAAAAA手动完成此操作。如果>9,这将调整当前的咬口,并将1添加到较高的咬口。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21461285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档