2012-11-17 18 views
5

क्या इंटेल के 8086 16-बिट फ्लैग रजिस्टर में "ऑफ" और "टीएफ" झंडे को सीधे "सेट" या "साफ़" करने के लिए कोई असेंबली निर्देश हैं? यदि नहीं, तो हमें किस छद्म कोड का उपयोग करना चाहिए?सेटिंग, समाशोधन और टीएफ झंडे के लिए असेंबली निर्देश

+0

क्या आपने इस प्रश्न पूछने से पहले [इंटेल मैनुअल] (http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html) पढ़ा है? – DCoder

+0

http://en.wikipedia.org/wiki/Trap_flag –

+0

@DCoder क्या आपको कभी भी टिप्पणी पोस्ट करने से पहले इंटेल मैनुअल में ऐसी चीज के लिए छद्म कोड मिला है? –

उत्तर

6

http://en.wikipedia.org/wiki/Trap_flag

8086 कोई अनुदेश सीधे सेट या जाल ध्वज रीसेट करने के लिए है। इन परिचालनों को ढेर पर ध्वज रजिस्टर को दबाकर किया जाता है, जो प्रोग्रामर चाहता है कि जाल फ्लैग बिट को बदलकर, और फिर ध्वज को वापस ढेर से पॉप-अप करना बंद कर दें। जाल ध्वज सेट करने के लिए निर्देश दिए गए हैं:

PUSHF ; Push flags on stack 
MOV BP,SP ; Copy SP to BP for use as index 
OR WORD PTR[BP+0],0100H ; Set TF flag 
POPF ; Restore flag Register 

जाल ध्वज रीसेट करने के लिए, बस अनुदेश के साथ पूर्ववर्ती अनुक्रम में या शिक्षा की जगह:

AND WORD PTR[BP+0],0FEFFH 

सेट करने के लिए और अतिप्रवाह ध्वज को साफ़ करें, आप 0100H0800H और 0FEFFh0F7FFh के साथ 0100H को प्रतिस्थापित कर सकते हैं।

यह जानना सुनिश्चित करें कि TF इसे सेट करने से पहले क्या करता है। यह एक जाल है।

+1

'mov bp, sp' और * bp * रजिस्टर का उपयोग करने का कारण क्या है जब आप केवल * या शब्द [sp], 0100h' केवल * sp * रजिस्टर का उपयोग कर कर सकते हैं? – golem

+1

क्योंकि 8086 16-बिट वास्तविक मोड में चल रहा है, शब्द [एसपी] बनाने के लिए ऐसा कोई तरीका नहीं है क्योंकि मेमोरी ऑपरेंड में एकमात्र संभावित बेस रजिस्ट्रार बीएक्स, बीपी, एसआई और डीआई हैं। – hlide

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