|
Geçen sene finale çalışırken yazdığım bir kod.
1000-1008′e kadar sıralı verilerde aşağı doğru ard arda gelen 1leri sayan asm programı.
Sonucu her bit için 3000-3008 arasına koyuyor.
Uzun uzun anlatırdım ama vaktim yok , benim de sınavlar var. Birilerine lazım olur belki, kurcalar incelersiniz, soru varsa cevaplarım.
(kodlar tamamen doğrudur, emulater’da denenmiştir, çalışmaktadır.)
Veriler bunlar;
|
1001 0111
|
151
|
|
0001 0010
|
18
|
|
0100 0010
|
66
|
|
1111 1011
|
251
|
|
1001 1011
|
155
|
|
1010 1010
|
170
|
|
0101 1010
|
90
|
|
1011 1011
|
187
|
|
1100 1011
|
203
|
1 sayıları: 3-1-0-3 5-0-8-2 (sonuçta 3000-3008 ‘de bulunması gereken)
Kodlar şöyle;
#make_COM#
; COM file is loaded at CS:0100h
ORG 100h
mov [3000h],00h
mov [3001h],00h
mov [3002h],00h
mov [3003h],00h
mov [3004h],00h
mov [3005h],00h
mov [3006h],00h
mov [3007h],00h
mov [3008h],00h
mov [1000h],151
mov [1001h],18
mov [1002h],66
mov [1003h],251
mov [1004h],155
mov [1005h],170
mov [1006h],90
mov [1007h],187
mov [1008h],203
mov cx,0ah
mov dx,0008h
yenibit:
cmp dx,0008h
jz bittara
mov cx,0ah
cld
mov si,1000h
mov di,1000h
bitkaydir:
lodsb
shl al,1
stosb
loop bitkaydir
mov cx,0ah
bittara:
clc
mov di,cx
mov ah,[di+1000h]
mov bh,[di+0fffh]
and ah,128
and bh,128
add ah,bh
jnc birdegil
mov bx,dx
inc [3000h+bx]
birdegil:
loop bittara
dec dx
jnz yenibit
hlt
|