2012-02-05 36 views
6

मेरे पास निम्नलिखित असेंबली कोड स्निपेट है जिसे मैं समझने की कोशिश कर रहा हूं। यह एक MC68332 microcontroller के लिए असेंबली है।बीईक्यू निर्देश वास्तव में क्या करता है?

LOOP 
    some instructions 
    some more instructions 
BEQ LOOP 

मैं BEQ googled है और मैं पाया है यह परिणाम शून्य पर शाखा का मतलब है, लेकिन मैं अभी भी वास्तव में समझ में नहीं आता कि वह क्या करता। क्या यह अंतिम निर्देश के परिणाम 0 से तुलना करता है, और यदि यह 0 है, तो यह वापस लूप लाइन पर जाता है?

+0

क्या आप बता सकते हैं कि आप किस माइक्रोक्रोनरोलर का जिक्र कर रहे हैं? –

+0

माइक्रोकंट्रोलर MC68332 है, धन्यवाद – jazzybazz

+0

ने एक उत्तर जोड़ा, उम्मीद है कि यह मदद करता है। –

उत्तर

4

मोटोरोला 68k परिवार पर यह "बराबर शाखा" के लिए खड़ा है जिसका अर्थ है "शून्य ध्वज सेट होने पर दिए गए पते पर जाएं" (जैसे पिछली तुलना सफल हुई थी)।

हालांकि 68332 उस से अलग दिखता है और "अपरकेस सिंटैक्स" के आधार पर यह एक अन्य निर्देश के आसपास एक मैक्रो रैपर हो सकता है जो अनिवार्य रूप से वही काम करता है।

असेंबली प्रोग्रामर जो अन्य सिस्टम से पोर्ट कोड पोर्टिंग प्रक्रिया को आसान बनाने के लिए समान मैक्रोज़ का उपयोग कर सकते हैं।

+0

लिंक के लिए धन्यवाद, धन्यवाद, यह वही है जो मुझे लगता है। बीईक्यू से पहले अंतिम निर्देश एसयूबी डी 2, डी 2 है जो हमेशा शून्य ध्वज सेट करता है। इसलिए यह एक अनंत लूप है। सही? – jazzybazz

+0

हाँ यह सही है जब तक कि हमारी धारणाएं गलत न हों :) –

1

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

आप किस माइक्रोक्रोनरोलर का उपयोग कर रहे हैं? आपको उस माइक्रो के लिए मैन्युअल में BEQ निर्देश के लिए परिभाषा प्राप्त करने में सक्षम होना चाहिए।

+0

MC68332। उपयोगकर्ता मैनुअल में BEQ कमांड के बारे में कुछ भी नहीं है – jazzybazz

+0

क्रिया "शाखा" का अर्थ क्या है? – jazzybazz

+0

फ्रीस्केल की वेबसाइट में डेटाशीट है, आप इसे यहां एक लिंक पा सकते हैं: http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MC68332। ब्रांचिंग का मतलब कार्यक्रम में एक विशिष्ट बिंदु पर कूदना है, इस मामले में "लूप" लेबल में। इस कोड का कार्य लूप तक है जब तक कि संचयक मान "0" रखता है। – Stefan

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