亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Z80上的溢出和進位標志

Z80上的溢出和進位標志

三國紛爭 2019-12-03 16:23:57
我已經在Z80內核上實現了ADD A,r組操作碼。我對我認為已經釘上的進位標志和溢出標志感到有些困惑,但是我想將其發布給社區,以檢查我是否正確?;旧希瑥奈宜吹降膩砜?,Z80中的ALU并不關心有符號/無符號操作,它只是添加一些位。這意味著,如果將兩個8位值相加并導致9位值相加,則進位標志將被置位。這包括將兩個負的二進制補碼相加,例如-20(11101100)和-40(11011000),盡管結果為-60(11000100),結果實際上是9位值1 11000100。這肯定意味著如果將兩個負的二進制補碼值相加,即使沒有溢出條件,進位標志也將始終置位-是嗎?其次,我決定要檢測該指令中的溢出,我將兩個操作數的位7進行XOR,如果結果為10000000,則絕對沒有溢出-如果結果為00000000,則可能存在溢出這些符號相同,因此我將加法運算結果的第7位與任一操作數的第7位進行XOR運算,如果運算結果為10000000,則發生了溢出,并設置了P / V溢出標志。我也是在這里嗎?很抱歉遇到這樣一個令人費解的問題,我很確定我是對的,但是在基于此邏輯繼續進行更多的說明之前,我需要知道。非常感謝。
查看完整描述

3 回答

?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

另一種查看方式可能更容易理解。執行總和時:

  • 符號始終設置為結果的第7位

  • 如果結果為0x00,則設置為零

  • 當操作數的右半字節和溢出時設置半進位

  • 當兩個操作數均為正且有符號和為負或兩個操作數均為負且有符號和為正時,將設置溢出

  • 添加/訂閱被重置

  • 如果無符號和溢出0xFF,則進位被設置


查看完整回答
反對 回復 2019-12-03
?
哆啦的時光機

TA貢獻1779條經驗 獲得超6個贊

這確實很準確。我通過這樣做找出了半進位標志halfCarryOut = carryIn ? ((a & 0x0F) >= 0x0F - (a & 0x0F)) : ((a & 0x0F) > 0x0F - (a & 0x0F)); halfCarryOut = ((res ^ a ^ b) >> 4) ^ halfCarryOut;,應該是正確的。

查看完整回答
反對 回復 2019-12-03
  • 3 回答
  • 0 關注
  • 787 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號