PDA

View Full Version : سوال: رفع اشکال برنامه (ضرب دو عدد سه رقمی )



hojatmohammadi
سه شنبه 08 آذر 1390, 18:52 عصر
برنامه ای که دو عدد 3 رقمی را از ورودی میگیرد و با هم ضرب میکند .......................

مشکل برنامه انجاست که زمانی که میخواهد دو عدد را در هم ضرب کند و حاصل را در خروجی چاپ کند به جای حاصل جواب را علامت ؟؟؟ میگذارد ..........................



این هم سورس برنامه ممنون میشم راهنماییم کنید :::



; You may customize this and other start-up templates;
; The location of this template is c:\emu8086\inc\0_com_template.txt

org 100h


mov cx,3
mov di,0
;----------------------------halghe
as:
mov ah,01
int 21h
mov a[di],al
add di,1;inc

loop as




mov cx,2

;----------------------------halghe
a1:
mov ah,01
int 21h



loop a1





mov di,0
mov cx,3
b:
mov ah,01
int 21h
mov w[di],al
add di,1
loop b




;---------------------h1
mov si,2
mov cx,3
mov al,1
mov bl,10
k:
mov dl,a[si]
sub dl,48

mul bl
dec si
loop k
;------------------h2
mov si,2
mov cx,3
mov al,1
mov bl,10
k1:
mov dl,a[si]
sub dl,48

mul bl
dec si
loop k1
;---------------h3
mov si,2
mov cx,3
mov al,1
mov bl,10
k2:
mov dl,a[si]
sub dl,48

mul bl


dec si
loop k2

;--------------------print

mov cx,3
mov di,0
fh:
mov dl,l[di]
mov ah,02
int 21h
inc di
loop fh



ret
a db '?','?','?'
w db '?','?','?'
l db '?','?','?'

xman_1365_x
سه شنبه 08 آذر 1390, 19:44 عصر
از این ";---------------------h1" قسمت به بعد اشتباه نوشتین
اولا مقدار رو در dl قرار میدین و در ضرب شرکت نداره
دوما اینکه هر رقم ارزش مکانی داره مثبت از 10به توان 0 تا 10 n-1
که باید این دو مشکل رو برطرف کنید بعد اگر سوالی بود بپرسید
و اینکه دوست عزیز برای قرار دادن کد در برنامه از تگ کد(#) استفاده کنید نه نقل قول
موفق باشی

hojatmohammadi
سه شنبه 08 آذر 1390, 20:05 عصر
از این ";---------------------h1" قسمت به بعد اشتباه نوشتین
اولا مقدار رو در dl قرار میدین و در ضرب شرکت نداره
دوما اینکه هر رقم ارزش مکانی داره مثبت از 10به توان 0 تا 10 n-1
که باید این دو مشکل رو برطرف کنید بعد اگر سوالی بود بپرسید
و اینکه دوست عزیز برای قرار دادن کد در برنامه از تگ کد(#) استفاده کنید نه نقل قول
موفق باشی

میشه بیشتر راهنمایی کنید ؟؟ شرمنده ها !

xman_1365_x
سه شنبه 08 آذر 1390, 23:13 عصر
میشه بیشتر راهنمایی کنید ؟؟ شرمنده ها !
شدنش میشه اما من نمیدونم چی رو یاد بدم ؟

شما دارین از همون روش ضرب رشته ای استفاده میکنید
اعداد به این شکل هستن
123=(10^2*1)+(10^1*2)+(10^0*3)
حالاشما برای ضرب باید دقیقا به همون روش که روی کاغذ انجام میدن الگوریتمشو بنویسید ، اینکه نیاز به توضیح نداره (مراحل کار رو باید در بیارید)
شما باید طریقه ضرب کردن رو کاغذ رو تبدیل به الگوریتم کنید
بعد باید الگوریتم رو در اسمبلی پیاده سازی کنید
برای این کارم دستور ضرب رو ببینید چطور کار میکنه ،چون مشکل داشتین در کد.
موفق باشی

hojatmohammadi
سه شنبه 08 آذر 1390, 23:58 عصر
شدنش میشه اما من نمیدونم چی رو یاد بدم ؟

شما دارین از همون روش ضرب رشته ای استفاده میکنید
اعداد به این شکل هستن
123=(10^2*1)+(10^1*2)+(10^0*3)
حالاشما برای ضرب باید دقیقا به همون روش که روی کاغذ انجام میدن الگوریتمشو بنویسید ، اینکه نیاز به توضیح نداره (مراحل کار رو باید در بیارید)
شما باید طریقه ضرب کردن رو کاغذ رو تبدیل به الگوریتم کنید
بعد باید الگوریتم رو در اسمبلی پیاده سازی کنید
برای این کارم دستور ضرب رو ببینید چطور کار میکنه ،چون مشکل داشتین در کد.
موفق باشی

آهان پس میتونیم 1*(48-1) کنیم و واسه دهگان 10*(48-1)و واسه صدگان 100*(48-1) سپس همه رو با هم جمع کنیم درسته ؟