मुझे पता है कि आप दशमलव से एएससीआई में कनवर्ट करने के लिए 48 जोड़ सकते हैं या एसीआई से दशमलव में कनवर्ट करने के लिए 48 घटा सकते हैं, लेकिन निम्न कोड भी यही रूपांतरण क्यों करता है?
; moving the first number to eax register and second number to ebx
; and subtracting ascii "0" to convert it into a decimal number
mov eax, [number1]
sub eax, "0"
तथा
; add "0" to to convert the sum from decimal to ASCII
add eax, "0"
उत्तर:
उत्तर № 1 के लिए 1The "0"
को हूबहू काम करता है 48
इसलिये "0"
के लिए कोड बिंदु है चरित्र 0
जो, ASCII में, वास्तव में है 48
.
इसलिए इन सभी के बराबर हैं:
sub al, 48 ; decimal
sub al, "0" ; character code
sub al, 30h ; hex
sub al, 0x30 ; hex again
sub al, 60q ; octal
sub al, 00110000b ; binary
एक ध्यान रखें कि यह विधि केवल किसी मान के लिए कार्य करती है 0
सेवा मेरे 9
समावेशी. यदि आप नौ से ऊपर मूल्यों को संभालने के लिए चाहते हैं, तो आप "ll व्यक्तिगत अंकों में मूल्य विघटित और एक समय में उंहें एक प्रक्रिया की जरूरत है ।