PDA

View Full Version : سوال: کم کردن کد این برنامه !



vB.N3T
دوشنبه 27 آذر 1391, 23:37 عصر
سلام دوستان این برنامه یه عدد میگیره و میکه اون عدد اول هست یا نه
ایا میشه به یه روش اسون تر با کد کمتر نوشت !؟
ممنون

MODEL SMALL

.DATA

N DW 25

TN DB ?

T DB ?

.CODE

.STARTUP

MOV CL,2

MOV AX,N

DIV CL

MOV TN,AL

while1:

MOV AX,N

DIV CL

CMP AH,0

JZ endwhile

CMP CL,TN

JZ endwhile

ADD CL,1

JMP while1

endwhile:

CMP CL,TN

JNZ avalnist

avalast:

MOV T,'T'

JMP endt

avalnist:

MOV T,'F'

endt:

.EXIT

END

vB.N3T
دوشنبه 27 آذر 1391, 23:38 عصر
ایا میشه این برنامه رو به این صورت تغیر داد
متغیری با داده مشخص در سگمت داده داریم
مشخص کنیم که ایا این عدد اول هست یا نه
اگه اول بود cx یک شود
اگه نبود cx صفر

Delphi Coder
سه شنبه 28 آذر 1391, 12:51 عصر
برای برنامه خروج در نظر گرفته نشده و آخر سر سیستم (برنامه) هنگ میشه. برنامه همچین هم پیچیده نیست که میخواید ساده تر بشه. در مورد مقدار دهی cx هم بله همونجا که T رو مقدار دهی میکنید CX رو مقداردهی کنید.

vB.N3T
سه شنبه 28 آذر 1391, 14:03 عصر
من کد تغیر دادم به این صورت
اما باز این کد عدد کامل رو برسی میکنه میشه یه کاریش کنید عدد اول رو برسی کنه


datasg SEGMENT
x DB 5
datasg ENDS
;----------------------------
codesg SEGMENT
ASSUME DS:datasg,CS:codesg
main PROC FAR
MOV AX,datasg
MOV DS,AX
;******************
MOV CX,1
MOV BL,1
l1:
INC BL
CMP BL,x
JE exit
MOV AL,x
MOV AH,0
DIV BL
CMP AH,0
JNE l1
MOV CX,0
exit:
;******************
MOV AX,4C00h
INT 21h
main ENDP
codesg ENDS
;----------------------------
END main

Delphi Coder
سه شنبه 28 آذر 1391, 18:32 عصر
این کد عدد کامل رو برسی میکنه میشه یه کاریش کنید عدد اول رو برسی کنه منظورتون چی هست دقیقا؟ هر دو کد بررسی میکنه که آیا عدد اول هست یا نه کد اولی از 2 تا N/2 رو بررسی میکنه که آیا بخشپذیر هست بر این اعداد یا نه کد دوم هم از 2 تا N رو بررسی میکنه. یعنی کد اول از نظر سرعت بهینه تر هست و کد دوم از نظر حجم کد. اگر حجم فایل اجرایی مد نظر هست برنامه رو به شکل COM بنویسید کوچکتر هم میشه.

vB.N3T
چهارشنبه 29 آذر 1391, 01:02 صبح
این کد عدد کامل رو برسی میکنه من عدد اول رو میخوام

Delphi Coder
چهارشنبه 29 آذر 1391, 13:13 عصر
این کد عدد کامل رو برسی میکنه من عدد اول رو میخوام در مورد اینکه میگید عدد کامل رو بررسی میکنه میشه یکم بیشتر توضیح بدید که چجوری عدد کامل رو بررسی میکنه؟ مجموع مقسوم علیه ها در کدام متغیر یا رجیستر هست؟