PDA

View Full Version : مبتدی: برنامه برای تبدیل مبنا در اسمبلی میخوام



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

حالا رشته دوم را برعكس چاپ ميكنيم