PDA

View Full Version : تبدیل عدد به رشته...



yasi.88
سه شنبه 06 مرداد 1388, 12:55 عصر
سلام دوستان.میشه یکی به من لطف کنه بگه چطور محتویات عدد موجود در ثبات DX:AX رو به رشته تبدیل کنم؟:ناراحت: همه جا و تو هر کتابی که دیدم محتویات فقط AX رو به رشته تبدیل می کنن. :عصبانی++:.

tdkhakpur
سه شنبه 06 مرداد 1388, 13:02 عصر
سلام
خوب شما این کار را در دو بخش انجام بده dx قسمت بالای عدد شماست

yasi.88
چهارشنبه 07 مرداد 1388, 10:22 صبح
سلام
خوب شما این کار را در دو بخش انجام بده dx قسمت بالای عدد شماست


با سلام و تشکر. من هم همین رو فکر میکردم اما شنیدم همه ی اعداد به صورت جداگانه در این دو ثبات قرار نمی گیرند :متفکر:. این درسته؟؟؟اما من یه کاری کردم چون حاصل تقسیم مضاعف به کلمه میشه یه کلمه من ابتدا عدد رو به کلمه ی 10 تقسیم کردم . و باقیمانده رو نگه داشتم و بعد چون حاصل تقسیم تو ax میمونه همون عملیات اصلی رو انجام دادم اما نمی دونم چرا جواب نمی ده:ناراحت:من چی کار کنم ای خدا:عصبانی++:

tdkhakpur
چهارشنبه 07 مرداد 1388, 15:13 عصر
سلام
ماکروی زیر یک کلمه را به رشته عددی تبدیل میکند.


;== NUMBER TO DECIMAL ================================================== ====;
; This Macro Chenge HEX Or Binary To Decimal .........................
; NUMBER Is (WORD) .................................................. ..
; BUFFER is address of buffer
; digit is len of buffer or digit numbers
; RETURN : This Macro Return In buffer Decimal Number That It
; Has In His End 0
DECIMAL MACRO NUMBER, BUFFER, DIGIT
LOCAL BUFFER, E0, E1, LOOP__, EXIT_
MOV BX, DIGIT
MOV BYTE PTR BUFFER[BX], 0
DEC BX
MOV CX, BX
LOOP__:;----------------------------------;
MOV BYTE PTR BUFFER[BX], 32 ; clear the buffer
DEC BX ;
LOOP LOOP__;------------------------;
MOV BX, DIGIT
DEC BX
MOV AX, NUMBER
E0:
MOV DX, 0
MOV CX, 10
DIV CX
MOV BYTE PTR BUFFER[BX], DL ; BAGIMANDEH IN DX
ADD BYTE PTR BUFFER[BX], 30H
DEC BX
CMP BX, 0
JE EXIT_
CMP AX, 10
JNL E0
E1:
MOV BYTE PTR BUFFER[BX], AL
ADD BYTE PTR BUFFER[BX], 30H
EXIT_:
ENDM
;---------------------------------------------------------------------------;

yasi.88
پنج شنبه 08 مرداد 1388, 14:24 عصر
واسه کد ممنونم . من کدم رو همین طوری نوشتم. اما در این کد عدد یک کلمه است . که مشکل من اینه که عددم در دو کلمه ax:dx است . :ناراحت: که با دو بار فراخوانی این تابع (به گفته ی شما )درست در نمی اید چون که عدد ما در دو قسمت جدا طوری که ما فرض می کنیم نیست ... نمی دونم البته این برداشت من هم درست هست یا نه ؟ میشه روشتون برای تبدیل عدد موجود در دو کلمه به رشته برام تحلیل کنید.:متفکر:

tdkhakpur
پنج شنبه 08 مرداد 1388, 19:32 عصر
سلام
خوب فرقی نداره شما dx ضمیمه کنید


DECIMAL MACRO AX_, DX_, BUFFER, DIGIT
LOCAL BUFFER, E0, E1, LOOP__, EXIT_
MOV BX, DIGIT
MOV BYTE PTR BUFFER[BX], 0
DEC BX
MOV CX, BX
LOOP__:;----------------------------------;
MOV BYTE PTR BUFFER[BX], 32 ; clear the buffer
DEC BX ;
LOOP LOOP__;------------------------;
MOV BX, DIGIT
DEC BX
MOV AX, AX_
MOV DX, DX_
E0:
MOV CX, 10
DIV CX
MOV BYTE PTR BUFFER[BX], DL ; BAGIMANDEH IN DX
ADD BYTE PTR BUFFER[BX], 30H
DEC BX
CMP BX, 0
JE EXIT_
CMP AX, 10
JNL E0
E1:
MOV BYTE PTR BUFFER[BX], AL
ADD BYTE PTR BUFFER[BX], 30H
EXIT_:
ENDM


برای این کار عملیات ریاضی وجود دارد کد بالا را امتحان نکردم فقط تغییر دادم.

yasi.88
جمعه 09 مرداد 1388, 22:19 عصر
با سلام.واسه کدها ممنونم اما از همون اولی که روشتون رو گفتید من منظور شما رو فهمیدم. اما گفتم که درست در نمی یاد.حتما بی دقتی کردم:متفکر:.در هر صورت واسه کمکتون خیلی ممنونم.