Asembler problem z kompilacja

0
.286  

.model tiny

.data  
	tekst_1 db "Wynik = ",'$'
	varA db 7  
	varB db 1  
	varC db 4  
	varD db 3  
	
	
.stack 100h  

.code  

Start:   
	mov ax,@data
	mov ds,ax 
	xor ax,ax
	
;dodanie liczb a + b:  
	mov al,varA 
	add al,varB
	
	
;odejmowanie liczb a - b:  
	mov ah,varA
	sub ah,varB	
 
;dzielenie liczb (a + b)/c:  
	mov cx,ax
	xor bx,bx
	mov bl,varC
	xor ax,ax
	mov al,cl 
	div bl
	

;dzielenie liczb (a - b)/d:
	mov dl,al
	mov bl,varD
	mov al,ch
	div bl
	
;mnozenie liczb ((a + b)/c) * ((a - b)/d):
	xor bx,bx
	mov bl,dl
	mul bl
	
;wyswietlenie wyniku (cyfry):
	mov cx,bx
	call _wyswietl

; przetwa 2 linie w konsoli
	mov dl,0Ah
	int 21h
	mov dl,0Ah
	int 21h	
	
; odczyt znaku
	mov ah,01h  
	int 21h  
	
; zatrzymanie programu 
	mov ax,4C00h  
	int 21h	
	
_wyswietl:

	mov ax,@data
	mov ds,ax 
	mov dx, offset tekst_1
	
	xor ax,ax
	mov ah,09h
	int 21h
	
	mov dx,cx
	add dl,02fh	;rzutowanie znaku na cyfre =>
				; => dodanie ilosci znaków przed '0' w kodzie ASCI
	mov ah,02h
	int 21h
	
	mov dl,0Ah
	int 21h	

ret

to moj program w asemblerze, tresc zadania:Napisać, skompilować i uruchomić program wykonujący następujące działanie:
𝑥 =
(𝑎 + 𝑏) / c ∙ (𝑎 − 𝑏) /d

na danych 8 bitowych. Dobrać tak wartości danych a, b, c i d aby wynik X był cyfrą. Wynik X należy
wyświetlić na ekranie monitora.

wyskakuje error, przy tlink.obj, nie moge znalezc gdzie lezy blad ;/

0

bump

3

probowalem dac end start zamiast ret dla proby

Ale przecież tobie potrzeba oba o_O W sensie ret potrzebujesz żeby wrócić z funkcji, a end start żeby powiedzieć gdzie jest entry point tego programu.
A jak jest crash to używa się debugera żeby stwierdzić gdzie jest problem... To 8086 więc możesz próbować odpalić w emu8086.

0

przepraszam za zamieszanie, juz zrobione

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