[bits 16]
[org 100h]
jmp start
%macro wyswietlText 0
mov ah, 09h
int 21h
%endmacro
%macro wyswietlZnak 0
mov ah, 02
int 21h
%endmacro
%macro wczytajZnak 0
mov ah, 08h
int 21h
%endmacro
wypiszLiczbe:
pusha
xor di,di
mov cx,10
loopx:
xor dx,dx
div cx
add dl,'0'
mov byte[buf+di],dl
inc di
test ax,ax
jnz loopx
dec di
loopx2:
mov dl,byte[buf+di]
wyswietlZnak
dec di
cmp di,-1
jne loopx2
popa
ret
buf resb 10
start:
mov dx, koniec_lini
wyswietlText
mov dx, podaj_gorna_gr
wyswietlText
next_ch:
wczytajZnak
cmp al, ' '
je end_ch
mov bx, ax
push bx
mov dl, al
wyswietlZnak
pop bx
mov ax, bx
mov al, ah
mov ah, 0
mov bx, [temp]
add bx, ax
mov [temp], bx
jmp next_ch
end_ch:
mov cx,[temp]
mov di,lp
petla:
mov byte[di],1
inc di
loop petla
mov byte[lp],0
mov byte[lp+1],0
mov di,2
petla2:
cmp byte[lp+di],0
je hop
shl di,1
lea si,[di]
shr di,1
petla3:
mov byte[lp+si],0
add si,di
cmp si,1001
jb petla3
hop:
inc di
cmp di,1001
jne petla2
mov di,2
petla4:
cmp byte[lp+di],0
je niewypisuj
mov ax,di
call wypiszLiczbe
mov dl,' '
wyswietlZnak
niewypisuj:
inc di
cmp di,1001
jne petla4
koniec:
mov ax, 4C00h
int 21h
lp resb [temp] ;error: invalid combination of opcode and operands
podaj_gorna_gr db "Podaj gorna granice: $"
koniec_lini db 10, 13, "$"
temp dw 0
Kompilator wywala error - program ma liczyć do zadanej górnej granicy, jest ktoś w stanie pomóc?