2012-09-02 15 views
5

में मैं MASM32 उपयोग कर रहा हूँ।कैरी झंडा घटाव

इस कोड के साथ:

mov eax,5 
sub eax,10 

सीएफ स्थिति ध्वज स्थापित किया जाएगा। लेकिन मेरे पेंसिल और पेपर का उपयोग करके, मैं वास्तव में देखता हूं कि एमएसबी से कोई लेयर नहीं है। हां, मुझे पता है कि कम संख्या से घटाव से बड़ी संख्या सेट सीएफ। लेकिन मैं जानना चाहता हूं क्यों?

इस कोड का उपयोग क्योंकि:

mov eax,5 
mov ebx,10 
not ebx 
add ebx,1 
add eax,ebx 

सीएफ ध्वज कभी सेट नहीं किया जाएगा।

+0

यह 8086 प्रोग्रामिंग या क्या है? – nKandel

उत्तर

5
5 - 10 = 5 + (-10) = 0x05 + (0xF5 + 1) = 0x05 + 0xF6 = 0xFB 

    00000101 -- 0x05 
    11110101 -- 0xF5 
+ 00000001 -- 0x01 
========== 
    11111011 -- 0xFB 

और यह 16 या 32 या 64 बिट्स 0 + 1 + 0 = 1 के लिए जारी है, ले जाने के 0

आप सही भावना कि यह does not बाहर ले जाने में हैं। एक घटाना दूसरा ऑपरेंड उलटा हुआ और उलटा हुआ है। कुछ प्रोसेसर परिवार कुछ नहीं करते हैं। लगता है जैसे आप किसी ऐसे चीज को देख रहे हैं जो एक घटाव पर ले जाता है।

तो अगर 5 - 10 बाहर ले जाने के (उधार) तो 10 की कोशिश देता है - एक ही प्रोसेसर पर 5, आप कैरी बिट सेट (कोई उधार) नहीं देखना चाहिए।

आपका दूसरे उदाहरण के लिए एक ऐड ऑपरेशन है, कैरी बाहर किसी भी प्रोसेसर है कि मैं के बारे में पता पर उल्टे नहीं है, आगे कैरी सा सकारात्मक तर्क एक उधार का संकेत किया जा रहा है समर्थन।

+1

निश्चित रूप से सभी x86 का कार्य घटाने के दौरान कैर-आउट को बदलने के संबंध में समान होता है? – harold

+0

सही, यही कारण है कि मैंने इसे प्रोसेसर परिवार कहने के लिए संपादित किया। मेरा मतलब यह है कि यदि आप x86, arm, avr, msp430, 6502, z80, आदि, आदि के बीच कैरे फ्लैग की तुलना करते हैं, तो कुछ उलटा हो जाता है, कुछ नहीं। एक परिवार या यहां तक ​​कि एक कंपनी के भीतर मैं उन्हें एक ही समाधान का उपयोग करने की उम्मीद करता हूं। –

+1

ओह ठीक है, याद है कि – harold

1

पहले ध्वज मामले कैरी में क्योंकि आप दूसरे मामले one.In छोटे से बड़ी संख्या घटाया सेट करने देता है मान लीजिए eax 8 बिट रजिस्टर तो

eax=00000101=05 
    ebx=00010000=10 
not ebx=11101111 
     +  1 
--------------------- 
     11110000 
     + 0101 
--------------------- 
     11110101 

नहीं अतिप्रवाह है यानी तब होता है कोई कैरी ध्वज सेट है है है।

+2

हार्डवेयर के लिए धन्यवाद एक ही जवाब जोड़ने के लिए या के रूप में ही प्रयोग किया जाता है तर्क घटाना पैदा करता है, अंतर कैसे बाहर ले जाने कि प्रोसेसर के लिए नियंत्रित किया जाता है है। ऐसा लगता है कि इस प्रोसेसर परिवार (x86) इनवर्टर एक उपखंड के लिए (साथ ही साथ ले जाने और दूसरे ऑपरेंड में) लेते हैं लेकिन किसी ऐड के लिए कोई उलटा नहीं लगता है। –

संबंधित मुद्दे