پرش به


محبوب ترین مطالب پسندیده شده


#16 قطعه کدهایی به زبان اسمبلی

ارسال شده توسط ابوالفضل عربی در 20 February 2017 - 09:01 PM

سلام و درود.

در این پست قصد داریم قطعه کدهایی رو که در طول ترم طراحی خواهیم نمود را آپلود نموده و در اختیار دانشجویان عزیز قرار بدهیم.

انشالله که مورد استفاده ی شما قرار بگیرد.

 

موفق و موید باشید.

 


  • Adamska, kihan, Zeynabfarzad و 1 فرد دیگر این پست را پسندیده اند


#86 پاسخ قطعه کدهای میانترم 960209

ارسال شده توسط mohsen_safari در 16 May 2017 - 05:03 PM

مقایسه ی  دو عدد با زبان سی پلاس پلاس
int a=0 , b=0 , min=0;
Cout<<"a="<<endl;
Cin>>a;
Cout<<"b="<<endl;
Cin>>b;

If(a<b)
{
Cout<<"a<b";
}
else if (b<a)
{
Cout<<"b<a";
}else{
Cout<<"b=a";
}

کد اسمبلی مقایسه ی دو عدد
; Example assembly language program 
; Author:  R. Detmer
; Date:    revised 7/97

.386
.MODEL FLAT

ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD

INCLUDE io.h            ; header file for input/output

cr      EQU     0dh     ; carriage return character
Lf      EQU     0ah     ; line feed

.STACK  4096            ; reserve 4096-byte stack

.DATA                   ; reserve storage for data
	a dword ?
	b dword ?
	pa byte "a= ",0
	pb byte "b= ",0
	voroodi byte 10 dup (?)
	labelamin byte cr,lf,"a<b",0
	labelbmin byte cr,lf,"a>b",0
	labelequal byte cr,lf,"a=b",0
	labelend byte cr,lf,"end of program",0
	

.CODE                           ; start of main program code
_start:
    
		output pa
		input voroodi,10
		atod voroodi
		mov a,eax
		
		output pb
		input voroodi,10
		atod voroodi
		
		mov b,eax
		mov eax,a
		
		cmp eax,b
		je printequal
		jb printamin
		ja printbmin
		jmp endprog
		
		printequal:
		output labelequal
		jmp endprog
		
		printamin:
		output labelamin
		jmp endprog
		
		printbmin:
		output labelbmin
		jmp endprog
		
		
		endprog:
		output labelend
		
		
		
		
		

        INVOKE  ExitProcess, 0  ; exit with return code 0

PUBLIC _start                   ; make entry point public

END                             ; end of source code



  • ابوالفضل عربی, Zeynabfarzad و mohsen_safari این پست را پسندیده است


#6 نحوه اسمبل و لینك كردن برنامه‌های 80386

ارسال شده توسط ابوالفضل عربی در 31 December 2016 - 12:21 AM

با سلام

برای نوشتن برنامه، اسمبل و سپس لینك كردن برنامه‌های اسمبلی 80386 كه در كتاب "زبان اسمبلی و معماری ریزپردازنده 80X86 - ترجمه مهندس هاشم مشحون - انتشارات سروش دانش" پس از دانلود فایل زیر، مراحل زیر را دنبال كنید.
دانلود فایل‌های مورد نیاز (1369 كیلو بایت)
1- پوشه دانلود شده را در مسیر دلخواه خود Extract‌ كنید.
در اینجا فرض كنید پوشه مورد نظر در مسیر ریشه درایو ‍:C قرار دارد.

2- ابتدا برنامه خود را محیط Notepad (یا محیط‌های مشابه) نوشته و فایل خود را با پسوند asm. ذخیره كنید. دقت كنید كه هنگام ذخیره فایل در Notepad، ویژگی Save as type را All files انتخاب كنید و در قسمت Encoding، گزینه ANSI را انتخاب كرده باشید.
در اینجا فرض كنید نام فایل برنامه،‌ test.asm باشد.
3- بر روی Start و سپس Run كلیك كرده و عبارت cmd را تایپ كنید و كلید Enter را بفشارید.
4- دستورهای زیر را به ترتیب تایپ كرده و در هر مرحله، كلید Enter را بفشارید.

cd\
cd assembly
ml /c /coff test.asm

 

اگر در این مرحله با پیغام زیر روبه‌رو شدید، مرحله 5 را انجام دهید در غیر این صورت ابتدا باید خطاهای مشخص شده را رفع كنید سپس دستور آخر مرحله 4 را تكرار كنید.Assembling: test.asm

5- دستور زیر را تایپ كرده و كلید Enter را بفشارید:

link /subsystem:console /entry:start test.obj io.obj kernel32.lib

 

6- اگر در این مرحله پیغام خطایی ظاهر نشود، فایل اجرایی برنامه با نام test.exe تولید خواهد شد كه با وارد كردن نام فایل (test) و فشردن كلید Enter، برنامه اجرا خواهد شد.

اگر می‌خواهد برنامه خود را در محیط windbg (دیباگر تحت ویندوز) اجرا كنید آخرین دستور مرحله 4 و مرحله 5 را به صورت زیر تغییر دهید:


ml /c /coff /Zi test.asm
link /subsystem:console /entry:start /debug test.obj io.obj kernel32.lib
 
 
و سپس دستور زیر را اجرا كنید. بقیه مراحل را طبق كتاب انجام دهید.
 
windbg

فایل های پیوستی

  • فایل پیوستی  Assembly.zip   1.34MB   312 تعداد دریافت ها

  • Adamska, Obeid_1375 و soroush_moznebi این پست را پسندیده است


#22 قطعه کدهایی به زبان سی پلاس پلاس جهت درس زبان ماشین و برنامه سازی سیستم

ارسال شده توسط ابوالفضل عربی در 25 February 2017 - 12:32 AM

سلام و درود.

در این پست قصد داریم قطعه کدهایی به زبان محبوب سی پلاس پلاس برای کار با سیستم و ورودی و خروجی ها رو درج نماییم.

امید است باعث پیشرفت دانشجویان گرامی گردد.

 

موفق و موید باشید


  • Adamska, kihan و Zeynabfarzad این پست را پسندیده است


#20 قطعه کدهایی به زبان اسمبلی

ارسال شده توسط ابوالفضل عربی در 20 February 2017 - 09:04 PM

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

; Example assembly language program -- div two numbers
; Author:  Abolfazl Arabi
; Date:    revised 95/12/01

.386
.MODEL FLAT

ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD

INCLUDE io.h            ; header file for input/output

cr      EQU     0dh     ; carriage return character
Lf      EQU     0ah     ; line feed

.STACK  4096            ; reserve 4096-byte stack

.DATA                   ; reserve storage for data
number1 DWORD   ?
number2 DWORD   ?
prompt1 BYTE    "Enter first number:  ", 0
prompt2 BYTE    "Enter second number:  ", 0
string  BYTE    40 DUP (?)
label1  BYTE    cr, Lf, "The sum is "
sum     BYTE    11 DUP (?)
        BYTE    cr, Lf, 0

.CODE                           ; start of main program code
_start:
        output  prompt1         ; prompt for first number
        input   string, 40      ; read ASCII characters
        atod    string          ; convert to integer
        mov     number1, eax    ; store in memory

        output  prompt2         ; repeat for second number
        input   string, 40
        atod    string
        mov     number2, eax
    
		
        mov     eax, number1    ; first number to EAX
		cdq                     ; 2 cbw  , cwd , cdq Extended
        div     number2         ; div second number
        dtoa    sum, eax        ; convert to ASCII characters
        output  label1          ; output label and sum

        INVOKE  ExitProcess, 0  ; exit with return code 0

PUBLIC _start                   ; make entry point public

END                             ; end of source code



  • Adamska, kihan و moein.shift این پست را پسندیده است


#17 قطعه کدهایی به زبان اسمبلی

ارسال شده توسط ابوالفضل عربی در 20 February 2017 - 09:02 PM

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

; Example assembly language program -- adds two numbers
; Author:  Abolfazl Arabi
; Date:    revised 95/12/01

.386
.MODEL FLAT

ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD

INCLUDE io.h            ; header file for input/output

cr      EQU     0dh     ; carriage return character
Lf      EQU     0ah     ; line feed

.STACK  4096            ; reserve 4096-byte stack

.DATA                   ; reserve storage for data
number1 DWORD   ?
number2 DWORD   ?
prompt1 BYTE    "Enter first number:  ", 0
prompt2 BYTE    "Enter second number:  ", 0
string  BYTE    40 DUP (?)
label1  BYTE    cr, Lf, "The sum is "
sum     BYTE    11 DUP (?)
        BYTE    cr, Lf, 0

.CODE                           ; start of main program code
_start:
        output  prompt1         ; prompt for first number
        input   string, 40      ; read ASCII characters
        atod    string          ; convert to integer
        mov     number1, eax    ; store in memory

        output  prompt2         ; repeat for second number
        input   string, 40
        atod    string
        mov     number2, eax
        
        mov     eax, number1    ; first number to EAX
		cdq                     ; 2 cbw  , cwd , cdq Extended
        add     eax, number2    ; add second number
        dtoa    sum, eax        ; convert to ASCII characters
        output  label1          ; output label and sum

        INVOKE  ExitProcess, 0  ; exit with return code 0

PUBLIC _start                   ; make entry point public

END                             ; end of source code



  • Adamska, kihan و Zeynabfarzad این پست را پسندیده است


#102 قطعه کد جمع دو عدد و درج آن در دیتابیس php , mysql

ارسال شده توسط mohsen_safari در 18 November 2017 - 04:02 PM

<html>
<head>
<style>
@keyframes tst{
	0%{top : 45%;left :70%; background-color:green;color :black}
	25%{top : 80%;left :70%; background-color:red;}
	50%{top : 80%;left :5%; background-color:blue;}
	75%{top : 10%;left :5%; background-color:yellow;}
	100%{top : 10%;left :70%; background-color:black;color : red;}	
}
#test{
	position : absolute;
	top : 35%;
	left :35%;
	bottom : 35%;
	right : 35%;
	background-color : red ;
	text-align : center;
}
#test2{
	position : absolute;
	top : 45%;
	left :70%;
    width : 200px;
	height : 50px;
	background-color : green ;
	text-align : center;
	animation : tst 10s infinite;
}
#idCenter{
position : absolute;
top : 35%;	
left : 15%;

}
</style>
</head>
<body>
<div id="test">
<div id ="idCenter">  
<form method="post" action="" >
x = <input type="text" name="x" /><br>
y = <input type="text" name="y" /><br>
<input  type="submit" name="btnSum" value="جمع"/>
</form>
</div>
</div>
<?php
$sum = 0;
if(ISSET($_POST['btnSum'])){
$a = $_POST['x'];
$b = $_POST['y'];
$sum = $a + $b ;
$link = new mysqli("localhost","root","",'test');
$q="insert into tblsum(x,y,sum) values ('$a','$b',$sum)";
$link->Query($q);
}
echo "<p id='test2'>sum is = ".$sum."</p>";
?>
</body>
</html>

فایل mysql  در پیوست

فایل های پیوستی


  • ابوالفضل عربی, mohsen_safari و mohammadamingholamshahi این پست را پسندیده است


#1 خوش آمد گویی

ارسال شده توسط ابوالفضل عربی در 22 December 2016 - 01:17 AM

با عرض سلام و درود.

ورود شما را به جمع کاربران انجمن دانشجویان دانشگاه آزاد اسلامی واحد جامع بندرعباس خوش آمد میگویم.

 

موفق و موید باشید


  • ابوالفضل عربی, Adamska و mehrdad yousefi این پست را پسندیده است


#88 Exception ها و مدیریت استثناها در زبان سی شارپ

ارسال شده توسط ابوالفضل عربی در 28 May 2017 - 11:16 PM

بروز خطا در برنامه امری اجتناب نا پذیر است و یک برنامه نویس موظف است که خطاها را به درستی در برنامه ها مدیریت کرده و زمان بروز خطا، پیغامی مناسب به کاربر نمایش دهد. در زبان سی شارپ، به خطاها Exception یا استثنا می گویند. در برنامه های کامپیوتری خطاها بر دو دسته اند:
 

  1. خطاهای نحوی یا Syntax Errors: این خطاها به دلیل نوشتن اشتباه دستورات ایجاد شده و معمولاً زمان کامپایل برنامه قابل رفع هستند.
  2. خطاهای منطقی یا Logical Errors: این خطاها به دلیل انجام اشتباه یک عملیات یا ورود اشتباه یک دستور در زمان اجرا اتفاق می افتند.

بیشترین تمرکز ما برای مدیریت خطاها، روی دسته دوم خطاهاست، برای شروع کد زیر را در نظر بگیرید:

var firstNumber = int.Parse(Console.ReadLine());
var secondNumber = int.Parse(Console.ReadLine());

Console.WriteLine(firstNumber/secondNumber);

کد بالا، دو عدد را از ورودی خوانده و حاصل تقسیم این دو عدد را در خروجی چاپ می کند، اما فرض کنید مقدار عدد دوم صفر وارد شود، امکان تقسیم اعداد بر عدد صفر وجود ندارد و در صورت ورود عدد صفر به عنوان ورودی دوم، با پیغام خطای DivideByZero مواجه می شویم. برای رفع ایین مشکل، می بایست از مکانیزم کنترل Exception ها استفاده کنیم. در زبان سی شارپ این مکانیزم، با ساختار try..catch انجام می شود:

try
{
    // place your code here
}
catch([ExceptionType])
{
}
catch([ExceptionType])
{
}
finally
{
}

قسمتی از کد که احتمال وقوع خطا در آن وجود دارد را باید داخل بدنه try بنویسید، با این کار، در صورت وقوع خطا در کدی که داخل بدنه try نوشته شده، قسمت catch اجرا می شود. اما نحوه اجرای قسمت catch به چه صورت است؟ در کتابخانه، برای هر نوع خطا، یک کلاس تعریف شده، برای مثال، برای خطای تقسیم بر صفر کلاسی با نام DivideByZeroException وجود دارد، کلاً تمامی کلاس های مرتبط با خطا های مختلف با کلمه Exception تمام می شوند، کلاس هایی مانند InvalidOperationException یا StackOverlowException، تمامی این کلاس از کلاس پایه ای با نام SystemException مشتق شده اند که خود کلاس SysteException از کلاس Exception مشتق شده است، در حقیقت کلاس Exception کلاس پایه ای برای کلیه خطاهای سیستم می باشد. حال شما بر اساس نوع خطایی که قصد مدیریت آن را دارید، نام Data Type آن را در مقابل catch می نویسید، برای مثال، اگر تصمیم دارید خطای تقسیم بر صفر را مدیریت کنید، ساختار try..catch به صورت زیر نوشته می شود:

try
{

}
catch (DivideByZeroException)
{                
}

در صورتی که خطای تقسیم بر صفر در سیستم رخ دهد، بدنه catch اجرا خواهد شد، کد ابتدای آموزش را به صورت زیر تغییر می دهیم:

try
{
    var firstNumber = int.Parse(Console.ReadLine());
    var secondNumber = int.Parse(Console.ReadLine());

    Console.WriteLine(firstNumber / secondNumber);
}
catch (DivideByZeroException)
{
    Console.WriteLine("Second number must be greater than zero!");
}

Console.ReadKey();

با اجرای کد بالا، در صورتی که عدد دوم را صفر وارد کنیم، به جای متوقف شدن برنامه و بروز خطا، پیغام مناسب برای کاربر نمایش داده می شود. اما نکته ای که وجود دارد، شما می توانید بیشتر از یک بدنه catch داشته باشید. برای مثال، در کد بالا در صورتی که شما به جای عدد کاراکتر a را وارد کنید، با خطای FormatException مواجه می شوید، برای مدیریت این خطا کافیست کد بالا را به صورت زیر تغییر دهید:

try
{
    var firstNumber = int.Parse(Console.ReadLine());
    var secondNumber = int.Parse(Console.ReadLine());

    Console.WriteLine(firstNumber/secondNumber);
}
catch (DivideByZeroException)
{
    Console.WriteLine("Second number must be greater than zero!");
}
catch (FormatException)
{
    Console.WriteLine("Invalid input format!");
}

با کد بالا، در صورت اشتباه در ورودی، خطا مدیریت شده و پیغام مناسب نمایش داده می شود. قسمت دیگر ساختار try..catch، بدنه finally می باشد، این قسمت از ساختار، در هر صورت اجرا خواهد شد، چه خطا رخ بدهد، چه خطا رخ ندهد، کد بالا را به صورت زیر تغییر می دهیم:

try
{
    var firstNumber = int.Parse(Console.ReadLine());
    var secondNumber = int.Parse(Console.ReadLine());

    Console.WriteLine(firstNumber/secondNumber);
}
catch (DivideByZeroException)
{
    Console.WriteLine("Second number must be greater than zero!");
}
catch (FormatException)
{
    Console.WriteLine("Invalid input format!");
}
finally
{
    Console.WriteLine("Thank you for choosing ITPRO.IR!");
}

با کد بالا، پیغام داخل بدنه finally در هر صورت در خروجی چاپ خواهد شد، استفاده از بدنه finally بیشتر زمانی کاربرد دارد که شما می خواهید بعد از اتمام عملیات، اقدام به پاک سازی حافظه و آزاد سازی منابع کنید.

امکان مدیریت خطاها به صورت عمومی نیز وجود دارد، گفتیم کلیه کلاس های مربوط به خطاها از کلاس Exception مشتق شده اند، برای مدیریت عمومی خطاها، کافیست در بدنه catch به جای یک نوع مشخص از خطا، نام Exception را بنویسیم:

try
{
    var firstNumber = int.Parse(Console.ReadLine());
    var secondNumber = int.Parse(Console.ReadLine());

    Console.WriteLine(firstNumber/secondNumber);
}
catch (Exception)
{
    Console.WriteLine("Oops! Your input stopped me!");
}

با کد بالا دیگر نوع خطا تفاوتی نمی کند، با وقوع هر خطایی، پیغام داخل بدنه catch در خروجی چاپ می شود.

همانطور که گفتیم، کلاس Exception، کلاس پایه ای برای کلیه خطاهای سیستم می باشند، این کلاس حاوی یک سری خصوصیات است که اطلاعات دقیق تری به ما می دهند. برای دسترسی به اطلاعات خطا، به جای نوشتن تنها نام Exception در مقابل بدنه catch، داخل پرانتز Exception را به صورت یک پارامتر تعریف می کنیم تا بتوانیم به اطلاعات آن داخل بدنه catch دسترسی داشته باشیم:

try
{
    var firstNumber = int.Parse(Console.ReadLine());
    var secondNumber = int.Parse(Console.ReadLine());

    Console.WriteLine(firstNumber/secondNumber);
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
    Console.WriteLine(ex.StackTrace);
    Console.WriteLine(ex.InnerException.ToString());
}

همانطور که مشاهده می کنید کلاس Exception شامل یکسری خصوصیات است، در زیر به بررسی مهمترین خصوصیات کلاس Exception می پردازیم:
 

  1. خصوصیت Message: این خصوصیت حاوی پیغام خطای تولید شده توسط برنامه است
  2. خصوصیت StackTrace: این خصوصیت شامل جزئیاتی از خطای رخ داده شده است، ممکن است خطاها در هر قسمت از برنامه رخ دهند، بوسیله stack trace قابلیت ردیابی خطا و اینکه وقوع این خطا بعد از فراخوانی کدام متدها و در کدام فایل و خط از برنامه اتفاق افتاده را خواهیم داشت.
  3. خصوصیت InnerException: گاهی اوقات، یک خطا می تواند شامل یک خطای درونی باشد، برای مثال، شما زمانی که با بانک SQL Server کار می کنید، ممکن از زمان کار با بانک، خطایی دریافت کنید، خصوصیت Inner Exception اطلاعات جزئی تری از خطاهای اتفاق افتاده به شما می دهد. این خصوصیت از نوع Exception بوده و اطلاعات خطاهای درونی یک خطا را به ما می دهد.

خطاهای دلخواه و دستور throw

در زبان سی شارپ امکان تعریف خطاهای دلخواه وجود دارد، همانطور که در قسمت قبلی گفتیم، هر خطا از کلاس SystemException مشتق شده که خود SystemException از کلاس Exception مشتق می شود، در دات نت کلاس دیگری وجود دارد به نام ApplicationException که از کلاس Exception مشتق شده و ما می توانیم با ایجاد کلاس هایی که از ApplicationException مشتق شده اند، خطاهای دلخواه خود را تعریف کنیم. برای مثال، کد زیر را در نظر بگیرید:

public class StudentManager
{
    public void RegisterStudent(string firstName, string lastName, byte age)
    {
        // add student to database
    }
}

فرض کنید، می خواهیم از ثبت نام افرادی که سنشان کمتر از 18 سال است جلوگیری کنیم. برای اینکار می توانیم به این صورت عمل کنیم، ابتدا یک کلاس برای خطای سن کمتر از 18 سال تعریف می کنیم:

public class InvalidAgeException : ApplicationException
{
    public InvalidAgeException(string message) : base(message)
    {
    }
}

دقت کنید به عنوان پارامتر ورودی سازنده، پیغام خطا را دریافت و به سازنده کلاس پدر ارسال می کنیم. حال باید از این خطا در کلاس StudentManager استفاده کنیم، یعنی با ورود سن کمتر از 18 سال، خطای InvalidAgeException صادر شود، در زبان سی شارپ، برای صدور خطا از دستور throw استفاده می کنیم:

public class StudentManager
{
public void RegisterStudent(string firstName, string lastName, byte age)
{
if (age < 18)
throw new InvalidAgeException("Age must be greater that 18!");
/ add student to database
}
} 

در مرحله بعد، با اجرای دستور زیر خطا دریافت خواهیم کرد:

new StudentManager().RegisterStudent("Hossein", "Ahmadi", 17);

حال می توانیم با ساختار try..catch این خطا را مدیریت کنیم:

try
{

}
catch (InvalidAgeException ex)
{
    Console.WriteLine(ex.ToString());
    throw;
}

همانطور که مشاهده می کنید در ساختار بالا، خطای InvalidAgeException مدیریت شده و پیغام خطا در خروجی چاپ می شود.


  • MeYsam_96 و mostafa.bazyar این پست را پسندیده است


#85 پاسخ قطعه کدهای میانترم 960209

ارسال شده توسط mohsen_safari در 16 May 2017 - 04:54 PM

محاسبه ی فاکتوریل با زبان سی پلاس پلاس
int fact=1 , n=1 ;
While (n>0){
fact*=N;
n--;
}
Cout<<fact;

کد اسمبلی محاسبه فاکتوریل
; Example assembly language program 
; Author:  R. Detmer
; Date:    revised 7/97

.386
.MODEL FLAT

ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD

INCLUDE io.h            ; header file for input/output

cr      EQU     0dh     ; carriage return character
Lf      EQU     0ah     ; line feed

.STACK  4096            ; reserve 4096-byte stack

.DATA                   ; reserve storage for data
		fact dword ?
		n dword ?
		p1 byte "enter number :",0
		voroodi byte 10 dup (?)
		lable1 byte cr,lf,"the fact is:"
		resfact byte 11 dup(?)
				byte cr,lf,0
				
				
				.code
_start:
				output p1 
				input voroodi,10
				atod voroodi
				mov n,eax
				mov eax,1
				mov  fact,1
				
				first:
				mov  eax,fact
				cdq
				imul eax,n
				sub n,1
				mov  fact,eax
				cmp n,1
				jne first
				dtoa resfact,eax
				output lable1


        INVOKE  ExitProcess, 0  ; exit with return code 0

PUBLIC _start                   ; make entry point public

END                             ; end of source code



  • ابوالفضل عربی و mohsen_safari این پست را پسندیده است


#7 نحوه اسمبل و لینك كردن برنامه‌های 80386

ارسال شده توسط ابوالفضل عربی در 31 December 2016 - 12:23 AM

سلام و درود.
دانشجویان گرامی دقت نمایید:
برای اجرای دستورات بالا کافی است یک قطعه کد شبیه کد زیر را نوشته و با نام test.asm ذخیره نمایید.


; Example assembly language program -- adds two numbers
; Author: M S Abolfazl Arabi
; Date: revised 2015/08/01

.386
.MODEL FLAT

ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD

INCLUDE io.h ; header file for input/output

cr EQU 0dh ; carriage return character
Lf EQU 0ah ; line feed

.STACK 4096 ; reserve 4096-byte stack

.DATA ; reserve storage for data
number1 DWORD ?
number2 DWORD ?
prompt1 BYTE "Enter first number: ", 0
prompt2 BYTE "Enter second number: ", 0
string BYTE 40 DUP (?)
label1 BYTE cr, Lf, "The sum is "
sum BYTE 11 DUP (?)
BYTE cr, Lf, 0

.CODE ; start of main program code
_start:
output prompt1 ; prompt for first number
input string, 40 ; read ASCII characters
atod string ; convert to integer
mov number1, eax ; store in memory

output prompt2 ; repeat for second number
input string, 40
atod string
mov number2, eax

mov eax, number1 ; first number to EAX
add eax, number2 ; add second number
dtoa sum, eax ; convert to ASCII characters
output label1 ; output label and sum

INVOKE ExitProcess, 0 ; exit with return code 0

PUBLIC _start ; make entry point public

END ; end of source code

حال کافی است پس از اجرای دستورات در انتها دستور زیر را درج نمایید :

test.exe

حال برنامه اجرا خواهد شد و شما می توانید با مقدار دهی و اجرای فرامین نتایج رو ببینید.
موفق و موید باشید


  • Adamska و kihan این پست را پسندیده است


#55 مباحث تدریس شده ی درس برنامه سازی سیستم در ترم بهمن 95-96

ارسال شده توسط ابوالفضل عربی در 04 May 2017 - 03:39 AM

با عرض سلام و درود.
در این پست قصد داریم مباحث تدریس شده ای که قطعا از تمامی آنها در امتحان پایان ترم سوالاتی خواهد آمد ، رو جهت یادآوری درج نماییم.
امیدوارم نهایت استفاده از این پست بشود و همچنین در صورت اشکال ، جهت رفع آن در کلاس در خدمتتون خواهم بود.

ضمنا کتاب معرفی شده برای این درس در ترم جاری برای قسمت زبان ماشین و اسمبلی رو میتونید از لینک زیر دانلود نمایید.
جزوه ی اصلی درس زبان ماشین و برنامه سازی سیستم مهندس داریوش نیک مهر
 
برای یادگیری زبان سی شارپ کتاب زیر توصیه می شود.
آموزش سی شارپ__مهندس اسلام احمد زاده
 
لازم به ذکر است که فقط مباحثی که در کلاس تدریس شده باشند در امتحان پایان ترم خواهند آمد و قطعا تمام مطالب در این پست آورده خواهند شد.
 
موفق و موید باشید.
مهندس ابوالفضل عربی
بروزرسانی در مورخه 96/02/14

فایل های پیوستی


  • Adamska و MeYsam_96 این پست را پسندیده است


#54 مباحث تدریس شده درس زبان ماشین و اسمبلی در ترم بهمن 95-96

ارسال شده توسط ابوالفضل عربی در 04 May 2017 - 02:53 AM

با عرض سلام و درود.

در این پست قصد داریم مباحث تدریس شده ای که قطعا از تمامی آنها در امتحان پایان ترم سوالاتی خواهد آمد ، رو جهت یادآوری درج نماییم.

امیدوارم نهایت استفاده از این پست بشود و همچنین در صورت اشکال ، جهت رفع آن در کلاس در خدمتتون خواهم بود.

 

  1. تبدیل انواع مبناها ( به طور کامل )
  2. جمع و تفریق مبناها
  3. نحوه ی اسمبل و لینک کردن یک قطعه کد اسمبلی
  4. معرفی تعدادی از دستورالعمل ها در زبان اسمبلی
  5. برنامه نویسی به زبان اسمبلی به شرح زیر

 

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

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

 

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

 

موفق و موید باشید.

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

بروزرسانی در مورخه 96/02/14


  • Adamska و Zeynabfarzad این پست را پسندیده است


#44 پاسخ قطعه کدهای میانترم 960209

ارسال شده توسط ابوالفضل عربی در 29 April 2017 - 05:13 PM

با سلام و درود.
قطعه کد زیر را به اسمبلی تبدیل نمایید.
int i,s,sb,sm,n=0;


cout<<"enter N : "<<endl;
cin>>n;

while(i<n)
{

sm+=i;
sb+=i;
s+=i;
i++;
}
cout<<s<<sm<<sb<<end;

پاسخ به زبان اسمبلی 32 بیتی :
; Example assembly language program 
; Author:  Abolfazl Arabi


.386
.MODEL FLAT

ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD

INCLUDE io.h            ; header file for input/output

cr      EQU     0dh     ; carriage return character
Lf      EQU     0ah     ; line feed

.STACK  4096            ; reserve 4096-byte stack

.DATA                   ; reserve storage for data
n        DWORD   ?
sm       DWORD   ?
sb        DWORD   ?
s        DWORD   ?
prompt1 BYTE    "Enter n:  ", 0
string  BYTE    40 DUP (?)

label1  BYTE    cr, Lf, "The sum is "
sm1     BYTE    11 DUP (?)
        BYTE    cr, Lf, 0
label2  BYTE    cr, Lf, "The sub is "
sb1      BYTE    11 DUP (?)
        BYTE    cr, Lf, 0	
label3  BYTE    cr, Lf, "The Mul  is "
s1       BYTE    11 DUP (?)
        BYTE    cr, Lf, 0		
		
		
.CODE                           ; start of main program code
_start:
        output  prompt1         ; prompt for first number
        input   string, 40      ; read ASCII characters
        atod    string          ; convert to integer
        mov     n, eax    ; store in memory
		
		mov ecx,n	
		mov n,0
		mov sm,0
		mov sb,0
		mov s,0
 first:
		mov eax,sm
		add eax,n
		mov sm,eax
		
		mov eax,sb
		sub eax,n
		mov sb,eax
		add  n,1
		cmp ecx,n
		jne first
		
		mov eax , sm
		cdq
		imul eax,sb
     
        
		
        dtoa    s1, eax        ; convert to ASCII characters
        output  label3          ; output label and sum
		
		mov    eax,sb
		 dtoa    sb1, eax        ; convert to ASCII characters
        output  label2          ; output label and sum

		mov    eax,sm
		 dtoa    sm1, eax        ; convert to ASCII characters
        output  label1          ; output label and sum
		
        INVOKE  ExitProcess, 0  ; exit with return code 0

PUBLIC _start                   ; make entry point public

END                             ; end of source code



  • armin و hosseind70 این پست را پسندیده است


#26 قطعه کد پاسخ امتحان میانترم مورخه 21اسفند95

ارسال شده توسط ابوالفضل عربی در 11 March 2017 - 05:10 PM

با سلام و درود.

پاسخ سوال 2 امتحان  :   F(x) = x^2 + 3xy - 2

; Example assembly language program -- F(x) = x^2 + 3xy - 2

.386
.MODEL FLAT

ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD

INCLUDE io.h            ; header file for input/output

cr      EQU     0dh     ; carriage return character
Lf      EQU     0ah     ; line feed

.STACK  4096            ; reserve 4096-byte stack

.DATA                   ; reserve storage for data
number1 DWORD   ?
number2 DWORD   ?
resPow     DWORD   ?
resTow     DWORD   ?

prompt1 BYTE    "Enter first number:  ", 0
prompt2 BYTE    "Enter second number:  ", 0
string  BYTE    40 DUP (?)
label1  BYTE    cr, Lf, "The sum is "
sum     BYTE    11 DUP (?)
        BYTE    cr, Lf, 0

.CODE                           ; start of main program code
_start:
        output  prompt1         ; prompt for first number
        input   string, 40      ; read ASCII characters
        atod    string          ; convert to integer
        mov     number1, eax    ; store in memory

        output  prompt2         ; repeat for second number
        input   string, 40
        atod    string
        mov     number2, eax
        
        mov     eax, number1    ; first number to EAX
		imul     number1 
		mov    resPow , eax
		
		mov     eax, number1    ; first number to EAX
		imul     number2
			
		imul     eax,3
		mov     resTow,eax
		
		mov     eax, resPow
		 add     eax, resTow    ; add second number
		 
		 sub     eax , 2
		
        dtoa    sum, eax        ; convert to ASCII characters
        output  label1          ; output label and sum

        INVOKE  ExitProcess, 0  ; exit with return code 0

PUBLIC _start                   ; make entry point public

END                             ; end of source code



  • mohadeseh و meysam این پست را پسندیده است


#24 قطعه کدهایی به زبان سی پلاس پلاس جهت درس زبان ماشین و برنامه سازی سیستم

ارسال شده توسط ابوالفضل عربی در 25 February 2017 - 08:02 PM

قطعه کد طراحی ساده ی منو برای انجام 4 عمل اصلی

#include <iostream>
using namespace std;
#include<conio.h>
void main()
{
	int i=0;
	double  x=0 , y=0  ;
	do{
cout<<"*****************************"<<endl;
cout<<"*******1.sum     ************"<<endl;
cout<<"*******2.sub     ************"<<endl;
cout<<"*******3.Mul     ************"<<endl;
cout<<"*******4.Div     ************"<<endl;
cout<<"*******0.EXIT    ************"<<endl;
cout<<"*****************************"<<endl;
cin>>i;
switch(i)
{
case 1 :
	cout<<"sum"<<endl;
	cout<<"Enter First Number :"<<endl;
	cin>>x;
	cout<<"Enter Second Number :"<<endl;
	cin>>y;
	cout<<"X+Y = "<<x+y<<endl;
	break;
	case 2 :
	cout<<"sub"<<endl;
	cout<<"Enter First Number :"<<endl;
	cin>>x;
	cout<<"Enter Second Number :"<<endl;
	cin>>y;
	cout<<"X-Y = "<<x-y<<endl;
	break;
	case 3 :
	cout<<"mul"<<endl;
	cout<<"Enter First Number :"<<endl;
	cin>>x;
	cout<<"Enter Second Number :"<<endl;
	cin>>y;
	cout<<"X*Y = "<<x*y<<endl;
	break;
	case 4 :
	cout<<"div"<<endl;
	cout<<"Enter First Number :"<<endl;
	cin>>x;
	cout<<"Enter Second Number :"<<endl;
	cin>>y;
	if(y!=0){
		cout<<"X/Y = "<<x/y<<endl;}
	else
	{cout<<"y=0"<<endl;
	}
	break;
	default:
		cout<<"Other"<<endl;
		break;

}
	}while(i!=0);

getch();
}

کد بالا به زبان اسمبلی :

; Example assembly 
; Author:  Abolfazl Arabi
; Date:    1395/12/08

.386
.MODEL FLAT

ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD

INCLUDE io.h            ; header file for input/output

cr      EQU     0dh     ; carriage return character
Lf      EQU     0ah     ; line feed

.STACK  4096            ; reserve 4096-byte stack

.DATA                   ; reserve storage for data

number1 DWORD   ?
number2 DWORD   ?
prompt1 BYTE    "Enter first number:  ", 0
prompt2 BYTE    "Enter second number:  ", 0

label1  BYTE    cr, Lf, "The Result is : "
Result  BYTE    11 DUP (?)
        BYTE    cr, Lf, 0


promptMenue BYTE    "***********************************  " 
		BYTE    cr, Lf,"*********1.sum          ***********  "
		BYTE    cr, Lf,"*********2.sub          ***********  "
		BYTE    cr, Lf,"*********3.mul          ***********  "
		BYTE    cr, Lf,"*********4.div          ***********  "
		BYTE    cr, Lf,"*********0.Exit         ***********  "
		BYTE    cr, Lf,"***********************************  "
		BYTE    cr, Lf, 0

string  BYTE    40 DUP (?)
inSwitch     dword	11 DUP (?)


label2		BYTE    cr, Lf, " Good Bye ...", 0		




.CODE                           ; start of main program code
_start:

	 output  promptMenue         ; End While
        input   string, 40
        atod    string
        mov     inSwitch, eax
		
		cmp    inSwitch,0  ; if Switch-Case == 0 
		jng endofProgram    ; If equal, jump to End else Jump to First Switch-Case
		
		cmp    inSwitch,5  ; if Switch-Case == 5 
		jge endofProgram    ; If equal, jump to End else Jump to First Switch-Case
		
		cmp    inSwitch,1  ; if Switch-Case == 1  sum 
		je    SwitchSum
		
		cmp    inSwitch,2  ; if Switch-Case == 2  sub 
		je    SwitchSub
		
		cmp    inSwitch,3  ; if Switch-Case == 3  mul 
		je    SwitchMul
		
		cmp    inSwitch,4  ; if Switch-Case == 4  div 
		je    SwitchDiv
		
		jmp	_start   ; begin
		
	SwitchSum:
		 output  prompt1         ; prompt for first number
        input   string, 40      ; read ASCII characters
        atod    string          ; convert to integer
        mov     number1, eax    ; store in memory

        output  prompt2         ; repeat for second number
        input   string, 40
        atod    string
        mov     number2, eax
        
        mov     eax, number1    ; first number to EAX
		cdq                     ; 2 cbw  , cwd , cdq Extended
        add     eax, number2    ; add second number
        dtoa    Result, eax        ; convert to ASCII characters
        output  label1          ; output label and Result
	jmp	_start
	;//////////////////////sub////////////////////////
	SwitchSub:
	 output  prompt1         ; prompt for first number
        input   string, 40      ; read ASCII characters
        atod    string          ; convert to integer
        mov     number1, eax    ; store in memory

        output  prompt2         ; repeat for second number
        input   string, 40
        atod    string
        mov     number2, eax
        
        mov     eax, number1    ; first number to EAX
		cdq                     ; 2 cbw  , cwd , cdq Extended
        sub     eax, number2    ; sub second number
        dtoa    Result, eax        ; convert to ASCII characters
        output  label1          ; output label and Result
	jmp	_start
	;//////////////////////mul////////////////////////
	SwitchMul:
		output  prompt1         ; prompt for first number
        input   string, 40      ; read ASCII characters
        atod    string          ; convert to integer
        mov     number1, eax    ; store in memory

        output  prompt2         ; repeat for second number
        input   string, 40
        atod    string
        mov     number2, eax
        
        mov     eax, number1    ; first number to EAX
		cdq                     ; 2 cbw  , cwd , cdq Extended
        mul      number2    ; mul second number
        dtoa    Result, eax        ; convert to ASCII characters
        output  label1          ; output label and Result	
	jmp	_start
	;//////////////////////div////////////////////////
	SwitchDiv:
	    output  prompt1         ; prompt for first number
        input   string, 40      ; read ASCII characters
        atod    string          ; convert to integer
        mov     number1, eax    ; store in memory

        output  prompt2         ; repeat for second number
        input   string, 40     
        atod    string
        mov     number2, eax
		
		cmp    number2,0  ; if string == 0 
		je _start    ; If equal, Jump to First Switch-Case

        mov     eax, number1    ; first number to EAX
		cdq                     ; 2 cbw  , cwd , cdq Extended
        div     number2         ; div second number
        dtoa    Result, eax        ; convert to ASCII characters
        output  label1          ; output label and Result
	jmp	_start
	;///////////////////////////////
	

	jmp	_start
	
	endofProgram:
		output	label2	
        INVOKE  ExitProcess, 0  ; exit with return code 0

PUBLIC _start                   ; make entry point public

END                             ; end of source code



  • Adamska و kihan این پست را پسندیده است


#23 قطعه کدهایی به زبان سی پلاس پلاس جهت درس زبان ماشین و برنامه سازی سیستم

ارسال شده توسط ابوالفضل عربی در 25 February 2017 - 12:33 AM

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

//  file
#include <iostream>
#include <fstream>
#include <string>
#include<conio.h>
using namespace std;

void read(string fileName)
{
	string line;
	ifstream myfile(fileName);
	if (myfile.is_open())
	{
		while (getline(myfile, line))
		{
			cout << line << '\n';
		}
		myfile.close();
	}

	else cout << "Unable to open file";
	

}

void write(string fileName ,string text )
{
	ofstream myfile(fileName);
	if (myfile.is_open())
	{
		myfile << text;
		myfile.close();
	}
	else cout << "Unable to open file";
}

int main() {
	
	read("1.txt");

	write("1.txt", "test Write file");

	_getch();

	return 0;
}

  • Adamska و kihan این پست را پسندیده است


#19 قطعه کدهایی به زبان اسمبلی

ارسال شده توسط ابوالفضل عربی در 20 February 2017 - 09:04 PM

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

; Example assembly language program -- mul two numbers
; Author:  Abolfazl Arabi
; Date:    revised 95/12/01

.386
.MODEL FLAT

ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD

INCLUDE io.h            ; header file for input/output

cr      EQU     0dh     ; carriage return character
Lf      EQU     0ah     ; line feed

.STACK  4096            ; reserve 4096-byte stack

.DATA                   ; reserve storage for data
number1 DWORD   ?
number2 DWORD   ?
prompt1 BYTE    "Enter first number:  ", 0
prompt2 BYTE    "Enter second number:  ", 0
string  BYTE    40 DUP (?)
label1  BYTE    cr, Lf, "The sum is "
sum     BYTE    11 DUP (?)
        BYTE    cr, Lf, 0

.CODE                           ; start of main program code
_start:
        output  prompt1         ; prompt for first number
        input   string, 40      ; read ASCII characters
        atod    string          ; convert to integer
        mov     number1, eax    ; store in memory

        output  prompt2         ; repeat for second number
        input   string, 40
        atod    string
        mov     number2, eax
        
        mov     eax, number1    ; first number to EAX
		cdq                     ; 2 cbw  , cwd , cdq Extended
        mul      number2    ; mul second number
        dtoa    sum, eax        ; convert to ASCII characters
        output  label1          ; output label and sum

        INVOKE  ExitProcess, 0  ; exit with return code 0

PUBLIC _start                   ; make entry point public

END                             ; end of source code



  • Adamska و kihan این پست را پسندیده است


#121 آموزش ایمپورت از فایل اکسل به دیتابیس و اکسپورت از دیتابیس به فایل اکسل

ارسال شده توسط imanazadi در 23 January 2018 - 10:33 PM

با سلام خدمت دوستان عزیز

 

در این آموزش نحوه ایمپورت کردن از فایل اکسل به دیتابیس و اکسپورت کردن از دیتابیس به فایل اکسل را خدمت شما دوستان ارائه میکنم .

 

 توضیحات : 

 

کدها در محیط localhost نوشته شده است .

در این آموزش جهت خواندن و نوشتن فایل اکسل از کلاس PHPExcel استفاده شده است .

 

در این آموزش همچنین خواهید آموخت :

  • روش های ارسال اطلاعات از طریق متدهای  POST و GET 
  • نحوه آپلود فایل و ذخیره در سرور 
  • روش دانلود فایل توسط مرورگر 
  • تولید کد خطای مناسب برای کاربر
  • سوییچ بین صفحات مختلف با تگ A
  • ارسال اطلاعات بین صفحات مختلف توسط متد GET

 

 

 

 

ساخت دیتابیس

 

ابتدا یک دیتابیس با نام db در phpmyadmin ایجاد کرده و کد اسکریپت زیر را جهت ساخت جدول مربوطه در تب sql کپی و آنرا اجرا میکنیم (go)

-- phpMyAdmin SQL Dump
-- version 4.1.12
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: Jan 21, 2018 at 06:02 AM
-- Server version: 5.6.16
-- PHP Version: 5.5.11

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

--
-- Database: `db`
--

-- --------------------------------------------------------

--
-- Table structure for table `tbl_test`
--

CREATE TABLE IF NOT EXISTS `tbl_test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `first_name` varchar(150) COLLATE utf8_persian_ci NOT NULL,
  `last_name` varchar(150) COLLATE utf8_persian_ci NOT NULL,
  `email` varchar(150) COLLATE utf8_persian_ci NOT NULL,
  `birthday` varchar(150) COLLATE utf8_persian_ci NOT NULL,
  `city` varchar(150) COLLATE utf8_persian_ci NOT NULL,
  `country` varchar(150) COLLATE utf8_persian_ci NOT NULL,
  `address` varchar(150) COLLATE utf8_persian_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci AUTO_INCREMENT=6 ;

--
-- Dumping data for table `tbl_test`
--

INSERT INTO `tbl_test` (`id`, `first_name`, `last_name`, `email`, `birthday`, `city`, `country`, `address`) VALUES
(1, 'alireza', 'azadi', 'a_azadi1984@yahoo.com', '1984', 'bandar abbas', 'iran', 'golshahr'),
(2, 'hassan', 'bahrami', 'h.bahrami@gmail.com', '1989', 'bandar abbas', 'iran', 'golshahr'),
(3, 'mohamad', 'beiranvand', 'm.beiranvand@yahoo.com', '1989', 'bandar abbas', 'iran', 'unknow'),
(4, 'mohsen', 'safari', 'm.safari@yahoo.com', '1985', 'bandar abbas', 'iran', 'unknow');

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

فایل کانکشن : 

 

بعد از ایجاد جدول tbl_test یک فایل بنام cnn.php ایجاد کرده و کدهای زیر را درون آن کپی میکنیم . این فایل ارتباطمون را با دیتایس برقرار میکنه .

 

نکته : بجای نام کاربری و پسورد در کد زیر نام کاربری و پسورد دیتابیس خودتون رو قرار دهید .

<?php

date_default_timezone_set("Asia/Tehran");

$host = 'localhost';
$db_name = 'db';
$db_user = 'نام کاربری دیتابیس';
$db_pass = 'پسورد دیتابیس';


$pdo = new PDO("mysql:host={$host};dbname={$db_name}", $db_user, $db_pass);


?>

فایل واسط برای آپلود فایل توسط کاربر جهت ایمپورت 

 

یک فایل با نام import.php ایجاد و کدهای زیر را در آن کپی میکنیم

 

این فایل واسط کاربریمون برای آپلود فایل توسط کاربر و خواندن فایل فوق و ایمپورت (وارد کردن)  آن به دیتابیس هست

<?php
	if(isset($_GET['template']))
	{
		$file = './template.xlsx';

		header("Content-type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");		
		header("Content-Disposition: attachment; filename=". basename($file));
		header("Content-Length: " . filesize($file));
		header("Pragma: no-cache");
		header("Expires: 0");
		readfile( $file );
	}
?>
	
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="Description" content="import to excel">
<meta name="Keywords" content="import, xlsx, excel">
<meta name="author" content="a.azadi">

	
<title>Untitled Document</title>


<style>
	
	*{margin: 0;padding: 0;}
	
	.container{ margin: auto;position: absolute;top: 0;bottom: 0;left: 0;right: 0;width: 50%;height: 40%;}
	
	#imp_sec form{line-height: 25px;}
	
	a{text-decoration: none;}
	
</style>

</head>

<body>


	
<div class="container" >
	
	<div id="imp_sec">

		<div style="text-align: center;">
		<?php
			if(isset($_GET['code']))
			{
				$msg = '';
				switch($_GET['code'])
				{
					case 100:

						$msg = 'file import successfully';							
						break;

					case 110:

						$msg = 'error : unknow error in upload file';							
						break;

					case 120:

						$msg = 'error : file extension is not valid';
						break;


					case 130:

						$msg = 'error : file size is not valid / maximum 5mb';
						break;

					case 140:

						$msg = 'error : File not uploaded';
						break;

					case 150:

						$msg = 'error : File not uploaded';
						break;

					case 200:

						$msg = 'error : the excel library not found';
						break;

					case 210:

						$msg = 'error : input file name is not valid';
						break;

					default:

						$msg = 'error :  unknow error';
						break;							

				}

				$color = ($_GET['code'] == 100) ? '#008000' : '#f00';
				echo "<p style='color:{$color};padding:20px 10px;font-size:18px;text-transform: capitalize;'>{$msg}</p>";
			}			
		?>
		</div>

		<fieldset style="border-radius: 4px;padding: 0 10px;">
			<legend style="padding: 0 10px;">import from file</legend>

			<form action="run_import.php" method="post" enctype="multipart/form-data" name="frm_imp" style="padding: 40px 25px;">

				<span style="color: #f00;font-size: 12px;line-height: 35px;">Allowed files : xls , xlsx</span>

				<div>
					<input type="file" name="file">
				</div>

				<a href="?template=1">template</a>

				<div style="float: right;margin-top: 15px;">
					<button style="padding:2px 10px;">Import</button>
				</div>

			</form>

		</fieldset>

	</div>

	<div style="float: right;">
		<a href="export.php" style="padding:0 10px; " >goto export to file</a>
	</div>
	
</div>
	
</body>

<script>
	
</script>
	
</html>

فایل دریافت و خواندن فایل کاربر و دستورات ذخیره سازی

 

یک فایل با نام run_import.php ایجاد و کدهای زیر را در آن قرار میدهیم .

<?php

require_once('cnn.php');

$excel_library_path = 'PHPExcel/Classes/PHPExcel/IOFactory.php';

if( ! file_exists($excel_library_path))
{
	header('Location:import.php?code=200');
	exit();
}

require_once($excel_library_path);


if ( ! isset($_FILES['file']))
{
	header('Location:import.php?code=210');
	exit();
}


$file = $_FILES['file'];

$file_name = $file['name'];
$file_type = $file['type'];
$file_err = $file['error'];
$file_size = $file['size'];
$file_tmp = $file['tmp_name'];


if($file_err)
{
	header('Location:import.php?code=110');
	exit();
}


$ext = pathinfo($file_name, PATHINFO_EXTENSION);
$ext = strtolower($ext);


if( ! in_array($ext, array('xls','xlsx')))
{
	header('Location:import.php?code=120');
	exit();		
}


if($file_size > 50000)
{
	header('Location:import.php?code=130');
	exit();		
}


$target_dir = "uploads/";
$target_file = $target_dir . basename($file_name);


$valid = true;
if( ! is_dir($target_dir))
{
	$valid = mkdir($target_dir,'0755');
}


if ( ! ($valid && move_uploaded_file($file_tmp, $target_file)))
{
	header('Location:import.php?code=140');
	exit();
}


$file = $target_file;


$objPHPExcel = PHPExcel_IOFactory::load($file);

$sheet = $objPHPExcel->getSheet(0);

$total_rows = $sheet->getHighestRow();

$total_columns = $sheet->getHighestColumn();


$fields = array('first_name' , 'last_name', 'email', 'birthday', 'city', 'country', 'address');


$sql = "insert into tbl_test ";

$sql .= '(`'.implode('`,`' , $fields).'`)';

$sql .= 'values ('.rtrim(str_repeat('?,', count($fields)), ',').')';


$stmt = $pdo->prepare($sql);


$error = false ;

for($row = 2; $row <= $total_rows; $row++)
{	
	$row_data = $sheet->rangeToArray('A' . $row . ':' . $total_columns . $row, NULL, TRUE, FALSE);
	
	$res = @$stmt->execute($row_data[0]);
	
	if( ! $res)
	{
		$error = true;
	}
	
}

unlink($target_file);


if($error)
{
	
	header('Location:import.php?code=150');
	exit($res);
}


header('Location:import.php?code=100');
exit();


?>

فایل واسط نمایش اطلاعات درون دیتابیس 

 

یک فایل با نام export.php ایجاد کرده و کدهای زیر را درون آن کپی میکنیم

 

این فایل اطلاعات درون جدول tbl_test که ایجاد کردیم را نمایش ودر صورت نیاز از آن خروجی اکسل میگیریم 

<?php require_once('cnn.php'); ?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="Description" content="export to excel">
<meta name="Keywords" content="export, xlsx, excel">
<meta name="author" content="a.azadi">


<title>Untitled Document</title>


<style>
	
	*{margin: 0;padding: 0;}
	
	html,body
	{
	   margin:0;
	   padding:0;
	   height:100%;
	}
	
	.header{width: 100%;background-color: #B7C4ED;height: 50px;}
	
	
	.container{ margin: auto;position: absolute;top: 0;bottom: 0;left: 0;right: 0;width: 80%;height: 90%;}
	
	
	.footer{width: 100%;background-color: #B7C4ED;height: 50px;}
	
	.tbl{table-layout: fixed;border-collapse: collapse;}
	.tbl td, .tbl th {border: 1px solid #333;height: 25px;line-height: 25px; text-align: center;padding: 0 5px;white-space:  nowrap;}
	.tbl thead tr:nth-child(1){background-color: #CFBCFF;}
	.tbl tbody tr:nth-child(even){background-color: #f4feff;}
	.tbl tbody tr:nth-child(odd){background-color: #fffded;}
	
	.tbl th {color:#1D4B7B;text-transform: capitalize;}
	
	
	a{text-decoration: none;text-transform:capitalize; }
	
</style>

</head>

<body>

<div class="container">
	
	
	<div style="padding: 40px;">
		
		<table class="tbl">
			
			<?php 

				$stmt = $pdo->prepare('select * from tbl_test');

				$stmt->execute();

				$res = $stmt->fetchAll(PDO::FETCH_OBJ);
			?>
			
			<?php if($res){ ?>
			
				<thead>
					<tr>
						<th style="width: 3%;">row</th>
						<th style="width: 12%;">first name</th>
						<th style="width: 12%;">last name</th>
						<th style="width: 17%;">email</th>
						<th style="width: 12%;">birthday</th>
						<th style="width: 12%;">city</th>
						<th style="width: 10%;">country</th>
						<th style="width: 22%;">address</th>												
					</tr>
				</thead>
					
				<tbody>		
			
				<?php foreach($res as $key => $val){ ?>

					<tr>
						<td><?php echo ++$key; ?></td>
						<td><?php echo $val->first_name; ?></td>
						<td><?php echo $val->last_name; ?></td>
						<td><?php echo $val->email; ?></td>
						<td><?php echo $val->birthday; ?></td>
						<td><?php echo $val->city; ?></td>
						<td><?php echo $val->country; ?></td>
						<td><?php echo $val->address; ?></td>					
					</tr>
			
				<?php } ?>
				
				</tbody>
			
			<?php } ?>
			
		</table>
			
		<div>				
			<div style="float: left;padding:5px;"><a href="run_export.php">export excel</a></div>
			<div style="float: right;padding:5px;"><a href="import.php">goto import from file</a></div>
		</div>
	
	</div>
	
	
</div>


</body>

<script>
	
</script>

</html>

فایل خواندن اطلاعات از دیتابیس و ذخیره در فایل اکسل و دانلود توسط مرورگر

 

یک فایل با نام run_export.php ایجاد کرده و کدهای زیر را درون آن کپی میکنیم

<?php

require_once('cnn.php');
require_once('PHPExcel/Classes/PHPExcel.php');
require_once('PHPExcel/Classes/PHPExcel/IOFactory.php');



$obj_excel = new PHPExcel();

$obj_excel->getProperties()->setCreator("a.azadi")
							 ->setLastModifiedBy("a.azadi")
							 ->setTitle("this a test")
							 ->setSubject("create excel")
							 ->setDescription("description of file.")
							 ->setKeywords("xlsx - xls");




$active_sheet = $obj_excel->setActiveSheetIndex(0);


$stmt = $pdo->prepare('select * from tbl_test');
$stmt->execute();
$data = $stmt->fetchAll(PDO::FETCH_OBJ);



$active_sheet->setCellValue('A1', 'Row');
$active_sheet->setCellValue('B1', 'first_name');	
$active_sheet->setCellValue('C1', 'last_name');	
$active_sheet->setCellValue('D1', 'email');	
$active_sheet->setCellValue('E1', 'birthday');	
$active_sheet->setCellValue('F1', 'city');	
$active_sheet->setCellValue('G1', 'country');	
$active_sheet->setCellValue('H1', 'address');


$i = 1;
foreach($data as $val)
{
	$i++;
	
	$active_sheet->setCellValue('A'.$i, $val->id);
	$active_sheet->setCellValue('B'.$i, $val->first_name);
	$active_sheet->setCellValue('C'.$i, $val->last_name);
	$active_sheet->setCellValue('D'.$i, $val->email);
	$active_sheet->setCellValue('E'.$i, $val->birthday);
	$active_sheet->setCellValue('F'.$i, $val->city);
	$active_sheet->setCellValue('G'.$i, $val->country);
	$active_sheet->setCellValue('H'.$i, $val->address);
	
}


$file = 'excel'.date("Y_m_d__H_i_s").'.xlsx';

$objWriter = PHPExcel_IOFactory::createWriter($obj_excel, 'Excel2007');
$objWriter->save($file);




header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=". basename($file));
header("Content-Length: " . filesize($file));
header("Pragma: no-cache");
header("Expires: 0");


readfile( $file );

unlink($file);

?>

لازم به ذکر است که در کنار فایل های بالا می بایستی فولدر phpExcel که حاوی کلاسهای مرتبط برای خواندن و نوشتن فایلهای اکسل میباشند را در کنار فایل های گذاشت تا کدها به درستی اجرا شوند 

 

نکته : فایل های فولدر phpExcel (کلاس ها) توسط برنامه نویسان حرفه ای نوشته شده اند 

 

اینجانب فقط فایل های قسمت بالا را کدنویسی کردم 

 

در پایان ، کدهای کامل پروژه رو واستون آپلود کردم ، امیدوارم توانسته باشم خدمتی در زمینه پیشرفت برنامه نویسی تحت وب برای شما عزیزان ارائه داده باشم.

فایل های پیوستی

  • فایل پیوستی  project.zip   922K   12 تعداد دریافت ها

  • ابوالفضل عربی و ali1362 این پست را پسندیده است


#115 قطعه کد مربوط به مرتب سازی در اسمبلی

ارسال شده توسط ابوالفضل عربی در 23 December 2017 - 06:58 PM

زبان سی پلاس پلاس :

#include<iostream>
using namespace std;
#include<conio.h>

int main(){
	int temp = 0;
	int a[7]={10,1,5,3,2,7,8};

	for(int i=0;i<7;i++)
	{
		for(int j=i+1;j<7;j++)
	{
		if(a[i]>a[j])
		{
		 temp = a[i];
		 a[i] = a[j];
		 a[j] = temp;
		}
	}
	}


	for(int i=0;i<7;i++)
	{
	 cout<<a[i]<<endl;
	
	}

	_getch();
	return 0;
}

زبان اسمبلی :

.386
.MODEL FLAT

ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD

INCLUDE io.h            ; header file for input/output

cr      EQU     0dh     ; carriage return character
Lf      EQU     0ah     ; line feed

.STACK  4096            ; reserve 4096-byte stack

.DATA                   ; reserve storage for data
i dword ?
j dword ?
temp dword ?
a  dword 10,1,5,1,2,7,8,?
prm byte  11 dup(?)
endL   byte  cr,Lf,0
.CODE                           ; start of main program code
_start:
        mov  edx , offset a
		mov  i,edx
	f:
		mov  edx,i
		mov  eax,[edx]
		cmp  eax,0
		je   endF
		
		mov  edx,i
		add edx,4
		mov  j,edx
	f1:
		mov  edx,j
		mov  eax,[edx]
		cmp  eax,0
		je   endF1
		
		mov  edx,i
		mov  ebx,[edx]
		
		cmp ebx,eax
		jg   xch
	endCmp:
		mov  edx,j
		add edx,4
		mov  j,edx
		jmp f1
		endF1:
		
		mov  edx,i
		add edx,4
		mov  i,edx
		jmp f
		endF:
		jmp endFunc
	xch:
      	mov  edx,i
		mov  ebx,[edx]
		
		mov  edx,j
		mov  eax,[edx]
		
		mov  [edx],ebx
		
	    mov  edx,i
		mov  ebx,[edx]
		mov  [edx],eax
		jmp endCmp 
	endFunc:
	 mov  edx , offset a
      f2:
		mov  eax,[edx]
		cmp  eax,0
		je   endF2
		dtoa  prm,eax
		output prm
		output endL
		add edx,4
		jmp   f2
	  endF2:	
        INVOKE  ExitProcess, 0  ; exit with return code 0

PUBLIC _start                   ; make entry point public

END                             ; end of source code


موفق و موید باشید


  • mohsen_safari و MeYsam_96 این پست را پسندیده است


صفحه ی اینستاگرام  دانشگاه آزاد اسلامی واحد بندرعباس