ডস একটি .কম ফাইল লোড করার পরে এসপি নিবন্ধকে 0xFFFE এ সেট করে কেন?


10

.COM ফাইল সম্পর্কে উইকপিডিয়া পৃষ্ঠায় https://en.wikedia.org/wiki/COM_file এতে লেখা আছে:

ডস-এ .COM ফাইলগুলি সমস্ত x86 সেগমেন্ট একই মানতে রেজিস্টার করে এবং এসপি (স্ট্যাক পয়েন্টার) 0xFFFE তে নিবন্ধন করে, এইভাবে স্ট্যাকটি মেমরি বিভাগের একেবারে শীর্ষে শুরু হয় এবং সেখান থেকে নীচে নেমে যায়।

তবে এটি প্রকৃতপক্ষে বিভাগের শীর্ষের নীচে একটি শব্দ শুরু করতে স্ট্যাক সেট করে। স্ট্যাকের উপর একটি মান চাপার সময় সিপিইউ এসপি-তে 0xFFFC হ্রাস পাবে এবং মানটি সেখানে সংরক্ষণ করবে, এভাবে বিভাগটির শীর্ষ শব্দটি নষ্ট করবে। ডস পরিবর্তে এসপি তে 0 সেট না করার কারণ কী?


6
ডস int 20hসেখানে একটি নির্দেশিকার জন্য একটি পয়েন্টার সংরক্ষণ করে যাতে আপনি কোনও retনির্দেশ জারি করে আপনার প্রোগ্রামটি থেকে বেরিয়ে আসতে পারেন ।
ফুজ

উত্তর:


16

এটি সিপি / এম এর সাথে সামঞ্জস্যের জন্য।

সিপি / এম তে আপনি সহজেই আপনার প্রোগ্রামটি ব্যবহার করে ফিরে আসতে পারেন retএবং আপনার প্রোগ্রামটি পরিষ্কারভাবে প্রস্থান করবে। এটি 0x0000স্ট্যাকের শীর্ষে থাকা এবং int 20hঠিকানায় নির্দেশ দেওয়ার মাধ্যমে অর্জন করা হয়েছিল 0x0000। যদিও int 20hপ্রোগ্রামটি ছাড়ার জন্য ডসের আনুষ্ঠানিক উপায়, তবুও প্রোগ্রামটি ব্যবহারের ছাড়ার বিকল্পটি call 0সিপি / এম থেকে রাখা হয়েছিল, এবং বহিরাগততম স্কোপ retএকই সাথে কাজ করে যেহেতু এটি ফিরে আসে 0

এই 0x0000শব্দটিকে স্ট্যাকের শীর্ষে রাখতে, আপনাকে অবশ্যই ব্যবহারযোগ্য স্ট্যাকটি 2 বাইটগুলি আরও নিচে শুরু করতে হবে, স্পষ্টতই। সেই কারণেই SPপ্রাথমিকভাবে 0xFFFEসেই 0x0000শব্দটির দিকে ইঙ্গিত করে যা int 20hনির্দেশের দিকে বদলে যায় ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.