16 Kasım 2013 Cumartesi

Assembly 80x86 dizi içindeki en büyük eleman

PAGE 60,80
TITLE ENBUYUK
STACKSG SEGMENT PARA STACK 'STACK'
    DW 32 DUP(0)
STACKSG    ENDS
DATASG SEGMENT PARA 'DATA'
    ADIZI DW 13,81,11,22          ;Dizi Elemanlari
    SZ DW 4          ;Dizinin Sizeini tutar
    ENBUYUK DW (0)     ;En buyuk sayi
DATASG    ENDS
CODESG SEGMENT PARA 'CODE'
    ASSUME CS:CODESG,DS:DATASG,SS:STACKSG
MAIN PROC FAR
    PUSH DS
    XOR AX,AX
    PUSH AX
    MOV AX,DATASG
    MOV DS,AX
    MOV AX,ENBUYUK ;AX e en buyuk sayisi atanır
    MOV CX,SZ ; CX e size atanır
    LEA SI,ADIZI; ADIZI  degiskeninin adresi SI ya atanır
L1:    
    MOV DI,[SI] ;DI ya adresteki değişken atanır ve büyük,küçük kontrol edilir.
        CMP DI,AX
        JA BUYUKMUS
        JMP EXIT
BUYUKMUS:
    MOV AX,DI;buyukse AX registerina DI daki değer atanır
    MOV ENBUYUK,AX
EXIT:   
    ADD SI,2;DW olduğundan dolayı dizi elemanlarımız 2 2 artmaktadır
    LOOP L1;CX(SZ değerinde) 0 olana kadar döner
    RETF
MAIN ENDP
CODESG ENDS
    END MAIN

Hiç yorum yok:

Yorum Gönder