ورود

View Full Version : مشخص کند عدد چند رقمی گرفته شده از ورودی بر 7یا 3 بخش پذیر است یا خیر



atefe70
پنج شنبه 08 تیر 1391, 12:20 عصر
میخوام بدونم چجور توی این پروژه میشه کل عددی که از ورودی گرفتیم رو مورد مقایسه قرار داد . چون با این کار من فک کنم فقط داره رقم اول رو مقایسه میکنه چون رشته در نظر گرفته شده .

stacksg segment
db 32 dup("stack")
stacksg ends

datasg segment

msg1 db "yes","$"

msg2 db "no","$"

str label byte
max db 3
len db ?
buffer db 3 dup(?)



datasg ends

codesg segment
main proc far
assume cs:codesg,ds:datasg,ss:stacksg

mov ax,datasg
mov ds,ax

mov ah,0ah
mov dx,offset str
int 21h

lea bx,buffer

mov ah,0
mov al,[bx]
mov dl,4
div dl
cmp ah,0
je if

mov ah,0
mov al,[bx]
mov dl,7
div dl
cmp ah,0
je if

jmp else



if:
mov ah,2h
mov dh,12
mov dl,24
mov bh,0
int 10h

mov ah,9h
lea dx,msg1
int 21h
jmp endif




else:
mov ah,2h
mov dh,12
mov dl,24
mov bh,0
int 10h

mov ah,9h
lea dx,msg2
int 21h

endif:
main endp
codesg ends
end main

atefe70
پنج شنبه 08 تیر 1391, 12:33 عصر
لازمه اینجا چون گفته شده عدد چند رقمی من اون رو چون رشته هست تبدیل به عدد کنم و بعد توی محاسبات شرکت بدم یا راهی آسون تر هست ؟

ادرس صفحه ای که رشته عددی رو تبدیل به عدد کرد میشه نهاد اینجا ؟

atefe70
پنج شنبه 08 تیر 1391, 13:22 عصر
میشه یه نفر کار بعضی خطای کد که مهم هستن رو توضیح بده .

ممنون میشم اگه کسی کمکم کنه . این کد ها تو خود سایت بوده .:ناراحت:

str2int proc

mov ah,0ah
lea dx,arr
int 21h

mov ax,0
mov si,0
lea si,arr

mov cx,10
l1: mov tmp,cx
cmp [si],'0'
jnae l2
cmp [si],'9'
jnbe l2
mov cx,10
mul cx
mov cl,[si]
and cx,000fh
add ax,cx
l2: inc si
mov cx,tmp
loop l1

mov num,ax
ret

str2int endp

MostafaMohammadi
جمعه 09 تیر 1391, 01:23 صبح
لازمه اینجا چون گفته شده عدد چند رقمی من اون رو چون رشته هست تبدیل به عدد کنم و بعد توی محاسبات شرکت بدم یا راهی آسون تر هست ؟
خط ۶ تا ۱۰، یعنی:


msg1 db "yes","$"

msg2 db "no","$"

رو ببر زیر خط ۱۴، یعنی زیر این:

str label byte
max db 3
len db ?
buffer db 3 dup(?)
حالا کاربر که رشته رو وارد کرد، تعداد کاراکترها در متغییر len ذخیره میشه. از اینجا می تونی بفهمی عدد چند رقمی بوده.

ادرس صفحه ای که رشته عددی رو تبدیل به عدد کرد میشه نهاد اینجا ؟
متوجه نشدم چی می‌گید.

MostafaMohammadi
جمعه 09 تیر 1391, 01:25 صبح
میخوام بدونم چجور توی این پروژه میشه کل عددی که از ورودی گرفتیم رو مورد مقایسه قرار داد . چون با این کار من فک کنم فقط داره رقم اول رو مقایسه میکنه چون رشته در نظر گرفته شده .

باید بعد از اینکه رشته عددی رو از کاربر گرفتی اون رو تبدیل به مقدار عددی بکنی، بین تاپیک‌ها بگرد پیدا می‌کنی.

MostafaMohammadi
جمعه 09 تیر 1391, 01:33 صبح
میشه یه نفر کار بعضی خطای کد که مهم هستن رو توضیح بده .

ممنون میشم اگه کسی کمکم کنه . این کد ها تو خود سایت بوده .:ناراحت:

str2int proc

mov ah,0ah
lea dx,arr
int 21h

mov ax,0
mov si,0
lea si,arr

mov cx,10
l1: mov tmp,cx
cmp [si],'0'
jnae l2
cmp [si],'9'
jnbe l2
mov cx,10
mul cx
mov cl,[si]
and cx,000fh
add ax,cx
l2: inc si
mov cx,tmp
loop l1

mov num,ax
ret

str2int endp


برو توی تاپیک اشکال در خروجی (http://barnamenevis.org/showthread.php?345109-%D8%A7%D8%B4%DA%A9%D8%A7%D9%84-%D8%AF%D8%B1-%D8%AE%D8%B1%D9%88%D8%AC%DB%8C) به قسمت Converting the numeric string to number نگاه کن. به نظر من اون الگوریتم برای فهمیدن ساده‌تر است.