Sunday 15 March 2015

assembly - ASM symbolic constant behaviour -


निम्न कोड पर विचार करें:

  डेटा सेगमेंट v1 dw 1, 2, 3, 4 , 5, 6 v2 dw 10, 5, 4, 3, 2, 1 ई बराबर v2 समाप्त होता है  ई 9 है, क्योंकि ई v2 है जो v2 सरणी में पहला मान का प्रतिनिधित्व करता है।  

अगर मैं इसे इस प्रकार लिखता हूं:

  डेटा सेगमेंट v1 dw 1, 2, 3, 4, 5, 6 v2 dw 10, 5, 4, 3, 2 , 1 ई बराबर v2 / 2 समाप्त होता है I ई की उम्मीद 5 (10 से 2 विभाजित) होने की उम्मीद है, लेकिन यह वास्तव में 6 है। मुझे लगता है कि यह 6 है क्योंकि अब v2 का अर्थ है सरणी ऑफसेट, जो 12 (= 6 शब्द) है।  

मैं इम्यू 8086 का उपयोग कर रहा हूं।

क्या कोई मुझे तर्क बता सकता है?

मुझे यह पता करने में बहुत आश्चर्य होगा कि E पहले उदाहरण में 9 के बराबर है। यह पागलपन होगा 12 का होना चाहिए, जो डेटा सेगमेंट की शुरुआत से v2 ऑफसेट है। आपको वापस जाना चाहिए और अपने परिणामों की पुष्टि करनी चाहिए।

किसी भी स्थिति में, जब आप equ का उपयोग इस तरह करते हैं, तो आप ऑफ़सेट के साथ काम कर रहे हैं।

< कोड> समान एक संकलन-समय है (ठीक है, विधानसभा-समय, जो भी) निर्माण। जैसे, यह कभी एक्सेस मेमोरी नहीं कर सकता है आपके उदाहरण को देखते हुए:

  v2 dw 10, 5, 4, 3, 2, 1   

लिखने के लिए कोई रास्ता नहीं (मुझे पता है) समान अभिव्यक्ति जो v2 पर संग्रहीत सामग्री का संदर्भ देती है। ऐसा नहीं है, आपके पास ऐसा नहीं हो सकता है:

  ई सम (कुछ अभिव्यक्ति जो कि मान 2 से वी 2 से प्राप्त होती है)   

कभी भी नहीं होता।

समान ऑफसेट अंकगणित, केवल।

No comments:

Post a Comment