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

Sharif_

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


ممنون از sayyad84 عزیز که لیست زیر رو تهیه کردند
فقط کد برنامه:
برنامه فاکتوریل یک عدد
برنامه 1! + 2! + 3! + ... + n! (جمع فاکتوریل های اعداد 1…n)
برنامه a^1 + a^2 + ... + a^n
برنامه تعیین عدد اول
برنامه مجموع ارقام یک عدد
ده عدد خوانده و میانگین اعداد فرد را حساب کند
حاصلضرب ارقام موجود یک رشته
قرار دادن مقلوب رشته در خود رشته
تشخیص رشته معکوسی(مانند داماد)
تبدیل حروف کوچک به بزرگ و بزرگ به کوچک در یک رشته

کد برنامه به همراه فایل اجرایی:
حرکت یک کاراکتر در یک سطر
برنامه ی جدول ضرب در زبان اسمبلی
فیبوناتچی به زبان اسمبلی
تعداد ارقام عدد ورودی به زبان اسمبلی
زیربرنامه ی رسم دایره به زبان اسمبلی
برنامه ای ساده برای کار با mouse در اسمبلی
برنامه ی اعداد زوج تا 200 به زبان اسمبلی
برنامه ی تشخیص اول بودن عدد موجود در حافظه با اسمبلی
برنامه ی جمع اعداد بین 3 و 6 بین 10 عدد ورودی
برنامه ی محاسبه ی 2 به توان 100 با اسمبلی
برنامه ی محاسبه ی غیربازگشتی ب.م.م دو عدد موجود در حافظه با اسمبلی
برنامه ی یافتن مجموع ارقام زوج عدد موجود در حافظه با اسمبلی
برنامه ی مرتب کردن سه عدد ورودی با اسمبلی
 
آخرین ویرایش:

Sharif_

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

برنامه فاکتوریل یک عدد

---C++
cin>>n;
s=0;
for(i=1;i<=n;i++)
s=s*i;
cout<<s;
-----assembly
INPUT n,10
ATOI n
MOV Bx,Ax
MOV Ax,1 //ax=s
MOV SI,1
L: CMP SI,Bx
JNBE L2
MUL SI
INC SI
JMP L
L2: ITOA s,Ax

OUTPUT s
 

Sharif_

مدیر بازنشسته
برنامه 1! + 2! + 3! + ... + n!

برنامه 1! + 2! + 3! + ... + n!

----C++
cin>>n;
s=0;
b=0
for(j=1;j<=n;j++){
for(i=1;i<=j;i++)
b=b*i;
s=s+b;
}
cout<<s;

----assembly
INPUT n,10
ATOI n
MOV Bx,Ax
MOV Ax,1
MOV Cx,0
MOV DI,1
LF1: CMP DI,Bx
JNBE L2
MOV SI,1
LF2: CMP SI,DI
JNBE L2
MUL SI
INC SI
JMP LF2
ADD Cx,Ax
INC DI
JMP LF1
L2: ITOA s,Cx
OUTPUT s
 

Sharif_

مدیر بازنشسته
برنامه a^1 + a^2 + ... + a^n

برنامه a^1 + a^2 + ... + a^n

----C++
cin>>a>>n;
s=a;
for(i=1;i<=n;i++){
for(j=1;j<i;j++){
b=a*a;
}
s=s+b;
}
cout<<s;
----assembly
INPUTS a,10
INPUTS n,10
ATOI a
MOV Bx,Ax //Bx=a
ATOI n
MOV Ax,Cx // Cx=n
MOV Dx,Bx //s=a
MOV DI,1
LF1: CMP DI,Cx
JNBE L2
MOV SI,1
LF2: CMP SI,DI
JNB L2
MUL Bx //b=a*a;
INC SI
JMP LF2
ADD Dx,Ax // s=s+b
INC DI
JMP LF1
L2: ITOA s,Dx
OUTPUT s
 

Sharif_

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

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

---------- C++
cin>>a;
for(i=1;i<=a;i++)
if(a%i==0)
goto L1;
cout<<"yes";
goto L2;
L1: cout<<"no";
L2:
----assembly
x DB "yes"
y DB "no"
.
.
.
MOV CX,"
INPUTS a,10
ATOI a
MOV SI,1
L: CMP SI,Ax
JNBE L2
DIV SI
CMP Ah,0 // Ah=Ax%SI
JE L3
INC SI
JMP L
L2: OUTPUT x
JMP L4
L3: OUTPUT y
L4:
 

Sharif_

مدیر بازنشسته
برنامه مجموع ارقام یک عدد

برنامه مجموع ارقام یک عدد

NPUT a,10
ATOI a
MOV SI,1
L: CMP SI,Cx
JNBE L2
DIV 0AH
ADD S,AH
INC SI
JMP L
L2: ITOA S,str
OUTPUT str

 

Sharif_

مدیر بازنشسته
ده عدد خوانده و میانگین اعداد فرد را حساب کند

ده عدد خوانده و میانگین اعداد فرد را حساب کند

----C++
int a[10];
count=0;
s=0;
for(i=0;i<10;i++)
cin>>a;
for(j=0;j<10;j++)
if(a[j]%2==1){
count++;
s=s+a[j];
}
s=s/count;
cout<<s;
------assembly
a DW 10 DUP(?)
.
.
.
MOV Cx,0 // Cx=count=0
MOV Bx,0 // Bx=s=0
MOV SI,0
LF1: CMP SI,0AH
JNB L2
INPUTS b,10
ATOI b
MOV a[SI],Ax
INC SI
JMP LF1
L2:
MOV DI,0
LF2: CMP SI,0AH
JNB L2
MOV Ax,a[DI]
DIV 2
CMP Ah,1
JNE L3
INC Cx
ADD Bx,a[DI]
L3: INC SI
JMP LF2
MOV Ax,Bx
DIV Cx
ITOA AL,s
OUTPUT s
 

Sharif_

مدیر بازنشسته
حاصلضرب ارقام موجود یک رشته

حاصلضرب ارقام موجود یک رشته

INPUT a,10
ATOI a
MOV Bx,Ax
MOV SI,0
L: CMP SI,Cx
JNB L2
DIV 0AH
MOV CL,Ah
MOV Ax,Bx
MOV CH ,0
MUL CX
INC SI
JMP L
L2: ITOA Dx:Ax,str
OUTPUT str
 

Sharif_

مدیر بازنشسته
قرار دادن مقلوب رشته در خود رشته

قرار دادن مقلوب رشته در خود رشته

cin>>a;
for(i=0;i<len(a);i++){
b=strlen(a) - i ;
temp =a;
a=a
;
a
=temp;
}
cout<<a;
----assembly
INPUTS a
MOV SI,0
L:CMP SI,Cx //Cx=len(a)
JNB L2
MOV Ax,Cx
SUB Ax,SI //Ax=b
MOV Bx,a[SI] //Bx=temp
MOV a[SI],a[Ax]
MOV a[Ax],Bx
INC SI
JMP L
L2: OUTPUT a
 

Sharif_

مدیر بازنشسته
تشخیص رشته معکوسی(مانند داماد)

تشخیص رشته معکوسی(مانند داماد)

x DB "yes"
y DB "no"
.
.
.
INPUTS a
MOV SI,0
L:CMP SI,Cx //Cx=len(a)
JNB L1
MOV Ax,Cx
SUB Ax,SI
CMP a[Ax],a[SI]
JNE L2
INC SI
JMP L
L1: OUTPUT x
JMP L3
L2:OUTPUT y
L3:
 

Sharif_

مدیر بازنشسته
تبدیل حروف کوچک به بزرگ و بزرگ به کوچک در یک رشته

تبدیل حروف کوچک به بزرگ و بزرگ به کوچک در یک رشته

cin >> a;
for(i=0;i<strlen(a);i++){
if(a<='z')
a=a+32;
else
a=a-32;
}
------assembly
INPUTS a;
MOV SI,0
L:CMP SI,Cx
JNB L4
CMP a[SI],'z'
JNBE L2
ADD a[SI],32
JMP L3
L2: SUB a[SI],32
L3:INC SI
JMP L
L4: OUTPUT a

 

sayyad84

متخصص زبان Assembly
کاربر ممتاز
حرکت یک کاراکتر در یک سطر

حرکت یک کاراکتر در یک سطر

برنامه به عنوان ورودی یه کاراکتر می گیره و کاراکتر در یک سطر حرکت می کنه.
 

پیوست ها

  • MOVING.rar
    700 بایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
برنامه ی جدول ضرب در زبان اسمبلی

برنامه ی جدول ضرب در زبان اسمبلی

با سلام،
اینم برنامه:
 

پیوست ها

  • Mul_Table.rar
    1.2 کیلوبایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
تعداد ارقام عدد ورودی به زبان اسمبلی

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

با سلام،
اینم برنامه:
 

پیوست ها

  • NOD.rar
    1.2 کیلوبایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
زیربرنامه ی رسم دایره به زبان اسمبلی

زیربرنامه ی رسم دایره به زبان اسمبلی

با سلام،
اینم زیربرنامه:
 

پیوست ها

  • Assembly_circle.txt
    2.9 کیلوبایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
برنامه ای ساده برای کار با mouse در اسمبلی

برنامه ای ساده برای کار با mouse در اسمبلی

با سلام،
اینم برنامه:
(البته خیلی سادس!)
 

پیوست ها

  • MouseTest.rar
    1.5 کیلوبایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
برنامه ی اعداد زوج تا 200 به زبان اسمبلی

برنامه ی اعداد زوج تا 200 به زبان اسمبلی

با سلام،
اینم برنامه:
 

پیوست ها

  • Zoj_2_200.rar
    1 کیلوبایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
برنامه ی تشخیص اول بودن عدد موجود در حافظه با اسمبلی

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

با سلام،
اینم برنامه:
 

پیوست ها

  • isPrime.rar
    928 بایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
برنامه ی جمع اعداد بین 3 و 6 بین 10 عدد ورودی

برنامه ی جمع اعداد بین 3 و 6 بین 10 عدد ورودی

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

پیوست ها

  • Sum(3,6).rar
    1.8 کیلوبایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
برنامه ی محاسبه ی 2 به توان 100 با اسمبلی

برنامه ی محاسبه ی 2 به توان 100 با اسمبلی

با سلام،
اینم برنامه:
 

پیوست ها

  • POW(2,100).rar
    1.1 کیلوبایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
برنامه ی محاسبه ی غیربازگشتی ب.م.م دو عدد موجود در حافظه با اسمبلی

برنامه ی محاسبه ی غیربازگشتی ب.م.م دو عدد موجود در حافظه با اسمبلی

با سلام،
اینم برنامه:
 

پیوست ها

  • BMM.rar
    1.2 کیلوبایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
برنامه ی یافتن مجموع ارقام زوج عدد موجود در حافظه با اسمبلی

برنامه ی یافتن مجموع ارقام زوج عدد موجود در حافظه با اسمبلی

با سلام،
اینم برنامه:
 

پیوست ها

  • SumOdd.rar
    1.3 کیلوبایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
برنامه ی مرتب کردن سه عدد ورودی با اسمبلی

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

با سلام،
برنامه اعداد رو مرتب می کنه و با توجه به زوج یا فرد بودن بزرگترین عدد رنگ زمینه را تغییر می دهد.
اینم برنامه:
 

پیوست ها

  • SortXYZ.rar
    2.3 کیلوبایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
تبدیل رشته به رمز و بالعکس

تبدیل رشته به رمز و بالعکس

با سلام،
اینم برنامه:

(البته از یه الگوریتم خیلی ساده توش استفاده شده!)
 

پیوست ها

  • Encrypt.rar
    1.1 کیلوبایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
برنامه ی محاسبه ی ریشه های معادله ی درجه 2

برنامه ی محاسبه ی ریشه های معادله ی درجه 2

با سلام،
اینم برنامه:
(البته کلیه ی محاسبات در غالب اعداد صحیحه!)
 

پیوست ها

  • EQU2.rar
    2.5 کیلوبایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
برنامه ی رسم دایره به زبان اسمبلی

برنامه ی رسم دایره به زبان اسمبلی

با سلام،
اینم زیربرنامه:

با سلام،
به نظر می رسه که حتی فایل های OBJ. هم باید همراه برنامه باشه تا مشکلی به وجود نیاد!
بره همین یه برنامه ی ساده می ذارم که یه دایره ی تو خالی به رنگ آبی در به مرکز (50و50) و اندازه ی 25 رسم می کنه!
(حالا نیاید بگید که این که دایره نیست یه چتد ضلعیه با تعداد ضلع های خیلی زیاد، چرا که دقت رسم این قدر تنظیم شده!)
 

پیوست ها

  • CircleDraw.rar
    2.1 کیلوبایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
برنامه ی محاسبه ی میانگین 5 عدد

برنامه ی محاسبه ی میانگین 5 عدد

با سلام،
این برنامه میانگین 5 عدد موجود در حافظه رو بدست آورده و در حافظه ی دیگه ای ذخیره می کنه!
در فایل اجرایی می تونید خروجی رو ببینید اما کد برنامه شامل بخش گرفتن خروجی نیست!
 

پیوست ها

  • AVG5.rar
    1.1 کیلوبایت · بازدیدها: 0

sayyad84

متخصص زبان Assembly
کاربر ممتاز
ممنون که این برنامه را نوشتید
برنامه ی محاسبه ی میانگین 5 عدد

اما چرا در دهد emu8086 خروجی نمی دهد.
با سلام،
چند تا نکته:
نکته ی مهم این که بارها درخواست شده که لطف کنید تو این تاپیک نظر،سؤال،مشکل و ... رو مطرح نکنید!!
دکمه ی تشکر هم که برای تشکره!
اما در مورد برنامه:
نخواسته بودید که خروجی نمایش داده بشه، پس برنامه شامل اون بخش نمی شد و فقط برای این که مطمئن بشید درست کار می کنه تو فایل اجرایی آورده بودمش و تو پستم هم توضیح داده بودم که شامل اون نیست!
اما در مورد EMU: برنامه رو با استفاده از Open باز کنید و دکمه ی emulate رو بزنید. حالا در صفحه ی جدید از منوی View گزینه ی variables رو انتخاب کنید و از منوی show as در صفحه ی جدید گزینه ی signed رو انتخاب کنید تا مقدار خروجی ها رو نشون بده!
می تونید مقادیر موجود در برنامه رو تغییر بدید و دوباره شبیه سازی کنید!
 

sayyad84

متخصص زبان Assembly
کاربر ممتاز
تفریق دو عدد 32 بیتی

تفریق دو عدد 32 بیتی

با سلام،
این برنامه خروجی در کنسول ایجاد نمی کنه و باید برای اجرا از EMU استفاده کنید. روش استفاده رو هم در پست قبل توضیح دادم!
نکته این که در صفحه ی Variables باید تعداد Elements رو 2 انتخاب کنید تا نتیجه کامل نمایش داده بشه!
کد:
[LEFT].model small
.stack 64h
.data
 A dw 4a5bh,3c4dh
 B dw 3a4bh,4c5bh
 Diff dw ?,?
.code 
 main proc far
  mov ax,@data
  mov ds,ax
  
  mov ax,A[2]
  sub ax,B[2]
  mov Diff[2],ax
  
  mov ax,A[0]
  sbb ax,B[0]
  mov Diff[0],ax
  
  mov ax,4c00h
  int 21h
 main endp
end main[/LEFT]
 

Similar threads

بالا