تشخیص عدد کامل در اسمبلی

Cool.X

New Member
سلام
فرض کنید یک عدد داخل سگمنت داده وجود داره
بعد اگر عدد کامل بود در داخل ax یک وگرنه در داخل ax صفر را بگذارد
ممنون
 

the_king

مدیرکل انجمن
سلام
فرض کنید یک عدد داخل سگمنت داده وجود داره
بعد اگر عدد کامل بود در داخل ax یک وگرنه در داخل ax صفر را بگذارد
ممنون

عدد کامل عددی است که با مجموع مقسوم علیه هایش برابر باشد، مثلا عدد 6 ، 1 + 2 + 3 = 6

فرض می کنیم که عدد مورد نظر که در سگمنت داده قرار دارد n است.
روال کار اینطوری خواهد بود که ابتدا رجیستر CX را 0 می نماییم که قرار است مقسوم علیه ها را جمع بزند.
سپس در یک حلقه از عدد 1 تا n - 1 را یکی یکی در BX قرار داده و n که در AX قرار می گیرد بر آنها تقسیم می کنیم.
اگر باقیمانده تقسیم 0 باشد یعنی BX مقسوم علیه n است، پس BX را به CX اضافه می کنیم.
وقتی BX به n رسید حلقه پایان می یابد و بررسی می کنیم که آیا CX با n برابر است یا نه و بر اساس نتیجه
مقدار AX را تعیین می کنیم.

کد:
.MODEL	SMALL
.DATA
[COLOR="Blue"]	n DW 28[/COLOR]
.CODE
	.STARTUP
	MOV	CX, 0
	MOV	BX, 1
go_loop:
	MOV	AX, n
	DIV	BL
	CMP	AH, 0
	JNZ	go_next
	ADD	CX, BX
go_next:
	INC	BX
	CMP	BX, n
	JB	go_loop
	MOV	AX, 0
	CMP	CX, n
	JNE	print_ax
	MOV	AX, 1
print_ax:
	PUSH	AX
	MOV	DL, AL
	ADD	DL, "0"
	MOV	AH, 2
	INT	21h
	POP	AX
	.EXIT
.STACK
END
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا