Escribir preguntas de prueba de función
búfer? base de datos? -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6, 7, 0 valor de x
BUFFER_Y; ? base de datos? ($-búfer)? duplicar(0)? ;Calcular el valor del depósito y
Buffer_length? dw? equivalente? $-?BUFFER_Y? ;Longitud de los datos
¿Datos? ¿Código final
? Párrafo
¿Hipótesis? cs: código, ds: datos
Inicio:
mov? hacha, datos
mov? ds, hacha?
mov? si, compensado? ¿buffer? ;¿Señalar x? ¿Para obtener valor?
mov? di, compensado? ¿BUFFER_Y? ;¿Señala y? ¿Para guardar resultados?
mov? cx, longitud_búfer
s:?
mov? al,[si];Obtener un valor de x
¿Prueba? Aluminio, el bit más alto en la prueba de 80h es 0 o 1, es decir positivo o negativo.
¿jz? s0; si es igual a cero: representa un número positivo y cero.
mov? ¿byte? ptr[di],-1; negativo Y=-1? , hexadecimal representa HH.
jmp? ¿Próximo?
s0:
cmp? al, 0; ¿Los datos de comparación son iguales a 0
jz? T1
movimiento? ¿byte? ptr[di], 1; si x es un número positivo, y=1.
jmp? Entonces
s1:
mov? ¿byte? ptr[di],0? ;Si x=0, y=0.
Siguiente:
¿inc? si; apunta a la dirección de la siguiente x.
¿inc.? di; apunta a la dirección del siguiente y.
¿Bucle? s; iterar a través de cada valor de x?
mov? Ah, 4ch
int? 21h
¿Código? Fin
¿Fin? Al principio sólo puedo darte una solución entera. El ensamblaje de números de punto flotante parece un poco problemático y no es necesario estudiarlo, así que no lo consideraré y veré si otros internautas pueden darle la solución a los números de punto flotante. .............