API چیست؟

براي نوشتن برنامه های کاربردی لازمه که با توابع API آشنا باشیم.

 

اما API چیست؟

 

ویندوز برای کنترل خود توابع و روال هایی را در اختیار برنامه نویسان می گذارد که در Dll های خاصی قرار داشته و به نام توابع API ( Application programming Interface )

معروفند. این توابع دارای قدرت و توانایی بالایی می باشند و قابل استفاده توسط برنامه نویسان Delphi, C++, Visual c, Visual Basic و غیره می باشند.

 

* کاربرانی که برنامه های خود را در حالت Win32 Console Application اجرا می کنند لازمست که هدر فایل windows.h را در برنامه های خود قرار دهند.

 

#include <windows.h>

 

یکی از مهم ترین توابعی که در اکثر برنامه ها مورد استفاده قرار می گیرد  تابع

 

 ExitWindowsEx ( UINT uFlags,  DWORD dwReason );

 

از این تابع برای Restart ، Logoff و یا Shutdown کردن کامپیوتر استفاده می شود. همانطور که در prototype این تابع نوشته شده دو متغیر را به عنوان ورودی می گیرد. متغیر اول  می تواند مقادیر

EWX_LOGOFF

EWX_POWEROFF

EWX_REBOOT

EWX_SHUTDOWN

 

و یا مقدار صحیح متناظر با هر متغیر را بپذیرد. پارامتر دوم علت فراخوانی این تابع می باشد که مقدار آن را صفر قرار دهید. پس برای Logoff کردن کاربر کد زیر را داریم :

 

ExitWindowsEx ( EWX_LOGOFF, 0 ); // ExitWindowsEx( 0, 0 )

 

کد لازم برای ReStart کردن کامپیوتر

 

ExitWindowsEx ( EWX_REBOOT, 0 ); // ExitWindowsEx( 2, 0 )

 

کد لازم برای ShutDown کردن کامپیوتر

 

ExitWindowsEx ( EWX_SHUTDOWN, 0 ); // ExitWindowsEx( 3, 0 )

برنامه اي براي مردم آزاري !!!

سلام

 

براي آزار و اذيت آماده ايد ؟!!!

 مي خواهيم با استفاده از VB برنامه اي بنويسيم كه فرد با اجرا كردنش ، تمام آيكون هاي دسكتاپ رو ناپديد ميكنه و شايد كمي بترسه و .... پس هدف ما اين هست : پنهان كردن Icon هاي desktop در Visual Basic . اگر با VB كار نكرديد و آشنايي نداريد اصلا مهم نيست. مراحل زير رو طي كنيد و قطعا موفق ميشيد.

در اين برنامه اگرCtrl + alt + delete  بزنه برنامه رو مي تونه remove كنه ولي اثرش از بين نمي ره و بايد show desktop رو بزنه ( اما باز هم خلاص نميشه و بايد حتما log off  كنه يا reset كنه )

حتي مي تونيم برنامه رو طوري تنظيم كنيم كه در task manager هم نشان داده نشه ( كه باشه براي بعد )

خب .......

VB رو اجرا كنيد.

مسير زير رو طي كنيد :

File>New>Standard EXE

سمت راست VB ( قسمتي كه title اون Project-project1 هست ) بر روي صفحه كليك راست كنيد و Add>module رو انتخاب كنيد و سپس open.

در پنجره اي كه باز ميشه اين كدها رو قرار بديد.

 

Option Explicit

 

Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

 

Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

 

Public Const SWP_HIDEWINDOW = &H80

 

Public Const SWP_SHOWWINDOW = &H40

 

Declare Function ShowCursor& Lib "user32" (ByVal bShow As Long)

 

سپس form1 رو كليك كنيد ،‌ بر روي صفحه form ، دوبار كليك كنيد تا محيط كد باز بشه و كدهاي زير رو وارد كنيد

 

Option Explicit

 

Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

 

Private Declare Function ShowWindow Lib "user32" (ByVal hWnd As Long, ByVal nCmdShow As Long) As Long

 

Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, lpvParam As Any, ByVal fuWinIni As Long) As Long

 

Private Const SPI_SCREENSAVERRUNNING = 97

 

Private Sub Form_Load()

    Dim hWnd As Long

 

    hWnd = FindWindowEx(0&, 0&, "Progman", vbNullString)

 

    ShowWindow hWnd, 0

End Sub

 

چون مي خوايم پنجره اين برنامه قابل رويت نباشه در قسمت Properties-form1 در منوي Alphabetic گزينه visible رو پيدا كنيد و مقدار اون رو از true به false تغيير بديد.

F5 رو بزنيد تا برنامه اجرا بشه !

كليه برنامه ها رو Minimize كنيد و دسكتاپ خالي رو ببينيد و لذت ببريد !!!

عجله نكنيد ! برنامه رو با هر اسمي كه دوست داريد save كنيد و بعد به فكر چاره باشيد.

اگر هم بخواهيد مي تونيد فايل exe برنامه رو جدا save كنيد. File>make project1.exe ، برنامه رو با هرنامي كه مي خواهيد ذخيره كنيد !

نكته : در قسمت properties-form1 ، Icon رو پيدا كنيد و Icon مناسب ( آيكوني كه حس كنجكاوي طرف مقابل رو براي اجراي اين برنامه برمي انگيزه ) انتخاب كنيد.

اين آيكوني هست كه برنامه با اون نشون داده ميشه ،‌بهتر هست فايل exe رو روي desktop ، ذخيره كنيد تا هر كس كه اومد سراغ سيستم شما و اين برنامه رو ديد و اجرا كرد اذيت بشه !!!!!
حتي مي تونيد اين برنامه رو به طرق مختلف براي دوستانتون ارسال كنيد و .... بقيه اش با خودتون !

 

تا آزار و اذيت بعدي فعلا

 

موفق باشيد

محاسبه پيچيدگي زماني بخشي از برنامه

difftime

Finds the difference between two times.

double difftime( time_t timer1, time_t timer0 );

Routine

Required Header

Compatibility

difftime

<time.h>

ANSI, Win 95, Win NT

 

For additional compatibility information, see Compatibility in the Introduction.

Libraries

LIBC.LIB

Single thread static library, retail version

LIBCMT.LIB

Multithread static library, retail version

MSVCRT.LIB

Import library for MSVCRT.DLL, retail version

 

Return Value

difftime returns the elapsed time in seconds, from timer0 to timer1. The value returned is a double-precision floating-point number.

Parameters

timer1

Ending time

timer0

Beginning time

Remarks

The difftime function computes the difference between the two supplied time values timer0 and timer1.

Example

/* DIFFTIME.C: This program calculates the amount of time

 * needed to do a floating-point multiply 10 million times.

 */

 

#include

#include

#include

 

void main( void )

{

   time_t   start, finish;

   long loop;

   double   result, elapsed_time;

 

   printf( "Multiplying 2 floating point numbers 10 million times...\n" );

  

   time( &start );

   for( loop = 0; loop < 10000000; loop++ )

      result = 3.63 * 5.27;

   time( &finish );

 

   elapsed_time = difftime( finish, start );

   printf( "\nProgram takes %6.0f seconds.\n", elapsed_time );

}

 

Output

Multiplying 2 floats 10 million times...

 

Program takes      2 seconds.

 

مرجع : MSDN Library

 

 

پروژه پایان ترم مهر 84 ( اسمبلی )

1 – چاپ پرچم جمهوری اسلامی ایران و حرکت کلمه مبارک الله در بالا و پایین پرچم.

 

paint macro nrow,frow,fcol,erow,ecol,attribute
mov ah,6h
mov al,nrow
mov ch,frow
mov cl,fcol
mov dh,erow
mov dl,ecol
mov bh,attribute
int 10h
endm
;-------------------------------------------------
xy macro row,col
mov ah,2h
mov dh,row
mov dl,col
mov bh,0
int 10h
endm
;-------------------------------------------------
print macro msg
mov ah,9
lea dx,msg
int 21h
endm
;-------------------------------------------------
finish macro
mov ax,4c00h
int 21h
endm
;-------------------------------------------------
.model small
.data
;-------------------------------------------------
msg db 'A',70h,'l',70h,'l',70h,'a',70h,'h',70h,' ',70h
last db ?
;-------------------------------------------------
msg1 db ' w $'
msg2 db '((|))$'
msg3 db ' ^ $'
;-------------------------------------------------
.code
main proc
mov ax,@data
mov ds,ax

;*******clear
paint 25,0,0,24,79,00h

;*******green
paint 5,5,20,5,58,20h

;*******White
paint 5,10,20,10,58,70h

;*******red
paint 5,15,20,15,58,40h

xy 11,37
print msg1
xy 12,37
print msg2
xy 13,37
print msg3

mov ax,0b800h
mov es,ax
mov cx,2000

lea si,msg
mov di,1640
up: mov ax,[si]
mov [es:di],ax
mov [es:di+640],ax

mov ah,1
int 16h
jnz fin

add si,2
add di,2
cmp si,offset last
jne down1
mov si,offset msg
down1: cmp di,1718
jb up
mov di,1640
jmp up

fin: xy 25,0
paint 25,0,0,24,79,00h
finish

main endp
end main

 

2 – جمع , ضرب و تفریق 2 عدد ماکزیمم 40 رقمی.

 

clear macro
mov ah,6h
mov al,25
mov ch,0
mov cl,0
mov dh,24
mov dl,79
mov bh,80h
int 10h
endm
;--------------------------------------------------------------------
xy macro x, y
mov dh, x
mov dl, y
mov bh, 0
mov ah, 2h
int 10h
endm
;--------------------------------------------------------------------
print macro str
lea dx,str
mov ah,9h
int 21h
endm
;--------------------------------------------------------------------
gets macro str
mov ah,0ah
lea dx,str
int 21h
endm
;--------------------------------------------------------------------
Change macro int1,int2,int1t,int2t
local up_1,up_2,up_3,up_4

clc
mov di,0
mov si,79
mov cl,len1
sub cl,1
mov ch,0
up_1: inc di
loop up_1
mov cl,len1
mov ch,0
up_2: mov al,int1[di]
mov int1t[si],al
dec si
dec di
loop up_2 ;print newl ;print int1t
clc
mov di,0
mov si,79
mov cl,len2
sub cl,1
mov ch,0
up_3: inc di
loop up_3
mov cl,len2
mov ch,0
up_4: mov al,int2[di]
mov int2t[si],al
dec si
dec di
loop up_4 ;print newl ;print int2t
endm
;--------------------------------------------------------------------
sumn macro int1t,int2t
local up_1,up_2,up_3,up_4,up_5,up_6,up_7

comp int1t,s
cmp flag,0
jz up_4
jnz up_5

up_5: comp int2t,s
cmp flag,0
jz up_4
jnz up_6

up_6: mov flagm,1
jmp up_7

up_4: mov flagm,0
mov cl,79
mov x,cl
mov max1t,79
mov max2t,79
mov max3,79
mov dl,0
mov dh,0
push dx

up_1: mov bh,0
mov bl,max1t
mov ah,0
mov al,int1t[bx]
push ax
dec max1t
mov bh,0
mov bl,max2t
mov bh,0
mov bl,int2t[bx]
push bx
dec max2t
pop bx
pop ax
sub al,30h
sub bl,30h
add ax,bx
pop dx
add ax,dx
mov cl,10
div cl
mov dh,0
mov dl,al
push dx
or ax,3030h
mov bl,max3
mov bh,0
mov int1t[bx],ah
dec max3
dec x
jnz up_2
jz up_3
up_2: jmp up_1
up_3: pop dx
or dx,3030h
mov bl,max3
mov bh,0
mov int1t[bx],dl
up_7: endm
;--------------------------------------------------------------------
fix macro int1t
local up_4,up_5,up_6,up_7

mov y,0
push si
mov si,0
push ax
up_6: mov ah,0
mov al,int1t[si]
cmp ax,'0'
jz up_4
jnz up_5
up_4: mov int1t[si],0
inc y
inc si
jmp up_6
pop ax
pop si

up_5: mov ah,0
mov al,79
sub al,y
mov si,79
sub si,ax
mov di,0

up_7: mov ah,0
mov al,int1t[si]
mov int1t[di],al
mov int1t[si],0
inc si
inc di
cmp si,80
jnz up_7
endm
;--------------------------------------------------------------------
complat macro int_1t
local up_1

clc
mov si,79
mov al,0
inc al
up_1: mov ah,0
add al,int3[si]
sub al,int_1t[si]
add al,30h
mov subn[si],al
dec si
mov al,0
cmp si,0
jnz up_1
endm
;--------------------------------------------------------------------
subn1 macro int_1t,int_2t
local up_1,up_2,up_3,up_4,up_5,up_6

comp int_1t,s
cmp flag,0
jz up_3
jnz up_4

up_4: comp int_2t,s
cmp flag,0
jz up_3
jnz up_5

up_5: mov flagm,1
jmp up_2

up_3: comp int_1t,int_2t
cmp flag,0
jz up_6
jnz up_5

up_6: mov flagm,0
complat int_2t
sumn subn,int_1t
cmp subn[0],'0'
je up_1
jmp up_2
up_1: complat subn
up_2: endm
;--------------------------------------------------------------------
sign macro
local up_1,up_2,up_3,up_4
cmp subn[0],'0'
je up_1
jmp up_2
up_1: print signn
jmp up_4
up_2: print signp
jmp up_3
up_3: mov subn[0],'0'
up_4: fix subn
endm
;--------------------------------------------------------------------
multip macro int_1t,int_2t
local up_1,up_2,up_3,up_4,up_5,up_6

comp int_1t,s
cmp flag,0
jz up_4
jnz up_6

up_4: comp int_2t,s
cmp flag,0
jz up_5
jnz up_6

up_6: mov flagm,1
jmp up_2

up_5: mov mulm_t[79],'1'
up_3: sumn count,mulm_t
sumn mulm,int_1t
comp count,int_2t
cmp flag,0
jz up_1
jnz up_2
up_1: jmp up_3

up_2: endm
;--------------------------------------------------------------------
comp macro count,int_2t
local up_1,up_2,up_3,up_4

mov si,79
up_2: mov ah,0
mov al,count[si]
cmp al,int_2t[si]
jz up_1
jnz up_3
up_1: dec si
jnz up_2

mov flag,1
jmp up_4

up_3: mov flag,0

up_4: endm
;--------------------------------------------------------------------
.model small
.data
max1 db 40
len1 db ?
int1 db 40 dup('0'),'$'
;--------------------------------------------------------------------
max1t db 80
len1t db ?
int1t db 80 dup('0'),'$'
;--------------------------------------------------------------------
max2 db 40
len2 db ?
int2 db 40 dup('0'),'$'
;--------------------------------------------------------------------
max2t db 80
len2t db ?
int2t db 80 dup('0'),'$'
;--------------------------------------------------------------------
int_1t db 80 dup('0'),'$'
int_2t db 80 dup('0'),'$'
;--------------------------------------------------------------------
max3 db 80
len3 db ?
int3 db 80 dup('9'),'$'
;--------------------------------------------------------------------
maxn db 80
lenn db ?
subn db 80 dup('0'),'$'
;--------------------------------------------------------------------
maxm db 80
lenm db ?
mulm db 80 dup('0'),'$'
;--------------------------------------------------------------------
mulm_t db 80 dup('0'),'$'
count db 80 dup('0'),'$'
;--------------------------------------------------------------------
maxs db 80
lens db ?
s db 80 dup('0'),'$'
;--------------------------------------------------------------------
msg1 db 'Enter the first number: $'
msg2 db 'Enter the second number: $'
;--------------------------------------------------------------------
zero db '0$'
msg3 db 'X + Y = $'
msg4 db 'X - Y = $'
msg5 db 'X * Y = $'
newl db 10,13,'$'
x db ?
y db ?
z db ?
signp db '+','$'
signn db '-','$'
flag db ?
flagm db ?
;--------------------------------------------------------------------
.code
main proc
mov ax, @data
mov ds, ax

clear
xy 2,4
print msg1
gets max1
xy 4,4
print msg2
gets max2

change int1,int2,int1t,int2t
sumn int_1t,int1t
sumn int_2t,int2t

xy 7,4
print msg3
sumn int1t,int2t
cmp flagm,1
jz up_3
jnz up_4
up_3: print zero
jmp su
up_4: fix int1t
print int1t
jmp su

su: xy 10,4
print msg4
subn1 int_1t,int_2t
cmp flagm,1
jz up_5
jnz up_6
up_5: print zero
jmp mu
up_6: sign
print subn
jmp mu

mu: xy 13,4
print msg5
multip int_1t,int_2t
cmp flagm,1
jz up_1
jnz up_2
up_1: print zero
jmp en
up_2: fix mulm
print mulm
jmp en

en: mov ax,4c00h
int 21h
;--------------------------------------------------------------------
main endp
end main

 

 

3 – دریافت نام و نمره 12 دانشجو و مرتب سازی اسامی بر حسب نمره و نمایش نمره و اسامی مرتب شده در آخر.

 

;********************** Clear Function *************************
clear macro
mov ah,6h
mov al,50
mov ch,0
mov cl,0
mov dh,24
mov dl,79
mov bh,80h
int 10h
endm
;********************** Xy Function ****************************
xy macro row,col
mov ah,2h
mov dh,row
mov dl,col
mov bh, 0
int 10h
endm
;****************** Print string Function **********************
print macro buff
lea dx,buff
mov ah,9h
int 21h
endm
;**************** Print List of Students Struct ****************
printls macro sta
print sta.nam
print space
print sta.num
print newline
endm
;*********************** Read Function *************************
read macro max
mov ah,10
lea dx,max
int 21h
endm
;************************* Read Struct *************************
reads macro maxn,maxm
read maxn
print newline
read maxm
print newline
print msg1
endm
;******************* Read Struct And Replace *******************
readsr macro maxn,maxm,lenn,lenm,numm,name,stu
local up_1,up_2

reads maxn,maxm
mov bl,0
up_1: mov bh,0
mov dh,0
mov dl,name[bx]
mov stu.nam[bx],dl
inc bl
cmp bl,lenn
jb up_1
mov bl,0
up_2: mov bh,0
mov ch,0
mov cl,numm[bx]
mov stu.num[bx],cl
inc bl
cmp bl,lenm
jb up_2
endm
;************************* Compare st1,st2 *********************
compare macro st1,st2
local up_1,up_2,up_3,up_4,up_5,up_6,up_7

mov counts1,0
mov counts2,0

mov bl,0
up_4: mov bh,0
cmp st1.num[bx],0
je up_6
inc counts1
up_6: inc bl
cmp bl,4
jne up_4

mov bl,0
up_5: mov bh,0
cmp st2.num[bx],0
je up_7
inc counts2
up_7: inc bl
cmp bl,4
jne up_5

mov flag,0
comp st1.num,st2.num,counts1,counts2
add flag,30h
cmp flag,'1'
je up_2
jne up_1
up_1: jmp up_3
up_2: change st1,st2
up_3: endm
;************************* Comp Function ************************
Comp macro num1,num2,len1,len2
local up_1,up_2,up_3

mov bl,len1
mov bh,0
mov cl,len2
mov ch,0
cmp bl,cl
ja up_2
jb up_3
mov bl,0
up_1: mov bh,0
mov dl,num1[bx]
sub dl,30h
mov dh,num2[bx]
sub dh,30h
cmp dl,dh
ja up_2
jb up_3
inc bl
cmp bl,len1
jb up_1
up_2: mov flag,1
up_3: endm
;*********************** Sum marks Function *********************
summs macro stun
local up_1,up_2,up_3,up_4,up_5,up_6,up_7,up_8

mov cdigit,0

mov bl,0
up_5: mov bh,0
cmp stun.num[bx],0
je up_4
inc cdigit
up_4: inc bl
cmp bl,4
jne up_5

mov maxa,3
up_6: mov bl,maxa
mov bh,0
push bx
mov bx,cdigit
mov ah,0
mov al,stun.num[bx-1]
pop bx
mov strnum[bx],al
dec maxa
dec cdigit
cmp cdigit,0
ja up_6

mov cx,0
mov dl,maxa
mov dh,0
mov cx,cdigit

sub dx,cx
mov bx,0
up_7: mov strnum[bx],'0'
inc bx
cmp bx,dx
jbe up_7

mov lenn,4
mov maxa,3
mov maxb,3
mov maxc,3

mov dx,0
push dx

up_1: mov bh,0
mov bl,maxb
mov ah,0
mov al,summ[bx]
push ax
dec maxb
mov bh,0
mov bl,maxa
mov bh,0
mov bl,strnum[bx]
push bx
dec maxa

pop bx
pop ax
sub al,30h
sub bl,30h
add ax,bx
pop dx
add ax,dx
mov cl,10
div cl
mov dh,0
mov dl,al
push dx
or ax,3030h
mov bl,maxc
mov bh,0
mov summ[bx],ah
dec maxc
dec lenn
cmp lenn,1
jne up_2
je up_3
up_2: jmp up_1
up_3: pop dx
or dx,3030h
mov bl,maxc
mov bh,0
cmp dx,0
jbe up_8
mov summ[bx],dl
up_8: endm
;************************* Change struct ************************
change macro sta,stb
local up_1,up_2

mov bl,4
up_1: mov bh,0
mov ch,sta.num[bx]
mov cl,stb.num[bx]
mov sta.num[bx],cl
mov cl,ch
mov ch,0
mov stb.num[bx],cl
dec bl
cmp bl,0
jge up_1

mov bl,20
up_2: mov bh,0
mov ch,sta.nam[bx]
mov cl,stb.nam[bx]
mov sta.nam[bx],cl
mov cl,ch
mov ch,0
mov stb.nam[bx],cl
dec bl
cmp bl,0
jge up_2
endm
;************************* Avrage Function **********************
avragem macro summ
local up_1,up_2,up_3

mov ax,0
lea bx,summ
mov cx,4
mov si,10
up_1: mul si
mov dl,[bx]
and dl,15
xor dh,dh
add ax,dx
inc bx
loop up_1

mov bh,0
mov bl,12
div bl

mov si,2
up_2: mov bl,10
mov ah,0
div bl
add ah,30h
mov avrage[si],ah
dec si
cmp al,0
jne up_2
je up_3
up_3: endm
;****************************************************************
.model small

stu struc
nam db 20 dup(?),'$'
num db 4 dup(?),'$'
stu ends

.Data
msg1 db 'Please Enter your name & your mark :',10,13,"$"
msg2 db ' Total of Marks = ',"$"
msg3 db ' Avrage of Marks = ',"$"
msg4 db 'Name Mark',"$"
msg5 db '===============================',"$"
newline db 10,13,'$'
space db ' ',"$"

max1 db 20
len1 db ?
name1 db 20 dup(?)
max11 db 4
len11 db ?
num1 db 4 dup(?)

st1 stu <>
d1 db '$'
st2 stu <>
d2 db '$'
st3 stu <>
d3 db '$'
st4 stu <>
d4 db '$'
st5 stu <>
d5 db '$'
st6 stu <>
d6 db '$'
st7 stu <>
d7 db '$'
st8 stu <>
d8 db '$'
st9 stu <>
d9 db '$'
st10 stu <>
d10 db '$'
st11 stu <>
d11 db '$'
st12 stu <>
d12 db '$'

count db ?
summ db 4 dup('0'),'$'
avrage db 3 dup('0'),'$'
flag db ?,'$'
counts1 db ?
counts2 db ?
cdigit dw 0,'$'
strnum db 4 dup('0')
lenn db ?
maxa db ?
maxc db ?
maxb db ?
;*****************************************************************
.code
main proc
mov ax,@data
mov ds,ax

clear
xy 0,0
print msg1

readsr max1,max11,len1,len11,num1,name1,st1
readsr max1,max11,len1,len11,num1,name1,st2
readsr max1,max11,len1,len11,num1,name1,st3
readsr max1,max11,len1,len11,num1,name1,st4
readsr max1,max11,len1,len11,num1,name1,st5
readsr max1,max11,len1,len11,num1,name1,st6
readsr max1,max11,len1,len11,num1,name1,st7
readsr max1,max11,len1,len11,num1,name1,st8
readsr max1,max11,len1,len11,num1,name1,st9
readsr max1,max11,len1,len11,num1,name1,st10
readsr max1,max11,len1,len11,num1,name1,st11
readsr max1,max11,len1,len11,num1,name1,st12

mov count,0
up_1: compare st1,st2
compare st2,st3
compare st3,st4
compare st4,st5
compare st5,st6
compare st6,st7
compare st7,st8
compare st8,st9
compare st9,st10
compare st10,st11
compare st11,st12
inc count
cmp count,12
je up_3
jne up_2
up_2: jmp up_1

up_3: clear
xy 0,0
print msg4
print newline
print msg5
print newline
printls st12
printls st11
printls st10
printls st9
printls st8
printls st7
printls st6
printls st5
printls st4
printls st3
printls st2
printls st1

summs st1
summs st2
summs st3
summs st4
summs st5
summs st6
summs st7
summs st8
summs st9
summs st10
summs st11
summs st12
print newline
print msg2
print summ

avragem summ
print newline
print msg3
print avrage
print newline

mov ax,4c00h
int 21h

main endp
end main

 

 

4 – برنامه ای که با استفاده از چاپ پیکسل خطوط مورب را به گونه چاپ می کند که گوشه سمت چپ ( بالای مانیتور ) به سمت راست ( پایین مانیتور ) وصل می شود و این خطوط با اختلاف 3 پیکسل تا جایی ادامه دارد که آخرین خط سمت راست ( بالا ) را به سمت چپ ( پایین ) وصل می کند.

 

_dx macro x1,x2
mov ax,x1
mov cx,x2
sub cx,ax
mov dx,cx
endm
;***************************************
_dy macro y1,y2
mov ax,y1
mov cx,y2
sub cx,ax
mov di,cx
endm
;***************************************
set macro a,b,c,d
mov ax,a
mov bx,b
mov cx,c
mov si,d
endm
;***************************************
setxy macro a,b,c,d
mov x1,a
mov y1,b
mov x2,c
mov y2,d
endm
;***************************************
pixel macro x,y
mov cx,x
mov dx,y
mov al,71h
mov ah,12
int 10h
endm
;***************************************
.model small
.data
x1 dw ?
y1 dw ?
x2 dw ?
y2 dw ?

.code
start: mov ax,@data
mov ds,ax
mov ah,0
mov al,19
int 10h

setxy 0,0,319,199

first: _dx x1,x2
_dy y1,y2
set y1,0,x2,x1

up: add bx,di
cmp bx,dx
jb down
inc ax
sub bx,dx
down: push cx
push dx
push ax
pixel si,ax
pop ax
pop dx
pop cx
inc si
cmp si,cx
jne up
je ripit
ripit: add x1,3
mov y1,0
sub x2,3
mov y2,199
cmp x1,58
jl first
;***************************************
setxy 0,199,319,0

first1: _dx x1,x2
_dy y2,y1
set y1,0,x2,x1

up1: add bx,di
cmp bx,dx
jb down1
dec ax
sub bx,dx
down1: push cx
push dx
push ax
pixel si,ax
pop ax
pop dx
pop cx
inc si
cmp si,cx
jne up1
je ripit1
ripit1: add x1,3
mov y1,199
sub x2,3
mov y2,0
cmp x1,58
jl first1
;***************************************
setxy 59,0,258,200

first2: _dx x1,x2
_dy y1,y2
set x1,60,y2,y1

up2: add bx,dx
cmp bx,di
jbe down2
inc ax
sub bx,di
down2: push cx
push dx
push ax
pixel ax,si
pop ax
pop dx
pop cx
inc si
cmp si,cx
jne up2
je ripit2
ripit2: add x1,3
mov y1,0
sub x2,3
mov y2,200
cmp x1,157
jl first2
;***************************************
setxy 58,200,258,-1

first3: _dx x1,x2
_dy y2,y1
set x1,60,y2,y1

up3: add bx,dx
cmp bx,di
jb down3
inc ax
sub bx,di
down3: push cx
push dx
push ax
pixel ax,si
pop ax
pop dx
pop cx
dec si
cmp si,cx
jne up3
je ripit3
ripit3: add x1,3
mov y1,200
sub x2,3
mov y2,-1
cmp x1,157
jl first3
;***************************************
mov cx,200
mov si,0
upm: push cx
pixel 158,si
inc si
pop cx
loop upm
;***************************************
mov ax,4c00h
int 21h
end start

 

 

5 – کپی کردن محتویات یک فلاپی بر روی فلاپی دوم.

 

.MODEL SMALL

SECTORSIZE EQU 512
MAXTRACK EQU 79
NUMSIDES EQU 2
SECTOR_PER_TRACK EQU 18
.DATA
BUF DB SECTORSIZE*SECTOR_PER_TRACK DUP (0)
SIDE DB 0
TRACK DB 0
HANDLE DW 0
FILENAME DB 'C:\TEMP.DAT',00h

MSG1 DB 13,10,'Insert Your Disk InTo Drive A & Then Press A Key To Continue',13,10,'$'
MSG2 DB 13,10,'Insert A New Disk InTo Drive A & Then Press A Key To Continue',13,10,'$'

.286

.CODE

MAIN PROC

MOV AX,@DATA
MOV DS,AX

MOV AH,9
LEA DX,MSG1
INT 21H

CALL WAITT

MOV AH,3CH ;CREAT A FILE
LEA DX,FILENAME
MOV CX,0
INT 21H

MOV SIDE,0
MOV HANDLE,AX
MOV TRACK,1

CALL READTRACK
COPY:
MOV TRACK,0

COPYTRACK:

CALL READTRACK
CALL WRITEFILE
INC TRACK
CMP TRACK,80
JNZ COPYTRACK

INC SIDE
CMP SIDE,1
JZ COPY
CALL CLOSEFILE

MOV AH,09H
LEA DX,MSG2
INT 21H

CALL WAITT

MOV SIDE,0

LEA DX,FILENAME
MOV AH,3DH
MOV AL,0
INT 21H

MOV HANDLE,AX

MOV TRACK,1
MOV SIDE,0

CALL WRITETRACK
WRITE:

MOV TRACK,0

WRITE_ON_TRACK:

CALL READFILE
CALL WRITETRACK
INC TRACK
CMP TRACK,80
JNZ WRITE_ON_TRACK
INC SIDE
CMP SIDE,1
JZ WRITE
CALL CLOSEFILE

LEA DX,FILENAME ;DELETE THE TEMPORARY FILE
MOV AH,3AH
INT 21H

MOV AX,4c00h
INT 21H
MAIN ENDP
;=================================================
READTRACK PROC ;READ A TRACK
PUSH ES
MOV AX,DS
MOV ES,AX
LEA BX,BUF
MOV AH,2
MOV DL,0
MOV DH,SIDE
MOV CH,TRACK
MOV CL,1
MOV AL,SECTOR_PER_TRACK
INT 13H
POP ES
RET
READTRACK ENDP
;=================================================
WRITETRACK PROC ;WRITE A TRACK
LEA BX,BUF
PUSH ES
MOV AX,DS
MOV ES,AX
MOV AH,03
MOV AL,SECTOR_PER_TRACK
MOV CH,TRACK
MOV CL,1
MOV DH,SIDE
MOV DL,0
INT 13H
POP ES
RET
WRITETRACK ENDP
;=================================================
READFILE PROC ;READ A COMPLATE TRACK OF FILE AND PUT IT IN BUF (18*512 B)
MOV BX,HANDLE
MOV CX,SECTORSIZE*SECTOR_PER_TRACK
LEA DX,BUF
MOV AH,3FH
INT 21H
RET
READFILE ENDP
;=================================================
WRITEFILE PROC ;WRITE A COMPLATE TRACK OF BUF AND PUT IT IN DISK (18*512 B)
MOV BX,HANDLE
MOV CX,SECTORSIZE*SECTOR_PER_TRACK
LEA DX,BUF
MOV AH,40H
INT 21H
RET
WRITEFILE ENDP
;=================================================
WAITT PROC ;WAITING FOR PRESS A KEY
MOV AH,0
INT 16H
RET
WAITT ENDP
;=================================================
CLOSEFILE PROC ;CLOSE THE FILE & THE HANDLE OF IT
MOV AH,3EH
MOV BX,HANDLE
INT 21H
RET
CLOSEFILE ENDP
;=================================================
END MAIN

 

 

در صورت نیاز به برنامه خاص و یا پرسش هر سوالی می توانید با ارسال میل به آدرس Qom_Computer_Software@yahoo.com ما را مطلع گردانید تا شما را یاری رسانیم.

JavaScript

" مجموعه ای شامل کدهای جاوا اسکریپت برای علاقه مندان به طراحی وبلاگ "

 

اینجا را کلیک کنید.

الگوریتم برج هانوی

برج هانوی , معمایی است که از سه میله و N دیسک با اندازه های متفاوت . فرض شود که اگر دیسکی روی یک میله باشد , فقط دیسکی که قطر آن کوچکتر است می تواند بالای آن قرار گیرد مسئله چنین است که هر بار فقط یک دیسک انتقال یابد .

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

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

-اگر n > 1 باشد ; برای این کار n-1 دیسک بالای میله 1 را به میله 2 انتقال می دهیم . حالا دیسک پایینی میله 1 را ثابت باقی می ماند . حال دیسک باقیمانده در در میله 1 را به میله 3 منتقل میکنیم . سرانجام بار دیگر بصورت بازگشتی الگوریتم را فرا خانده تا n - 1 دیسک میله دو را به 3 منتقل کند .

اکنون موفق شدیم n دیسک را از میله 1 به 3 منقل کنیم .

این مسئله در درسهایی مانند ساختمان گسسته و ساختمان داده مورد بحث وبررسی قرار می گیرد .

 
/*
  Algorithmic solution is as follows

  1)  if TopN==1, move the single disc from A to C and stop.
  2)  Move the top n-1 discs from A to B, using C as Inter.
  3)  Move the remaining disc from A to C.
  4)  Move the n-1 discs from B to C, using A as destination(dest).
*/

 #include 
 #include 
 void tower(int,char,char,char); /*prototype*/
 int main()
   {
   int ndisk;
   clrscr();
   printf("\n Enter number of disks <<<::: ");
   scanf("%d",&ndisk);
   tower(ndisk,'A','B','C');  /*Calling Function*/
   getch();
   return 0;

   } /* End of program */

   /********************************************/

   // src = Source | aux = Auxiliry | dest = Destination
   void tower(int topN, char src,char aux,char dest)
     {
     if(topN == 1)
       {
       printf("\n Disk 1 from %c to %c ",src,dest);
       }
     else
       {
	tower(topN-1,src,dest,aux); //src to aux
	printf("\n Disk %d from %c to %c ",topN,src,dest);
	tower(topN-1,aux,src,dest); //aux to dest
	}
     }

HTML

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

همون طوری که قول داده بودم و حتی زودتر از زمانی که فکر می کردم  آموزش HTML رو طی 8 بخش آماده کردم و در وبلاگ قرار دادم. امیدوارم استفاده کنید.

( البته کلیه آموزش ها در یک فایل ورد در وبلاگ قرار داده شده )

 

HTML

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

قصد دارم مختصر و مفید و جامع آموزش کدنویسی HTML را به شما بدم.

فعلا 4 درس آماده هست و باقی مطالب را طی 1 یا 2 هفته دیگر براتون جمعبندی می کنم.

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

                                      E-mail : Dooste_gharibe_shoma@yahoo.com

 

جلسه اول

جلسه دوم

جلسه سوم

جلسه چهارم