68000 - मैं कैसे जांचूं कि डेटा रजिस्टर में मूल्य ANDI का उपयोग करके अजीब है या नहीं? 68000

यह मेरा कोड है मेरे पास है: मैं देखना चाहता हूं कि डी 1 में मान अजीब है या नहीं। यदि ऐसा है तो मैं कुछ ऑपरेशन करना चाहता हूं। क्या कोई इस में मेरी मदद कर सकता है?

यह अच्छा होगा अगर कोई मुझे इसका उपयोग करने का उदाहरण दिखा सके।

उत्तर:

उत्तर № 1 के लिए 1

यदि आप थोड़ा-सा करते हैं AND आपके इनपुट और स्थिर (तत्काल) मान जहां केवल बिट 0 सेट किया गया है, परिणाम इनपुट में बिट 1 के मान के आधार पर या तो 0 या 1 होगा।

इसलिए:

check_odd:
andi.b #1,d0
beq.s  .even    ; If the result was zero, the Z flag is set, and beq jumps.
.odd:
; We end up here if the value was odd.
bra.s  .done
.even:
; We end up here if the value was even.
.done:

जवाब के लिए 0 № 2

andi.b #1,d1 डी 1 के पिछले मूल्य कचरा होगा; इसलिए कमांड कमांड lsr.w #1,d1 संभव है। उसके बाद तुमने bcs label अगर संख्या विषम है, bcc label अन्यथा।
एक और विकल्प का उपयोग करना है btst.l #0,d1, जो डी 1 की सामग्री को नष्ट नहीं करता था। फिर beq label अगर संख्या भी है या bne label अगर अजीब है।


जवाब के लिए 0 № 3

यदि आप केवल एक बिट की जांच कर रहे हैं (इस मामले में) तो आप बिट टेस्ट निर्देश का भी उपयोग कर सकते हैं

btst #0, d0
beq  even

बिट 0 सेट नहीं होने पर लेबल "यहां तक ​​कि" लेबल करेगा।

सुनिश्चित नहीं है कि यह किसी भी कम्प्यूटेशनल प्रदर्शन लाभ प्रदान करता है, लेकिन कोड की पठनीयता के साथ मदद कर सकता है।


संबंधित सवाल
सबसे लोकप्रिय