簡體   English   中英

了解匯編中的條件代碼標志設置

[英]Understanding condition code flag setting in assembly

如果我有下表:

Case 1:    x: 42           y: -15           (y-x) = -57 
Case 2:    x: -17          y: -17           (y-x) = 0
Case 3:    x: 0x7ffffffd   y: -67           (y-x) = 2147483584
Case 4:    x: 67           y: -0x7fffffffd  (y-x) = 2147483584

ZF SF OFCF的條件代碼標志將設置為什么(每個標志為零或一個)

考慮指令時: cmp1 %eax %ecx如果%eax包含x並且%ecx包含y

我了解cmp1 ...,...由以下cmp1 SRC2,SRC1執行: cmp1 SRC2,SRC1

這意味着:“設置SRC1SRC2條件代碼”

我了解這些標志代表:

OF = overflow (?)
ZF = zero flag i.e. zero...
CF = carry out from msb
SF - sign flag i.e. negative

對於表中的四個案例,我相信標記將是:

1) ZF = 0 SF = 1 CF = 0 OF = ?
2) ZF = 1 SF = 0 CF = 0 OF = ?
3) ZF = 0 SF = 0 CF = 1 OF = ?
4) ZF = 0 SF = 0 CF = 1 OF = ?

我對么? 請說明CFOF分別是什么OF以及如何確定兩者是否設置為TRUE,並糾正我的任何錯誤理解。 謝謝。

當算術運算產生無法放入寄存器的進位時,就會發生進位溢出。 因此,如果您有8位寄存器,並且想要添加10000000和10000000(無符號):

 10000000
 10000000
 --------
100000000

該1是最高有效位的進位,因此將CF設置為1。

您可能還需要檢查其他答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM