2012-12-22 19 views
5

मैं धीरे-धीरे खेलने के लिए ओएसडीवी में प्रवेश करने की कोशिश कर रहा हूं।क्यों "या आह, आह"?

This tutorial विधानसभा का एक टुकड़ा एक अभियान के लिए तैयार हो जाते हैं के लिए इंतजार कर रहा है कि है:

reset_drive: 
    mov ah, 0 
    int 13h 
    or ah, ah 
    jnz reset_drive 

मुझे लगता है कि व्यवधान के बाद, ah शून्य हो सकता है अगर डिवाइस तैयार है मिलता है। लेकिन or ah,ah क्या करता है? थोड़ा अनावश्यक लगता है ... ऐसा कुछ नहीं लगता है। (कम से कम मेरे तर्क से) यह क्या करता है?

+1

यह [परीक्षण आह, आह '] (https://stackoverflow.com/a/33724806/224132) के लिए एक अक्षम विकल्प है, जो उच्च -8 रजिस्टर के लिए विशेष रूप से खराब है क्योंकि उन्हें लिखना आंशिक-पंजीकरण विलय बनाता है इंटेल सीपीयू, यहां तक ​​कि स्काइलेक पर मुद्दे। –

उत्तर

12

यह ah शून्य पर निर्भर करता है कि यह शून्य ध्वज सेट/सेट करता है।

ध्वज की स्थिति पर निर्भर करता है, jnz reset_drive कूद जाएगा: सिर्फ अगर ahनहीं शून्य है।

दूसरे शब्दों में, यह डिवाइस बनने की प्रतीक्षा करता है क्योंकि यह ah शून्य के बाद दोहराने से रोकता है।

+0

ओह वाह। मुझे 'जेएफएफ' के बारे में पता नहीं था। त्वरित जवाब के लिए धन्यवाद! –

+2

@ मैट वेलकम, मूल रूप से सभी अंकगणितीय परिचालन 'जेएफएफ' और अन्य झंडे सेट/अनसेट करते हैं, यह 'या' के लिए विशिष्ट नहीं है। – phant0m

+0

मुझे डीसीपीयू -16 असेंबलर का अनुभव है, लेकिन x86 पर इतना गर्म नहीं है। डीसीपीयू समझने के लिए बहुत आसान है –