ਅਸੈਂਬਲੀ ਵਿੱਚ ਫਾਈਲ ਹੇਰਾਫੇਰੀ ਅਤੇ ਡੇਟਾ ਟ੍ਰਾਂਸਫਰਮੇਸ਼ਨ ਵਿੱਚ ਮੁਹਾਰਤ ਹਾਸਲ ਕਰਨਾ
ਅਸੈਂਬਲੀ ਭਾਸ਼ਾ ਨਾਲ ਕੰਮ ਕਰਨਾ ਅਕਸਰ ਇੱਕ ਗੁੰਝਲਦਾਰ ਬੁਝਾਰਤ ਨੂੰ ਹੱਲ ਕਰਨ ਵਾਂਗ ਮਹਿਸੂਸ ਕਰ ਸਕਦਾ ਹੈ। 🧩 ਇਸ ਲਈ ਹਾਰਡਵੇਅਰ ਅਤੇ ਕੁਸ਼ਲ ਡਾਟਾ ਸੰਭਾਲਣ ਦੀ ਡੂੰਘੀ ਸਮਝ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਇੱਕ ਆਮ ਕੰਮ, ਜਿਵੇਂ ਕਿ ਗੈਰ-ਅੰਕ ਵਾਲੇ ਅੱਖਰਾਂ ਨੂੰ ਕਾਇਮ ਰੱਖਦੇ ਹੋਏ ਅੰਕਾਂ ਨੂੰ ਸ਼ਬਦਾਂ ਵਿੱਚ ਬਦਲਣਾ, ਪਹਿਲੀ ਨਜ਼ਰ ਵਿੱਚ ਸਧਾਰਨ ਜਾਪਦਾ ਹੈ, ਪਰ ਇਹ ਘੱਟ-ਪੱਧਰੀ ਪ੍ਰੋਗਰਾਮਿੰਗ ਵਿੱਚ ਵਿਲੱਖਣ ਚੁਣੌਤੀਆਂ ਪੇਸ਼ ਕਰਦਾ ਹੈ।
ਉਦਾਹਰਨ ਲਈ, ਤੁਸੀਂ ਇੱਕ ਫਾਈਲ ਨੂੰ ਪ੍ਰੋਸੈਸ ਕਰਨਾ ਚਾਹ ਸਕਦੇ ਹੋ ਜਿਸ ਵਿੱਚ ਅੰਕ ਅਤੇ ਅੱਖਰ ਦੋਵੇਂ ਹਨ। ਇੱਕ ਇਨਪੁਟ ਫਾਈਲ ਤੋਂ "0a" ਨੂੰ ਪੜ੍ਹਨ ਅਤੇ ਆਉਟਪੁੱਟ ਵਿੱਚ ਇਸਨੂੰ "nulisa" ਵਿੱਚ ਬਦਲਣ ਦੀ ਕਲਪਨਾ ਕਰੋ। ਅਸੈਂਬਲੀ ਵਿੱਚ ਇਸ ਨੂੰ ਪ੍ਰਾਪਤ ਕਰਨ ਵਿੱਚ ਨਾ ਸਿਰਫ਼ ਤਰਕਪੂਰਨ ਕਾਰਵਾਈਆਂ ਸ਼ਾਮਲ ਹੁੰਦੀਆਂ ਹਨ ਬਲਕਿ ਓਵਰਲੈਪਿੰਗ ਮੁੱਦਿਆਂ ਨੂੰ ਰੋਕਣ ਲਈ ਸੁਚੇਤ ਬਫਰ ਪ੍ਰਬੰਧਨ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ।
8086 ਅਸੈਂਬਲਰ ਦੇ ਨਾਲ ਮੇਰੀ ਆਪਣੀ ਯਾਤਰਾ ਵਿੱਚ, ਮੈਨੂੰ ਅਜਿਹੀਆਂ ਸਮੱਸਿਆਵਾਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪਿਆ ਜਦੋਂ ਮੇਰੇ ਆਉਟਪੁੱਟ ਬਫਰ ਨੇ ਅੱਖਰਾਂ ਨੂੰ ਗਲਤ ਢੰਗ ਨਾਲ ਓਵਰਰਾਈਟ ਕਰਨਾ ਸ਼ੁਰੂ ਕੀਤਾ। ਇਹ ਇੱਕ ਸੰਪੂਰਣ ਲੇਗੋ ਢਾਂਚਾ ਬਣਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਵਾਂਗ ਮਹਿਸੂਸ ਹੋਇਆ, ਸਿਰਫ ਟੁਕੜਿਆਂ ਨੂੰ ਬੇਤਰਤੀਬੇ ਤੌਰ 'ਤੇ ਵੱਖ ਕਰਨ ਲਈ। 🛠️ ਇਹਨਾਂ ਚੁਣੌਤੀਆਂ ਲਈ ਸ਼ੁੱਧਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਪ੍ਰਕਿਰਿਆ ਕੀਤੇ ਅਤੇ ਲਿਖੇ ਗਏ ਹਰੇਕ ਬਾਈਟ ਦੀ ਨਜ਼ਦੀਕੀ ਜਾਂਚ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
ਧਿਆਨ ਨਾਲ ਡੀਬੱਗਿੰਗ ਅਤੇ ਬਫਰ ਹੈਂਡਲਿੰਗ ਦੀ ਸਮਝ ਦੁਆਰਾ, ਮੈਂ ਇਹਨਾਂ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰਨ ਦੇ ਯੋਗ ਸੀ। ਇਹ ਲੇਖ ਤੁਹਾਨੂੰ ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਬਣਾਉਣ ਲਈ ਕਦਮ-ਦਰ-ਕਦਮ ਮਾਰਗਦਰਸ਼ਨ ਕਰੇਗਾ ਜੋ ਅੰਕ-ਤੋਂ-ਸ਼ਬਦ ਪਰਿਵਰਤਨ ਅਤੇ ਡੇਟਾ ਭ੍ਰਿਸ਼ਟਾਚਾਰ ਦੇ ਬਿਨਾਂ ਫਾਈਲ ਲਿਖਣ ਨੂੰ ਸਹਿਜੇ ਹੀ ਸੰਭਾਲਦਾ ਹੈ। ਭਾਵੇਂ ਤੁਸੀਂ ਸਿਰਫ਼ ਅਸੈਂਬਲੀ ਨਾਲ ਸ਼ੁਰੂਆਤ ਕਰ ਰਹੇ ਹੋ ਜਾਂ ਆਪਣੇ ਹੁਨਰ ਨੂੰ ਨਿਖਾਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੇ ਹੋ, ਇਹ ਉਦਾਹਰਨ ਕੀਮਤੀ ਸੂਝ ਪ੍ਰਦਾਨ ਕਰੇਗੀ।
ਹੁਕਮ | ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਨ | ਵਰਣਨ |
---|---|---|
LODSB | LODSB | Loads a byte from the string pointed to by SI into AL and increments SI. This is essential for processing string data byte by byte. |
STOSB | STOSB | AL ਵਿੱਚ ਬਾਈਟ ਨੂੰ DI ਦੁਆਰਾ ਸੰਕੇਤ ਕੀਤੇ ਸਥਾਨ ਵਿੱਚ ਸਟੋਰ ਕਰਦਾ ਹੈ ਅਤੇ DI ਨੂੰ ਵਧਾਉਂਦਾ ਹੈ। ਆਉਟਪੁੱਟ ਬਫਰ ਵਿੱਚ ਡੇਟਾ ਲਿਖਣ ਲਈ ਇੱਥੇ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। |
SHL | SHL bx, 1 | Performs a logical left shift on the value in BX, effectively multiplying it by 2. This is used to calculate the offset for digit-to-word conversion. |
ADD | ADD si, offset words | SI ਵਿੱਚ ਸ਼ਬਦ ਐਰੇ ਦੇ ਆਫਸੈੱਟ ਨੂੰ ਜੋੜਦਾ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਪੁਆਇੰਟਰ ਅਨੁਸਾਰੀ ਅੰਕ ਦੇ ਸ਼ਬਦ ਦੀ ਨੁਮਾਇੰਦਗੀ ਲਈ ਸਹੀ ਟਿਕਾਣੇ 'ਤੇ ਚਲਦਾ ਹੈ। |
INT 21h | MOV ah, 3Fh; INT 21h | Interrupt 21h is used for DOS system calls. Here, it handles reading from and writing to files. |
ਸੀ.ਐੱਮ.ਪੀ | CMP al, '0' | AL ਵਿੱਚ ਮੁੱਲ ਦੀ '0' ਨਾਲ ਤੁਲਨਾ ਕਰਦਾ ਹੈ। ਇਹ ਨਿਰਧਾਰਤ ਕਰਨ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਕੀ ਅੱਖਰ ਇੱਕ ਅੰਕ ਹੈ। |
JC | JC ਫਾਈਲ_ਗਲਤੀ | Jumps to a label if the carry flag is set. This is used for error handling, such as checking if a file operation failed. |
ਆਰ.ਈ.ਟੀ | RET | ਕਾਲਿੰਗ ਪ੍ਰਕਿਰਿਆ 'ਤੇ ਕੰਟਰੋਲ ਵਾਪਸ ਕਰਦਾ ਹੈ। ConvertDigitToWord ਜਾਂ ReadBuf ਵਰਗੇ ਸਬਰੂਟੀਨਾਂ ਤੋਂ ਬਾਹਰ ਜਾਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। |
MOV | MOV raBufPos, 0 | Moves a value into a specified register or memory location. Critical for initializing variables like the buffer position. |
ਪੁਸ਼/ਪੌਪ | PUSH cx; POP cx | ਸਟੈਕ ਉੱਤੇ/ਤੋਂ ਮੁੱਲਾਂ ਨੂੰ ਧੱਕਦਾ ਜਾਂ ਪੌਪ ਕਰਦਾ ਹੈ। ਇਹ ਸਬਰੂਟੀਨ ਕਾਲਾਂ ਦੌਰਾਨ ਰਜਿਸਟਰ ਮੁੱਲਾਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਰੱਖਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। |
ਅਸੈਂਬਲੀ ਵਿੱਚ ਅੰਕ ਪਰਿਵਰਤਨ ਅਤੇ ਬਫਰ ਪ੍ਰਬੰਧਨ ਵਿੱਚ ਮੁਹਾਰਤ ਹਾਸਲ ਕਰਨਾ
ਸਕ੍ਰਿਪਟ ਦਾ ਮੁੱਖ ਟੀਚਾ ਅੰਕਾਂ ਅਤੇ ਅੱਖਰਾਂ ਦੇ ਮਿਸ਼ਰਣ ਵਾਲੀ ਇੱਕ ਇਨਪੁਟ ਫਾਈਲ ਲੈਣਾ, ਅੰਕਾਂ ਨੂੰ ਅਨੁਸਾਰੀ ਸ਼ਬਦਾਂ ਵਿੱਚ ਬਦਲਣਾ, ਅਤੇ ਅੱਖਰਾਂ ਨੂੰ ਓਵਰਰਾਈਟ ਕੀਤੇ ਬਿਨਾਂ ਆਉਟਪੁੱਟ ਨੂੰ ਇੱਕ ਨਵੀਂ ਫਾਈਲ ਵਿੱਚ ਲਿਖਣਾ ਹੈ। ਇਸ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਕੁਸ਼ਲ ਬਫਰ ਪ੍ਰਬੰਧਨ ਅਤੇ ਤਾਰਾਂ ਦਾ ਧਿਆਨ ਨਾਲ ਪ੍ਰਬੰਧਨ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਜਦੋਂ ਇੰਪੁੱਟ ਵਿੱਚ "0a" ਹੁੰਦਾ ਹੈ, ਤਾਂ ਸਕਰਿਪਟ ਇਸਨੂੰ ਆਉਟਪੁੱਟ ਵਿੱਚ "nulisa" ਵਿੱਚ ਬਦਲ ਦਿੰਦੀ ਹੈ। ਹਾਲਾਂਕਿ, ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ ਸ਼ੁਰੂਆਤੀ ਬੱਗ, ਜਿਵੇਂ ਕਿ ਬਫਰ ਵਿੱਚ ਅੱਖਰਾਂ ਨੂੰ ਓਵਰਰਾਈਟ ਕਰਨਾ, ਇਸ ਕੰਮ ਨੂੰ ਚੁਣੌਤੀਪੂਰਨ ਬਣਾ ਸਕਦਾ ਹੈ ਅਤੇ ਡੂੰਘੇ ਵਿਸ਼ਲੇਸ਼ਣ ਅਤੇ ਸੁਧਾਰਾਂ ਦੀ ਲੋੜ ਹੈ। 🛠️
ਮੁੱਖ ਕਮਾਂਡਾਂ ਜਿਵੇਂ ਕਿ LODSB ਅਤੇ STOSB ਸਤਰ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਜ਼ਰੂਰੀ ਹਨ। LODSB ਇਨਪੁਟ ਤੋਂ ਬਾਈਟਾਂ ਨੂੰ ਪ੍ਰੋਸੈਸਿੰਗ ਲਈ ਇੱਕ ਰਜਿਸਟਰ ਵਿੱਚ ਲੋਡ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ, ਜਦੋਂ ਕਿ STOSB ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਪ੍ਰੋਸੈਸ ਕੀਤੀਆਂ ਬਾਈਟਾਂ ਨੂੰ ਆਉਟਪੁੱਟ ਬਫਰ ਵਿੱਚ ਕ੍ਰਮਵਾਰ ਸਟੋਰ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਇਹ ਕਮਾਂਡਾਂ ਬਫਰ ਵਿੱਚ ਓਵਰਲੈਪਿੰਗ ਮੁੱਦਿਆਂ ਨੂੰ ਰੋਕਣ ਲਈ ਹੱਥ-ਹੱਥ ਕੰਮ ਕਰਦੀਆਂ ਹਨ, ਜੋ ਕਿ ਸ਼ੁਰੂਆਤੀ ਸਮੱਸਿਆ ਦਾ ਮੂਲ ਕਾਰਨ ਸੀ। ਹਰੇਕ ਓਪਰੇਸ਼ਨ ਤੋਂ ਬਾਅਦ SI ਅਤੇ DI ਵਰਗੇ ਪੁਆਇੰਟਰਾਂ ਨੂੰ ਵਧਾ ਕੇ, ਸਕ੍ਰਿਪਟ ਬਫਰਾਂ ਦੇ ਵਿਚਕਾਰ ਡੇਟਾ ਦੇ ਇੱਕ ਤਰਕਸ਼ੀਲ ਪ੍ਰਵਾਹ ਨੂੰ ਬਣਾਈ ਰੱਖਦੀ ਹੈ, ਆਉਟਪੁੱਟ ਵਿੱਚ ਸ਼ੁੱਧਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ।
ਸਕ੍ਰਿਪਟ ਅੱਖਰ ਮੁੱਲਾਂ ਦੀ ਤੁਲਨਾ ਕਰਨ ਅਤੇ ਅੰਕਾਂ ਦੀ ਪਛਾਣ ਕਰਨ ਲਈ CMP ਦੀ ਵਰਤੋਂ ਵੀ ਕਰਦੀ ਹੈ। ਉਦਾਹਰਨ ਲਈ, ਇਹ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਕੋਈ ਅੱਖਰ '0' ਤੋਂ '9' ਦੀ ਰੇਂਜ ਦੇ ਅੰਦਰ ਆਉਂਦਾ ਹੈ ਤਾਂ ਜੋ ਇਹ ਪਤਾ ਲਗਾਇਆ ਜਾ ਸਕੇ ਕਿ ਕੀ ਪਰਿਵਰਤਨ ਦੀ ਲੋੜ ਹੈ। ਇਹ ਤਰਕ ConvertDigitToWord ਵਰਗੇ ਸਬਰੂਟੀਨਾਂ ਨਾਲ ਜੋੜਿਆ ਗਿਆ ਹੈ, ਜਿੱਥੇ SHL ਅਤੇ ADD ਓਪਰੇਸ਼ਨ ਸ਼ਬਦ ਐਰੇ ਵਿੱਚ ਔਫਸੈੱਟ ਦੀ ਗਣਨਾ ਕਰਦੇ ਹਨ। ਇਹ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਇੱਕ ਅੰਕ ਲਈ ਸਹੀ ਸ਼ਬਦ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ 0 ਲਈ "ਨੂਲਿਸ" ਜਾਂ 1 ਲਈ "ਵੀਏਨਸ"। ਇਹ ਸਬਰੂਟੀਨ ਕੋਡ ਨੂੰ ਮਾਡਿਊਲਰ ਅਤੇ ਮੁੜ ਵਰਤੋਂ ਯੋਗ ਬਣਾਉਂਦੇ ਹਨ, ਡੀਬਗਿੰਗ ਅਤੇ ਹੋਰ ਸੋਧਾਂ ਨੂੰ ਸਰਲ ਬਣਾਉਂਦੇ ਹਨ। 🔧
ਅੰਤ ਵਿੱਚ, ਤਰੁੱਟੀ ਨੂੰ ਸੰਭਾਲਣਾ ਮਜ਼ਬੂਤ ਪ੍ਰੋਗਰਾਮ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਵਿੱਚ ਇੱਕ ਮਹੱਤਵਪੂਰਣ ਭੂਮਿਕਾ ਅਦਾ ਕਰਦਾ ਹੈ। JC ਕਮਾਂਡ ਦੀ ਵਰਤੋਂ ਗਲਤੀ-ਪ੍ਰਬੰਧਨ ਭਾਗਾਂ 'ਤੇ ਜਾਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਜਦੋਂ ਫਾਈਲ ਓਪਰੇਸ਼ਨ ਅਸਫਲ ਹੋ ਜਾਂਦੇ ਹਨ, ਜਿਵੇਂ ਕਿ ਜਦੋਂ ਕੋਈ ਇਨਪੁਟ ਫਾਈਲ ਖੋਲ੍ਹੀ ਨਹੀਂ ਜਾ ਸਕਦੀ ਹੈ। INT 21h ਸਿਸਟਮ ਕਾਲਾਂ ਦੇ ਨਾਲ ਜੋੜਿਆ ਗਿਆ, ਸਕ੍ਰਿਪਟ ਫਾਈਲ ਰੀਡਸ ਅਤੇ ਰਾਈਟਿੰਗ ਨੂੰ ਸਹਿਜੇ ਹੀ ਪ੍ਰਬੰਧਿਤ ਕਰਦੀ ਹੈ। ਅਨੁਕੂਲਿਤ ਫਾਈਲ ਹੈਂਡਲਿੰਗ ਅਤੇ ਮਜਬੂਤ ਡੇਟਾ ਪਰਿਵਰਤਨ ਦਾ ਇਹ ਸੁਮੇਲ ਅਸਲ-ਸੰਸਾਰ ਦੀਆਂ ਸਮੱਸਿਆਵਾਂ ਜਿਵੇਂ ਕਿ ਫਾਈਲ ਹੇਰਾਫੇਰੀ ਅਤੇ ਡੇਟਾ ਫਾਰਮੈਟਿੰਗ ਨੂੰ ਹੱਲ ਕਰਨ ਵਿੱਚ ਹੇਠਲੇ-ਪੱਧਰੀ ਪ੍ਰੋਗਰਾਮਿੰਗ ਦੀ ਸ਼ਕਤੀ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। ਬਫਰ-ਸਬੰਧਤ ਬੱਗਾਂ ਨੂੰ ਸੰਬੋਧਿਤ ਕਰਕੇ ਅਤੇ ਮਾਡਿਊਲਰਿਟੀ ਨੂੰ ਵਧਾ ਕੇ, ਸਕ੍ਰਿਪਟ ਹੁਣ ਸਹੀ ਨਤੀਜੇ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ, ਇੱਥੋਂ ਤੱਕ ਕਿ ਕਿਨਾਰਿਆਂ ਦੇ ਕੇਸਾਂ ਲਈ ਵੀ।
ਅੰਕਾਂ ਨੂੰ ਸ਼ਬਦਾਂ ਨਾਲ ਬਦਲਣਾ ਅਤੇ ਫਾਈਲਾਂ ਵਿੱਚ ਲਿਖਣਾ: ਇੱਕ ਵਿਆਪਕ ਪਹੁੰਚ
ਮਾਡਯੂਲਰ ਅਤੇ ਅਨੁਕੂਲਿਤ ਬਫਰ ਪ੍ਰਬੰਧਨ ਦੇ ਨਾਲ 8086 ਅਸੈਂਬਲੀ ਭਾਸ਼ਾ ਦੀ ਵਰਤੋਂ ਕਰਨਾ
; Solution 1: Enhanced buffer handling and optimized digit-to-word conversion
.model small
.stack 100h
.data
msgHelp DB "Usage: program.exe <input_file> <output_file>$"
msgFileError DB "Error: File not found or cannot be opened.$"
input db 200 dup (0)
output db 200 dup (0)
skBuf db 20 dup (?)
raBuf db 200 dup (?)
words db "nulis", 0, "vienas", 0, "du", 0, "trys", 0, "keturi", 0, "penki", 0, "sesi", 0, "septyni", 0, "astuoni", 0, "devyni", 0
wordOffsets dw 0, 6, 13, 16, 21, 28, 34, 39, 47, 55
dFail dw ?
rFail dw ?
raBufPos dw 0
.code
start:
MOV ax, @data
MOV ds, ax
MOV di, offset raBuf
; Open input file
MOV ah, 3Dh
MOV al, 00
MOV dx, offset input
INT 21h
JC file_error
MOV dFail, ax
; Open output file
MOV ah, 3Ch
MOV cx, 0
MOV dx, offset output
INT 21h
JC file_error
MOV rFail, ax
read:
; Read from input
MOV bx, dFail
CALL ReadBuf
CMP ax, 0
JE closeInput
MOV cx, ax
MOV si, offset skBuf
processLoop:
LODSB
CMP al, '0'
JB notDigit
CMP al, '9'
JA notDigit
PUSH cx
CALL ConvertDigitToWord
POP cx
JMP skip
notDigit:
STOSB
INC raBufPos
skip:
LOOP processLoop
writeOutput:
; Write to output
MOV bx, rFail
MOV dx, offset raBuf
MOV cx, raBufPos
CALL WriteBuf
MOV raBufPos, 0
JMP read
closeOutput:
MOV ah, 3Eh
MOV bx, rFail
INT 21h
closeInput:
MOV ah, 3Eh
MOV bx, dFail
INT 21h
programEnd:
MOV ah, 4Ch
INT 21h
ConvertDigitToWord PROC
SUB al, '0'
MOV bx, ax
SHL bx, 1
ADD bx, offset wordOffsets
MOV si, bx
ADD si, offset words
copyWord:
LODSB
STOSB
INC raBufPos
CMP al, 0
JNE copyWord
RET
ConvertDigitToWord ENDP
ReadBuf PROC
MOV ah, 3Fh
MOV bx, dFail
MOV dx, offset skBuf
MOV cx, 20
INT 21h
RET
ReadBuf ENDP
WriteBuf PROC
MOV ah, 40h
MOV bx, rFail
MOV dx, offset raBuf
MOV cx, raBufPos
INT 21h
RET
WriteBuf ENDP
END start
ਅਸੈਂਬਲੀ ਵਿੱਚ ਫਾਈਲ ਓਪਰੇਸ਼ਨਾਂ ਲਈ ਮਾਡਯੂਲਰ ਬਫਰ ਹੈਂਡਲਿੰਗ
ਅਸੈਂਬਲੀ ਹੱਲ ਦੇ ਉੱਚ-ਪੱਧਰੀ ਸਿਮੂਲੇਸ਼ਨ ਨੂੰ ਲਾਗੂ ਕਰਨ ਲਈ ਪਾਈਥਨ ਦੀ ਵਰਤੋਂ ਕਰਨਾ
def digit_to_word(digit):
words = ["nulis", "vienas", "du", "trys", "keturi", "penki", "sesi", "septyni", "astuoni", "devyni"]
return words[int(digit)] if digit.isdigit() else digit
def process_file(input_file, output_file):
with open(input_file, 'r') as infile, open(output_file, 'w') as outfile:
for line in infile:
result = []
for char in line:
result.append(digit_to_word(char) if char.isdigit() else char)
outfile.write("".join(result))
process_file("input.txt", "output.txt")
ਅਸੈਂਬਲੀ ਵਿੱਚ ਫਾਈਲ ਓਪਰੇਸ਼ਨ ਅਤੇ ਸਟ੍ਰਿੰਗ ਪਰਿਵਰਤਨ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣਾ
ਅਸੈਂਬਲੀ ਦੇ ਨਾਲ ਕੰਮ ਕਰਦੇ ਸਮੇਂ, ਫਾਈਲ ਓਪਰੇਸ਼ਨਾਂ ਲਈ ਸ਼ੁੱਧਤਾ ਅਤੇ ਹੇਠਲੇ-ਪੱਧਰ ਦੀਆਂ ਵਿਧੀਆਂ ਦੀ ਡੂੰਘੀ ਸਮਝ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਫਾਈਲ ਇੰਪੁੱਟ ਅਤੇ ਆਉਟਪੁੱਟ ਨੂੰ ਸੰਭਾਲਣ ਵਿੱਚ ਰੁਕਾਵਟਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਸ਼ਾਮਲ ਹੈ INT 21h, ਜੋ ਕਿ ਫਾਈਲਾਂ ਨੂੰ ਪੜ੍ਹਨਾ, ਲਿਖਣਾ ਅਤੇ ਬੰਦ ਕਰਨਾ ਆਦਿ ਕਾਰਜਾਂ ਲਈ ਸਿਸਟਮ-ਪੱਧਰ ਦੀ ਪਹੁੰਚ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਉਦਾਹਰਣ ਲਈ, MOV ah, 3Fh ਇੱਕ ਬਫਰ ਵਿੱਚ ਫਾਇਲ ਸਮੱਗਰੀ ਨੂੰ ਪੜ੍ਹਨ ਲਈ ਇੱਕ ਮੁੱਖ ਕਮਾਂਡ ਹੈ, ਜਦਕਿ MOV ah, 40h ਇੱਕ ਬਫਰ ਤੋਂ ਇੱਕ ਫਾਈਲ ਵਿੱਚ ਡੇਟਾ ਲਿਖਦਾ ਹੈ. ਇਹ ਕਮਾਂਡਾਂ ਸਿੱਧੇ ਤੌਰ 'ਤੇ ਓਪਰੇਟਿੰਗ ਸਿਸਟਮ ਨਾਲ ਇੰਟਰੈਕਟ ਕਰਦੀਆਂ ਹਨ, ਫਾਈਲ ਐਕਸੈਸ ਅਸਫਲਤਾਵਾਂ ਦੇ ਮਾਮਲੇ ਵਿੱਚ ਗਲਤੀ ਨੂੰ ਸੰਭਾਲਣ ਨੂੰ ਮਹੱਤਵਪੂਰਨ ਬਣਾਉਂਦੀਆਂ ਹਨ। 🛠️
ਇਕ ਹੋਰ ਜ਼ਰੂਰੀ ਪਹਿਲੂ ਕੁਸ਼ਲਤਾ ਨਾਲ ਤਾਰਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨਾ ਹੈ। ਅਸੈਂਬਲੀ ਦੀਆਂ ਹਦਾਇਤਾਂ LODSB ਅਤੇ STOSB ਅੱਖਰ-ਦਰ-ਅੱਖਰ ਲੋਡਿੰਗ ਅਤੇ ਸਟੋਰ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇ ਕੇ ਇਸ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸੁਚਾਰੂ ਬਣਾਓ। ਉਦਾਹਰਨ ਲਈ, "0a" ਵਰਗੇ ਕ੍ਰਮ ਨੂੰ ਪੜ੍ਹਨਾ ਸ਼ਾਮਲ ਹੈ LODSB ਬਾਈਟ ਨੂੰ ਇੱਕ ਰਜਿਸਟਰ ਵਿੱਚ ਲੋਡ ਕਰਨ ਲਈ, ਫਿਰ ਇਹ ਜਾਂਚ ਕਰਨ ਲਈ ਸ਼ਰਤਾਂ ਲਾਗੂ ਕਰੋ ਕਿ ਕੀ ਇਹ ਇੱਕ ਅੰਕ ਹੈ। ਜੇਕਰ ਇਹ ਹੈ, ਤਾਂ ਇੱਕ ਪਰਿਵਰਤਨ ਰੁਟੀਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਅੰਕ ਨੂੰ ਇਸਦੇ ਬਰਾਬਰ ਸ਼ਬਦ ਨਾਲ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ। ਨਹੀਂ ਤਾਂ, ਇਸ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਉਟਪੁੱਟ ਵਿੱਚ ਬਦਲਿਆ ਨਹੀਂ ਲਿਖਿਆ ਗਿਆ ਹੈ STOSB. ਇਹ ਕਮਾਂਡਾਂ ਡੇਟਾ ਭ੍ਰਿਸ਼ਟਾਚਾਰ ਨੂੰ ਰੋਕਦੀਆਂ ਹਨ ਜਦੋਂ ਧਿਆਨ ਨਾਲ ਪੁਆਇੰਟਰ ਹੇਰਾਫੇਰੀ ਨਾਲ ਜੋੜਿਆ ਜਾਂਦਾ ਹੈ।
ਓਵਰਰਾਈਟਿੰਗ ਮੁੱਦਿਆਂ ਤੋਂ ਬਚਣ ਲਈ ਬਫਰ ਪ੍ਰਬੰਧਨ ਵੀ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਬਫਰ ਪੁਆਇੰਟਰਾਂ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ ਅਤੇ ਵਧਾਉਣ ਦੁਆਰਾ ਐਸ.ਆਈ ਅਤੇ ਡੀ.ਆਈ, ਪ੍ਰੋਗਰਾਮ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਹਰੇਕ ਬਾਈਟ ਨੂੰ ਕ੍ਰਮਵਾਰ ਲਿਖਿਆ ਗਿਆ ਹੈ। ਇਹ ਪਹੁੰਚ ਡੇਟਾ ਦੀ ਇਕਸਾਰਤਾ ਨੂੰ ਕਾਇਮ ਰੱਖਦੀ ਹੈ, ਭਾਵੇਂ ਮਿਕਸਡ ਸਟ੍ਰਿੰਗਾਂ ਨਾਲ ਨਜਿੱਠਦੇ ਹੋਏ। ਪ੍ਰਭਾਵੀ ਬਫਰ ਹੈਂਡਲਿੰਗ ਨਾ ਸਿਰਫ਼ ਕਾਰਗੁਜ਼ਾਰੀ ਵਿੱਚ ਸੁਧਾਰ ਕਰਦੀ ਹੈ ਸਗੋਂ ਵੱਡੇ ਇਨਪੁਟਸ ਲਈ ਮਾਪਯੋਗਤਾ ਵੀ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ। ਅਸੈਂਬਲੀ ਪ੍ਰੋਗਰਾਮਿੰਗ ਵਿੱਚ ਇਹ ਅਨੁਕੂਲਤਾ ਮਹੱਤਵਪੂਰਨ ਹਨ, ਜਿੱਥੇ ਹਰ ਹਦਾਇਤ ਮਾਇਨੇ ਰੱਖਦੀ ਹੈ। 🔧
ਅਸੈਂਬਲੀ ਫਾਈਲ ਹੈਂਡਲਿੰਗ ਅਤੇ ਰੂਪਾਂਤਰਨ ਬਾਰੇ ਅਕਸਰ ਪੁੱਛੇ ਜਾਂਦੇ ਸਵਾਲ
- ਕਿਵੇਂ ਕਰਦਾ ਹੈ MOV ah, 3Fh ਫਾਈਲ ਰੀਡਿੰਗ ਲਈ ਕੰਮ ਕਰਦੇ ਹੋ?
- ਇਹ ਰੀਡ ਬਾਈਟਾਂ ਨੂੰ ਅਸਥਾਈ ਤੌਰ 'ਤੇ ਸਟੋਰ ਕਰਨ ਲਈ ਬਫਰ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, ਫਾਈਲ ਨੂੰ ਪੜ੍ਹਨ ਲਈ DOS ਰੁਕਾਵਟ ਨੂੰ ਚਾਲੂ ਕਰਦਾ ਹੈ।
- ਦਾ ਮਕਸਦ ਕੀ ਹੈ LODSB ਸਟਰਿੰਗ ਓਪਰੇਸ਼ਨਾਂ ਵਿੱਚ?
- LODSB ਦੁਆਰਾ ਦਰਸਾਏ ਗਏ ਮੈਮੋਰੀ ਟਿਕਾਣੇ ਤੋਂ ਇੱਕ ਬਾਈਟ ਲੋਡ ਕਰਦਾ ਹੈ SI ਵਿੱਚ AL ਰਜਿਸਟਰ, ਅੱਗੇ ਵਧਣਾ SI ਆਪਣੇ ਆਪ.
- ਕਿਉਂ ਹੈ SHL ਅੰਕ-ਤੋਂ-ਸ਼ਬਦ ਪਰਿਵਰਤਨ ਵਿੱਚ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ?
- SHL ਇੱਕ ਖੱਬੀ ਸ਼ਿਫਟ ਕਰਦਾ ਹੈ, ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਮੁੱਲ ਨੂੰ 2 ਨਾਲ ਗੁਣਾ ਕਰਦਾ ਹੈ। ਇਹ ਸ਼ਬਦ ਐਰੇ ਤੱਕ ਪਹੁੰਚਣ ਲਈ ਸਹੀ ਔਫਸੈੱਟ ਦੀ ਗਣਨਾ ਕਰਦਾ ਹੈ।
- ਅਸੈਂਬਲੀ ਵਿੱਚ ਫਾਈਲ ਓਪਰੇਸ਼ਨ ਦੌਰਾਨ ਤੁਸੀਂ ਗਲਤੀਆਂ ਨੂੰ ਕਿਵੇਂ ਸੰਭਾਲਦੇ ਹੋ?
- ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ JC ਇੱਕ ਇੰਟਰੱਪਟ ਕਾਲ ਤੋਂ ਬਾਅਦ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਕੈਰੀ ਫਲੈਗ ਸੈੱਟ ਕੀਤਾ ਗਿਆ ਹੈ, ਇੱਕ ਗਲਤੀ ਦਰਸਾਉਂਦਾ ਹੈ। ਪ੍ਰੋਗਰਾਮ ਫਿਰ ਗਲਤੀ-ਪ੍ਰਬੰਧਨ ਰੁਟੀਨ 'ਤੇ ਜਾ ਸਕਦਾ ਹੈ।
- ਦੀ ਭੂਮਿਕਾ ਕੀ ਹੈ INT 21h ਵਿਧਾਨ ਸਭਾ ਵਿੱਚ?
- INT 21h ਫਾਈਲ ਅਤੇ ਡਿਵਾਈਸ ਪ੍ਰਬੰਧਨ ਲਈ DOS ਸਿਸਟਮ ਕਾਲਾਂ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, ਇਸ ਨੂੰ ਨੀਵੇਂ-ਪੱਧਰ ਦੇ ਓਪਰੇਸ਼ਨਾਂ ਲਈ ਅਧਾਰ ਬਣਾਉਂਦਾ ਹੈ।
- ਅਸੈਂਬਲੀ ਵਿੱਚ ਬਫਰ ਓਵਰਰਾਈਟਿੰਗ ਮੁੱਦਿਆਂ ਦਾ ਕੀ ਕਾਰਨ ਹੈ?
- ਪੁਆਇੰਟਰਾਂ ਦਾ ਗਲਤ ਪ੍ਰਬੰਧਨ ਜਿਵੇਂ ਕਿ SI ਅਤੇ DI ਓਵਰਰਾਈਟਿੰਗ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦਾ ਹੈ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਕਿ ਉਹਨਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਵਧਾਇਆ ਗਿਆ ਹੈ ਇਸ ਨੂੰ ਰੋਕਦਾ ਹੈ।
- ਤੁਸੀਂ ਇਹ ਕਿਵੇਂ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹੋ ਕਿ ਅੰਕਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਸ਼ਬਦਾਂ ਵਿੱਚ ਬਦਲਿਆ ਜਾਂਦਾ ਹੈ?
- ਇੱਕ ਲੁੱਕਅਪ ਟੇਬਲ ਅਤੇ ਰੁਟੀਨ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ConvertDigitToWord, ਗਣਨਾ ਕੀਤੇ ਔਫਸੈਟਾਂ ਦੇ ਨਾਲ ਮਿਲਾ ਕੇ, ਸਟੀਕ ਤਬਦੀਲੀਆਂ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ।
- ਕੀ ਅਸੈਂਬਲੀ ਮਿਸ਼ਰਤ ਤਾਰਾਂ ਨੂੰ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਸੰਭਾਲ ਸਕਦੀ ਹੈ?
- ਹਾਂ, ਕੰਡੀਸ਼ਨਲ ਤਰਕ ਅਤੇ ਕੁਸ਼ਲ ਸਟ੍ਰਿੰਗ ਕਮਾਂਡਾਂ ਦੇ ਨਾਲ ਅੱਖਰ ਜਾਂਚ ਨੂੰ ਜੋੜ ਕੇ CMP, LODSB, ਅਤੇ STOSB.
- ਅਸੈਂਬਲੀ ਫਾਈਲ ਹੈਂਡਲਿੰਗ ਵਿੱਚ ਆਮ ਸਮੱਸਿਆਵਾਂ ਕੀ ਹਨ?
- ਆਮ ਮੁੱਦਿਆਂ ਵਿੱਚ ਸ਼ਾਮਲ ਨਹੀਂ ਕੀਤੀਆਂ ਗਈਆਂ ਗਲਤੀਆਂ, ਬਫਰ ਸਾਈਜ਼ ਦਾ ਕੁਪ੍ਰਬੰਧ, ਅਤੇ ਨਾਲ ਫਾਈਲਾਂ ਨੂੰ ਬੰਦ ਕਰਨਾ ਭੁੱਲ ਜਾਣਾ MOV ah, 3Eh.
ਪ੍ਰਭਾਵੀ ਬਫਰ ਹੈਂਡਲਿੰਗ ਬਾਰੇ ਜਾਣਕਾਰੀ
ਅਸੈਂਬਲੀ ਵਿੱਚ, ਸ਼ੁੱਧਤਾ ਸਭ ਕੁਝ ਹੈ. ਇਹ ਪ੍ਰੋਜੈਕਟ ਦਰਸਾਉਂਦਾ ਹੈ ਕਿ ਆਉਟਪੁੱਟ ਫਾਈਲਾਂ ਵਿੱਚ ਡੇਟਾ ਇਕਸਾਰਤਾ ਨੂੰ ਕਾਇਮ ਰੱਖਦੇ ਹੋਏ ਅੰਕ-ਤੋਂ-ਸ਼ਬਦ ਪਰਿਵਰਤਨ ਨੂੰ ਕੁਸ਼ਲਤਾ ਨਾਲ ਕਿਵੇਂ ਸੰਭਾਲਣਾ ਹੈ। ਅਨੁਕੂਲਿਤ ਸਬਰੂਟੀਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਅਤੇ ਸਹੀ ਤਰੁੱਟੀ ਸੰਭਾਲਣਾ ਨਿਰਵਿਘਨ ਫਾਈਲ ਓਪਰੇਸ਼ਨਾਂ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ। "0a" ਨੂੰ "nulisa" ਵਿੱਚ ਬਦਲਣ ਵਰਗੀਆਂ ਉਦਾਹਰਨਾਂ ਗੁੰਝਲਦਾਰ ਧਾਰਨਾਵਾਂ ਨੂੰ ਸੰਬੰਧਿਤ ਬਣਾਉਂਦੀਆਂ ਹਨ। 🚀
ਪ੍ਰੈਕਟੀਕਲ ਐਪਲੀਕੇਸ਼ਨਾਂ ਦੇ ਨਾਲ ਨੀਵੇਂ ਪੱਧਰ ਦੀਆਂ ਤਕਨੀਕਾਂ ਨੂੰ ਜੋੜਨਾ ਅਸੈਂਬਲੀ ਦੀ ਸ਼ਕਤੀ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ। ਹੱਲ ਤਕਨੀਕੀ ਡੂੰਘਾਈ ਅਤੇ ਅਸਲ-ਸੰਸਾਰ ਪ੍ਰਸੰਗਿਕਤਾ ਨੂੰ ਸੰਤੁਲਿਤ ਕਰਦਾ ਹੈ, ਜਿਵੇਂ ਕਿ ਰੁਕਾਵਟਾਂ ਦਾ ਲਾਭ ਉਠਾਉਣ ਤੋਂ INT 21h ਬਫਰ-ਸਬੰਧਤ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ। ਵੇਰਵੇ ਵੱਲ ਧਿਆਨ ਨਾਲ ਧਿਆਨ ਦੇਣ ਨਾਲ, ਜਿਵੇਂ ਕਿ ਪੁਆਇੰਟਰ ਪ੍ਰਬੰਧਨ ਅਤੇ ਮਾਡਿਊਲਰਿਟੀ, ਇਹ ਪ੍ਰੋਗਰਾਮ ਪ੍ਰਦਰਸ਼ਨ ਅਤੇ ਭਰੋਸੇਯੋਗਤਾ ਦੋਵਾਂ ਨੂੰ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।
ਅਸੈਂਬਲੀ ਪ੍ਰੋਗਰਾਮਿੰਗ ਲਈ ਸਰੋਤ ਅਤੇ ਹਵਾਲੇ
- ਫਾਈਲ ਹੈਂਡਲਿੰਗ ਅਤੇ ਸਟ੍ਰਿੰਗ ਹੇਰਾਫੇਰੀ ਸਮੇਤ 8086 ਅਸੈਂਬਲੀ ਪ੍ਰੋਗਰਾਮਿੰਗ ਸੰਕਲਪਾਂ ਦੀ ਵਿਸਤ੍ਰਿਤ ਵਿਆਖਿਆ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਹਵਾਲਾ: x86 ਅਸੈਂਬਲੀ ਭਾਸ਼ਾ - ਵਿਕੀਪੀਡੀਆ
- ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਰੁਕਾਵਟ ਹੈਂਡਲਿੰਗ ਅਤੇ ਫਾਈਲ ਓਪਰੇਸ਼ਨਾਂ ਬਾਰੇ ਚਰਚਾ ਕਰਦਾ ਹੈ INT 21h DOS ਸਿਸਟਮ ਵਿੱਚ. ਹਵਾਲਾ: IA-32 ਇੰਟਰੱਪਟਸ - ਬੇਲਰ ਯੂਨੀਵਰਸਿਟੀ
- ਕੁਸ਼ਲ ਬਫਰ ਪ੍ਰਬੰਧਨ ਲਈ ਵਿਹਾਰਕ ਕੋਡਿੰਗ ਅਭਿਆਸਾਂ ਸਮੇਤ, 8086 ਅਸੈਂਬਲੀ ਲਈ ਉਦਾਹਰਣਾਂ ਅਤੇ ਟਿਊਟੋਰਿਅਲ ਪੇਸ਼ ਕਰਦਾ ਹੈ। ਹਵਾਲਾ: ਅਸੈਂਬਲੀ ਪ੍ਰੋਗਰਾਮਿੰਗ - ਟਿਊਟੋਰਿਅਲਸਪੁਆਇੰਟ
- ਮਾਡਯੂਲਰ ਸਬਰੂਟੀਨਾਂ ਅਤੇ ਸ਼ਬਦ ਬਦਲਣ ਦੀਆਂ ਤਕਨੀਕਾਂ ਦੀਆਂ ਉਦਾਹਰਣਾਂ ਦੇ ਨਾਲ ਘੱਟ-ਪੱਧਰੀ ਪ੍ਰੋਗਰਾਮਿੰਗ 'ਤੇ ਵਿਆਪਕ ਗਾਈਡ। ਹਵਾਲਾ: x86 ਅਸੈਂਬਲੀ ਲਈ ਗਾਈਡ - ਵਰਜੀਨੀਆ ਯੂਨੀਵਰਸਿਟੀ
- ਪ੍ਰਦਰਸ਼ਨ ਅਤੇ ਭਰੋਸੇਯੋਗਤਾ ਲਈ ਅਸੈਂਬਲੀ ਕੋਡ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣ ਲਈ ਸਮਝ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। ਹਵਾਲਾ: x86 ਨਿਰਦੇਸ਼ ਸੈੱਟ ਸੰਦਰਭ - ਫੇਲਿਕਸ ਕਲੌਟੀਅਰ