ورود

View Full Version : کمک در کامت گذاری



talent1
شنبه 17 خرداد 1393, 08:05 صبح
دوستان میشه این کد رو برام کامنت گذاری کنن
این کد قراره فاکتوریل بگیره



pusha
cmp al,0
je ghanoon
cmp al,1
je ghanoon2

mov cl,al
dec cl
mov bl,al
mov ah,0
mov ch,0

mov dl,al
add dl,30h
mov ah,2
int 21h
mov ah,0
sub al,30h


do:

dec bl
push ax
mov dl,'*'
mov ah,2
int 21h
mov ah,0
pop ax
push ax

mov dl,bl
add dl,30h
mov ah,2
int 21h
mov ah,0
pop ax


mul bx


loop do

jmp next

ghanoon:
mov dl,'1'
mov ah,2
int 21h
jmp end

ghanoon2:
mov dl,'1'
mov ah,2
int 21h
jmp end

next:
push ax

mov dl,'='
mov ah,2
int 21h

pop ax

mov bx,101
mov [bx],'$'
while:
mov dx,0
div ten
dec bx
add dl,30h
mov [bx],dl
cmp ax,0
je endwhile
jmp while

endwhile:

mov dx,bx
mov ah,9
int 21h

end:



popa

talent1
شنبه 17 خرداد 1393, 17:06 عصر
از دوستان کسی نیست ؟

vahid-p
شنبه 17 خرداد 1393, 20:19 عصر
کدش طولانیه. ولی چرا همش از کد های آماده استفاده میکنید؟ خودتون کد بنویسید هم مفید تره و هم میفهمید چی نوشتید. کلا خوندن کد اسمبلی چندان ساده نیست، مخصوصا مشکلتون رو نگفتید و کامنت کردن تمام کد معمولا توسط برنامه نویسش انجام میشه.
سعی کنید خودتون بنویسید تا به کدهای دیگران وابسته نشید.

ولی اگر گیر کار فقط تو حساب کردن فاکتوریل است خب سادست.
اول خودتون بنویسید بعد با کد زیر چک کنید.
تازه نمونش هم تو اینترنت فراوونه.

این کد رو خودم نوشتم به صورت بازگشتی فکر میکنم درست باشه ( فاکتوریل BX رو محاسبه میکنه و نتیجه در DX:AX قرار میگیره ) :


MOV BX,5 ; هر عدد دلخواه دیگری برای محاسبه
MOV AX,1 ; مقدار اولیه ثبات AX که حتما 1 باشد
MOV DX,0
CALL FACT

....

FACT PROC
CMP BX,1
JE ENDOFPROC ; هر وقت BX برابر 1 بود یعنی تمام اعداد 2 و 3 و... را در AX ضرب کرده است
MUL BX
DEC BX
CALL FACT ; فراخوانی بازگشتی
ENDOFPROC:
RET
FACT ENDP

talent1
یک شنبه 18 خرداد 1393, 10:29 صبح
داداش مطمئنی این درسته
اخه این چیزی نشون نمیده

vahid-p
یک شنبه 18 خرداد 1393, 13:13 عصر
چرا نشون نمیده؟ تو ثبات DX:AX جواب رو میبینی دیگه! ولی خب پرینت نداره که در مورد پرینت اعداد تاپیک های قبلی رو بررسی کنید.