Mikroişlemciler içeriğine geri dön

2015 Final Cevap

2014-15 Final Soru 2) Bir dizinin elemanlarının sırasını ters çeviren bir program yazınız.

 

.model small

.data

  D db 1,2,3,4,5

   

  .code

  .startup

 

mov si,0 ; D dizisinin ilk elemanına ulaşmak için

mov di,4 ; D dizisinin son elemanına ulaşmak için

 

lop:

    cmp si,di

    jae ext                 ; ilk elemandan ilerlediğimiz indis son elemandan gerilediğimiz indisten küçük

    ;olduğu sürece döngü devam etmelidir

    mov al,D[si]

    mov ah,D[di]

    mov D[si],ah

    mov D[di],al

    inc si

    dec di

jmp lop

 

ext:

.exit

 

2014-15 Final Soru 3) Bir D dizisinin tamsayı değerlerini aşağıdaki tabloda verilen kıstaslara göre A ve B dizilerine yükleyen bir program yazınız.

 

Sayı aralığı

Sayının yükleneceği dizi

<1

Hiçbiri

1-20

A

21-40

B

41-60

A

61-80

B

80’den büyük

Hiçbiri

 

.model small

.data

  D db 10, -91, 111, 26, 57, 44, 35, 68, 8, 75

  A db 10 dup (?)

  B db 10 dup (?)

 

  .code

  .startup

 

mov cx,10

mov si,0

mov di,offset A

mov bx,offset B

 

lop:

    cmp D[si],1

    JL x  ; jump if less:daha dusukse dallan (git)

    cmp D[si],20

    JG b2140  ; jump if greater:daha buyukse dallan (git)

    call AyaYukle

    JMP x   ; kosulsuz olarak dallan

 

  b2140:

    cmp D[si],40

    JG a4160

    call ByeYukle

    JMP x  

 

  a4160:

    cmp D[si],60

    JG b6180

    call AyaYukle

    JMP x  

 

  b6180:

    cmp D[si],80

    JG x

    call ByeYukle

   

x:  inc si

loop lop

 

.exit

 

AyaYukle proc near

    mov al,D[si]

    mov [di],al

   

    inc di

    ret

AyaYukle endp

 

ByeYukle proc near

    mov al,D[si]

    mov [bx],al

   

    inc bx

    ret

ByeYukle endp 

 

end

 

Bu soru için daha hızlı çalışabilecek programlar yazmayı deneyebilirsiniz.