RedPlus

برنامه اعداد اول در اسمبلی

3 پست در این موضوع قرار دارد

سلام به دوستان ! از دوستان کسی هست کد یکی از این برنامه ها رو در اسمبلی داشته باشه ؟! اسمبلی 8086

1-نمایش اعداد اول بین دو عدد که از ورودی گرفته شده

2- نمایش اعداد اول قبل از یک عدد که از ورودی گرفته شده !

3- تشخیص اول بودن یا نبودن یک عدد که از ورودی گرفته شده !

دو مورد اول باشه که خیلی بهتره ممنون !

0

به اشتراک گذاری این پست


لینک به پست

مبحث یکم سنگینه اونم برای اسمبلی که واقعا سخته

1

به اشتراک گذاری این پست


لینک به پست

ارسال شده در (ویرایش شده)

ممنون پیدا کردم خودم ! البته برنامه اصلی این بود که بین دو عدد پیدا کنه ولی ویرایشش کردم الان قبل یک عدد پیدا میکنه !

; multi-segment executable file template.

data segment

m dw ?

n dw ?

msg1 db 10,13 ,'-$'

msg2 db 10,13, 'Please Enter number :$'

msg3 db 10,13, 'number aval is :$'

temp db 50 Dup(?)

temp2 db 1 Dup(?)

enter1 db 3,13 Dub(?), ' $'

ends

stack segment

dw 128 dup(0)

ends

code segment

start:

assume cs:code,ds:data

;============MACRO RAFTAN BE KHATE BADi============

enter macro

push ax

push dx

mov dx,offset enter1

mov ah,09

int 21h

pop dx

pop ax

enter endm

;============macro print========================

print macro tmp

push ax

push dx

lea dx,tmp

mov ah,09

int 21h

pop dx

pop ax

print endm

;================================================

printint macro val

push ax

push bx

push cx

push dx

push si

mov dl,','

mov ah,2

int 21h

mov si,10

xor cx,cx

mov ax,val

add ax ,0

jns fa

print msg1 ; adad manfi chap '-' aVAL KAR

dec ax

not ax

fa:

l1:

xor dx,dx

div si

add dl,'0'

push dx

inc cx

or ax,ax

jnz l1

l2:

pop dx

mov ah,2

int 21h

loop l2

pop si

pop dx

pop cx

pop bx

pop ax

printint endm

;=====================I=N=P=U=T=I=N=T=E=G=E=R===================

inputint macro val

push ax

push bx

push cx

push dx

push si

push di

call getnumber

call asctobin

mov val ,ax

pop di

pop si

pop dx

pop cx

pop bx

pop ax

inputint endm

;=================================================

search macro add1,add2

push ax

push bx

push cx

push dx

push si

push di

mov di,add1

mov si,add2

mov cx,3

repe cmpsb

jnz f1

cmp cx,0

jne f1

print msg3

f1:

pop di

pop si

pop dx

pop cx

pop bx

pop ax

search endm

;==============================end print intiger

main proc

mov ax,data

mov ds,ax

mov bx,offset temp

; maximom number ha

mov si,1

print msg2

inputint n

mov di,n

dec di

print msg3

lab:

cmp si,di

jg lab1

mov ax ,si

mov bp,si

inc si

call aval

cmp dx,0

je lab:

printint bp

jmp lab

lab1:

;printint [bx]

;loop lab7

mov ah,8

int 21h

mov ah,4ch

int 21h

ret

main endp

;==============================

getstring proc

push ax

push dx

next:

mov ah,08

int 21h

cmp al,13

je finish

mov [bx],al

inc bx

mov dl,al

mov ah,2

int 21h

jmp next

finish:

mov byte ptr [bx],'$'

pop dx

pop ax

ret

getstring endp

;==================================================

getch proc

mov ah,1

int 21h

mov [si],al

ret

getch endp

;===================================

getnumber proc

push ax

push bx

push dx

next11:

mov ah,08

int 21h

cmp al,13

je finish11

cmp al,'-'

je manfi

cmp al,'9'

jg next11

cmp al,'0'

jl next11

manfi:

mov [bx],al

inc bx

mov dl,al

mov ah,2

int 21h

jmp next11

finish11:

mov [bx],al

pop dx

pop bx

pop ax

ret

getnumber endp

;====================end get number ================

asctobin proc

push bx

push cx

push dx

push si

mov si,10

mov m,0

xor ax,ax

xor ch,ch

next2:

mov cl,[bx]

inc bx

cmp cl,13

je finish2

cmp cl,'-'

jne lgf

mov m,1

jmp next2

lgf:

mul si

sub cl,'0'

add ax,cx

jmp next2

finish2:

cmp m,1

jne finish3

mov bp,-1

imul bp

finish3:

pop si

pop dx

pop cx

pop bx

ret

asctobin endp

;=====================================

aval proc

push bx

push cx

mov cx,ax

mov bx,2

label1:

mov dx,0

mov ax,cx

cmp bx,ax

jge fin ; agar bx az adad bishtar shavad

div bx ; taghasim bar bl

inc bx ; ezafe shodan be bl

cmp dx,0 ; baraye moghaiese baghi mande

jne label1 ; agar baghi mane sefr nabood

jmp fin2 ; agar sefr bood adad aval nist dx = 0

fin:

mov dx,1

jmp label2

fin2:

mov dx,0

label2:

pop cx

pop bx

ret

aval endp

code ends

end main

ends

end start ; set entry point and stop the assembler.

ویرایش شده در توسط Morteza
1

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری