shadowir
دوشنبه 02 آذر 1388, 13:12 عصر
سلام
دوستان لطفا اگه کسی برنامه برای تبدیل مبنا در اسمبلی داره دریغ نکنه ، شدیدا بهش احتیاج دارم
2 4 16 ..
mortezamsp
سه شنبه 03 آذر 1388, 12:44 عصر
خب بايد عدد اول رو به مبناي ده تبديل كني و بعد دوباره از مبناي ده به مبناي دلخواه ببري.
اين رو ننوشتم، ولي فكركنم همين طوري بايد باشه :
data segment :
num1 db 'M',0,0,0,0,0,0,0,0,0,'D','N'
num2 db 'M',0,0,0,0,0,0,0,0,0,0,'D','N'
code segment:
lea si,num1
//get a dijit //دريافت مبناي عدد اول
mov [si],al
inc si
mov cx,10
mov bl,0
getnum1:
//get dijit
cmp al,'e'
je getnum1end //تا وقتي e وارد نشده ارقام را دريافت كند
cmp bl,10 //حداكثر تا ده رقم بگيرد
je getnum1end
sub al,48
mov [si],al
inc si
inc bx
loop getnum1
getnum1end:
lea si,num1
add si,11
mov [si],bl //تعداد ارقام عدد اول را درجاي D ميگذاريم
create_first_num:
mov bh,0
mov cx,bx //براي حلقه
mov dl,0 //نگهدارنده عدد نهايي
lea si,num1
mov bl,[si] //دريافت مبناي عدد
inc si
muldijits:
mov al,[si]
mul bl
add al,dl
loop muldijits
lea si,num1
add si,12
mov [si],dl //عدد نهايي را درجاي N قرار ميدهيم
get a dijit //دريافت عدد مبناي دوم
lea si,num2
mov [si],al
lea si,num1
add si,12
mov cl,[si]
mov bl,al
divnum:
div bl
mov [si],ah
inc si
cmp al,0
ja divnum1
حالا رشته دوم را برعكس چاپ ميكنيم
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.