/ / NASM असेंबली ASCII से दशमलव में परिवर्तित - असेंबली, प्रकार-रूपांतरण, दशमलव, ascii, nasm

NASM असेंबली ASCII से दशमलव तक परिवर्तित - असेंबली, प्रकार-रूपांतरण, दशमलव, ascii, nasm

मुझे पता है कि आप दशमलव से एएससीआई में कनवर्ट करने के लिए 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 के लिए 1

The "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 व्यक्तिगत अंकों में मूल्य विघटित और एक समय में उंहें एक प्रक्रिया की जरूरत है ।