Reputation: 1
This code is to get the IMC give the height and the weight of a person, however the output is 1002 every time, i think is not reading the values property once entered
ORG 100 / Inicio del programa en la dirección 100
/ Pedir peso y estatura al usuario
Input / Pedir al usuario el peso
Store Peso / Guardar el peso en la variable Peso
Input / Pedir al usuario la estatura (en decimales, multiplicada por 100 para mayor precisión)
Store Altura / Guardar la estatura en la variable Altura
/ Calcular la altura al cuadrado (Altura * Altura)
Load Altura / Cargar la estatura en el acumulador
Store TempBase / Guardar la estatura en TempBase para el bucle
Load Zero / Inicializar TempResult en 0
Store TempResult / Guardar en TempResult (resultado de la multiplicación)
InnerLoop, Load TempResult / Cargar el valor actual de TempResult
Add Altura / Sumar la estatura (base) a TempResult
Store TempResult / Guardar el nuevo valor en TempResult
Load TempBase / Cargar TempBase
Subt One / Restar 1 a TempBase
Store TempBase / Guardar el nuevo valor en TempBase
Skipcond 400 / Si TempBase es 0, salir del bucle
Jump InnerLoop / Si no, continuar el bucle
Load TempResult / Cargar el resultado (altura^2)
Store Denominador / Guardar el resultado de altura^2 como el denominador
/ Verificar que el denominador no sea cero
Load Denominador
Skipcond 000
Jump ErrorDivision / Jump to error if Denominador is 0
/ División para calcular el IMC (Peso / Altura^2)
Load Peso / Cargar el valor del peso en el acumulador
Store Numerador / Guardar el valor del peso en Numerador
Load Zero / Cargar 0 en el acumulador
Store Cociente / Inicializar el cociente en 0
DivLoop, Load Numerador / Cargar el valor del numerador
Subt Denominador / Restar el denominador (altura^2)
Skipcond 800 / Si el resultado es negativo, ir a Display
Jump AddCociente / Si no, continuar sumando al cociente
Jump Display / Saltar al final si se completó la división
AddCociente, Store Numerador / Actualizar el numerador
Load Cociente / Cargar el cociente
Add One / Sumar 1 al cociente
Store Cociente / Guardar el nuevo cociente
Jump DivLoop / Repetir el bucle de división
Display, Load Cociente / Cargar el cociente (resultado del IMC)
Output / Mostrar el IMC en la salida
Halt / Finalizar el programa
ErrorDivision, Load ErrorMsgDivision / Cargar el mensaje de error
Output / Mostrar el mensaje de error
Halt / Finalizar el programa
/ Variables
Peso, DEC 0 / Almacena el peso ingresado por el usuario
Altura, DEC 0 / Almacena la estatura ingresada por el usuario
Numerador, DEC 0 / Almacena el peso (numerador de la división)
Denominador, DEC 0 / Almacena altura^2 (denominador de la división)
Cociente, DEC 0 / Resultado de la división (IMC)
TempResult, DEC 0 / Resultado temporal para el cálculo de altura^2
TempBase, DEC 0 / Base temporal para el cálculo de altura^2
One, DEC 1 / Constante 1
Zero, DEC 0 / Constante 0
ErrorMsgDivision, DEC 1002 / Código de error para división por cero
Upvotes: 0
Views: 36