PDA

View Full Version : نمونه برنامه



mohsen4707
پنج شنبه 01 اردیبهشت 1390, 18:58 عصر
سلام:
بنده می خواهم برنامه نویسی اسمبلی راشروع کنم می تونیدچندتا نمونه برنامه اسمبلی که حلقه وشرط داشته باسند در اختیاربنده بذارید.
باتشکر:متفکر:

tdkhakpur
جمعه 02 اردیبهشت 1390, 21:01 عصر
مثلث خیام



; NUMBER Is (WORD) .................................................. ..
; BUFFER is address of buffer
DECIMAL MACRO NUMBER, BUFFER
LOCAL E0, E1, E2, E3, EXIT_
;-------------------------------------------------------------;
MOV AX, NUMBER ;
MOV BX, 0 ;
MOV CX, 10 ;
E0: ;----------------------------------------------; ;
XOR DX, DX ; ;
DIV CX ; ;
MOV BYTE PTR BUFFER[BX], DL ; BAGIMANDEH IN DX ; ;
ADD BYTE PTR BUFFER[BX], 30H ; ;
INC BX ; ;
CMP AX, 10 ; KHAREGE GHESMAT IN AX ; ;
JNL E0 ;----------------------------------------------; ;
CMP AL, 0 ;
JE E1 ;--------------------------; ;
MOV BYTE PTR BUFFER[BX], AL ; ;
ADD BYTE PTR BUFFER[BX], 30H ; ;
JMP E2;-----------------------; ; ;
E1: ;---------------------------;---; ;
DEC BX ; ;
E2: ;---------------------------; ;
;-------------------------------------------------------------;
MOV DI, 0
MOV SI, BX
MOV CX, BX
INC CX
SHR CX, 1 ; DIVID BY 2
CMP CX, 1
JL EXIT_
E3: ;----------------------------------------------;
MOV DL, BYTE PTR BUFFER[DI] ;
MOV DH, BYTE PTR BUFFER[SI] ;
MOV BYTE PTR BUFFER[SI], DL ;
MOV BYTE PTR BUFFER[DI], DH ;
INC DI ;
DEC SI ;
LOOP E3 ;----------------------------------------------;
EXIT_:
INC BX
MOV BYTE PTR BUFFER[BX], '$' ;0
ENDM
;---------------------------------------------
PRINTSTR MACRO BUFF
MOV AH, 9
LEA DX, BUFF
INT 21h
ENDM
;---------------------------------------------
stacksg segment para stack 'stack'
stacksg ends
datasg segment para 'data'
buf db 32 dup(?)
newLine db 13, 10, " ", '$'
space db " ", '$'
Nums dw 200 dup(0)
tmp dw ?
n dw 5 ; <<<<<<change there>>>>>>>
c dw ?
i dw ?
j dw ?
datasg ends
codes segment para 'code'
main proc far
assume ss:stacksg, ds:datasg, cs:codes
mov ax, datasg
mov ds, ax
;------------ ur programm -----------------------------------------
mov dx, n
mov c, dx
sub c, 1
mov dl, 2 ;for each index in
mov ax, c ;word var must mul with 2
mul dx
mov bp, ax
mov word ptr Nums[bp], 1
mov i, 0
lp1: ;// for( int i=0; i<n; i++);---------<-----------;
;
PRINTSTR newLine ;
mov j, 0 ;
lp2: ;//for( int j=0; j<c; j++ );-------<----------; ;
PRINTSTR space ; ;
add j , 1 ; ;
mov dx, j ; ;
cmp dx, c ; ;
jle lp2 ;--------------->------------------------; ; ;
;
mov j, 0 ;
lp3: ;// for( int j=0; j<=i; j++){;-------<------; ;
; ;
mov dl, 2 ;for each index in ; ;
mov ax, c ;word var must mul with 2 ; ;
add ax, j
mul dx ; ;
mov bp, ax ; ;
; ;
mov dx, Nums[bp] ; ;
add dx, Nums[bp+2] ; ;
mov tmp, dx ; ;
mov Nums[bp], dx ; ;
DECIMAL tmp, buf ;->-------; ; ;
PRINTSTR buf ;print num; ; ;
PRINTSTR space ;-<-------; ; ;
add j, 1 ; ;
mov dx, j ; ;
cmp dx, i ; ;
jg lp4;---<------; ; ;
jmp lp3 ;---------;--------->--------------------; ; ;
lp4:;----->--------; ;
add i, 1 ;
sub c, 1 ;
mov dx, i ;
cmp dx, n ;------------------------------>------------;
je exit0
jmp lp1
exit0:
;------------ end of program -----------------------------------------
mov ax, 4c00h
int 21h
main endp
codes ends
end main