Ensamblador - ensamblador 8087

 
Vista:

ensamblador 8087

Publicado por Miguel Angel (3 intervenciones) el 18/11/2008 19:27:21
Hola a todos!!

Estoy haciendo un programa en ensamblador que sume dos números. La arquitectura es Intel 8086 y tengo que utilizar para la suma instrucciones especificas del coprocesador matemático 8087.
No sé si lo estoy haciendo correctamente porque cuando lo ejecuto no me sale correctamente el resultado, me sale un símbolo raro.

¿Podríais ayudarme un poco?

Muchas gracias por adelantado.

.MODEL small
.STACK 100h
.8087

.DATA
NumA DD 3
NumB DD 2
Resul DW ?,'$'

.CODE
Principal PROC
mov ax,@data
mov ds,ax

finit
fld NumB
fld NumA
fadd st(1), st(0)
fst Resul

mov dx, offset Resul
CALL WRITE

MOV Ax, 4C00H ; Return to MSDOS by
INT 21H ; function 4c

Principal ENDP

WRITE PROC
MOV AH,9H
INT 21H
RET
WRITE ENDP
END
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:ensamblador 8087

Publicado por MSH (120 intervenciones) el 23/11/2008 04:02:54
Creo que la rutina que esta en el procedimiento WRITE es incorrecta porque te falta convertir el número a su representación ASCII

Esto te puede ayudar...creo...

.model small

.stack 500h

.data
var1 dw 10
var2 dw 90
resultado dw 0

.code
.startup

mov ax,@data
mov ds,ax

finit ;peticion de inicio del coprocesador
fild var1
fiadd var2
fist resultado ;finaliza coprocesador

mov ax,resultado ;carga resultado en apuntador

;.......imprime valor en pantalla
call escribirnumero
.exit

escribirnumero proc near

push ax
push dx

mov bx,10
mov dl,al
cmp ax,bx
jb escribir_resto
sub dx,dx
div bx
call escribirnumero

escribir_resto:
add dl,'0'
mov ah,02h
int 21h

pop dx
pop ax
ret
escribirnumero endp
end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar