liczby pierwsze 2 problemy

0
[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?

0

[bits 16] - to jest podstawowy problem.

Widać że koleś znalazł gotowca ale mu nie działa więc liczy że ktos za niego odwali robotę.

Więc odpowiem tak: Dział PRACA.

1 użytkowników online, w tym zalogowanych: 0, gości: 1