# data[].attributes.body
; Factorial 5
JMP main

number1: DB 5
main:
MOV A,[number1]

factorial:
MOV B, 1
.loop:
MUL B
INC B
CMP B, [number1]
JB .loop
RET

# data[].attributes.body
; Factorial de 5 en A
JMP start ; Salta a etiqueta start

nume: DB 1 ; Variable número
fact: DB 5 ; Variable potencia

start:
MOV A, [nume] ; Copia contenido de nume a registro A
MOV C, [nume]
CALL factorial ; Llama a función con etiqueta potencia
HLT ; Detiene la ejecución del programa

factorial:
MOV B, 1 ; Inicializa registro B en valor 1 para contar
.loop:
INC C;
MOV [nume], C
MUL [nume] ; Multiplica contenido de nume por registro A
INC B ; Aumenta en 1 el contador
CMP B, [fact] ; Compara registro B con potencia si son =
JB .loop ; If B pote salta a .loop

RET ; Sale de función

# data[].attributes.body
; Factorial de 5 en registro A
JMP start ; Salta a etiqueta start

nume: DB 5 ; Variable número

start:
MOV A, [nume] ; Copia contenido de nume a registro A
CALL factorial ; Llama a función con etiqueta potencia
MOV B, 0
MOV C, 0
HLT ; Detiene la ejecución del programa

factorial:
MOV B, 1;
.loop:

MOV C, [nume]
SUB C, 1
MOV [nume], C
MUL [nume]
INC B
CMP B, 4
JB .loop
RET

# data[].attributes.body
; Calcular el factorial de 5

JMP start

nume: DB 5
resultado:

start:
MOV A, 1
CALL factorial
MOV [resultado], A
MOV C, [resultado]
HLT

factorial:
MOV B, 1
.loop:
INC B
MUL B
CMP B, [nume]
JB .loop

RET

# data[].attributes.body
; Compara dos números a y b, si son iguales muestra su multiplicación y sin son diferentes muestra su resta a - b en registro A

JMP start ; Salta a etiqueta start

nume1: DB 7 ; Variable número 1
nume2: DB 8 ; Variable número 2

start:
MOV B, [nume1];
CMP B, [nume2];
JNE noIGUAL ; Llama a función con etiqueta noIgual
MUL [nume2];
HLT ; Detiene la ejecución del programa

noIGUAL:
MOV A, [nume1] ; Copia contenido de nume1 a registro A
SUB A, [nume2] ; Resta contenido de nume2 a registro A
RET ; Sale de función

# data[].attributes.body
; compara dos numeros

JMP start:

numea: DB 5
numeb: DB 3

start:
MOV A, [numea]
CMP A, [numeb]
JBE iguales
CALL diferentes

diferentes:
SUB A,[numeb]
HLT
iguales:
MUL [numeb]
HLT

# data[].attributes.body
; Calcular suma de numeros impares

JMP start

nume: DB 4
contador: DB 1

start:
MOV A, 1
MOV C, [contador]
CALL suma_impar
HLT

suma_impar:
MOV B, 1
.loop:
INC B
INC B
INC C
ADD A, B
CMP C, [nume]
JB .loop

RET

# data[].attributes.body
; Compara dos numeros A y B, si son iguales muestra mult, si son diferentes muestra resta en registro A

JMP start

num1: DB 5
num2: DB 5

start:
MOV A, [num1]
CMP A, [num2]
JE .igual
JNE .diferente
JMP end

.igual:
MUL [num2]
JMP end
.diferente:
SUB A, [num2]
JMP end

end:
HLT

# data[].attributes.body
; Calcular el factorial de 5

JMP start

nume1: DB 5
res:

start:
MOV A, 1
CALL factorial
MOV [res], A
MOV C, [res]
HLT

factorial:
MOV B,1

.loop:
INC B
MUL B
CMP B, [nume1]
JB .loop

# data[].attributes.body
; Compara dos números a y b
JMP start ; Saltar a etiqueta start

num1: DB 9 ; Variable 1
num2: DB 4 ; Variable 2

start:
MOV A, [num1] ; copia el contenido de num1 al registro A
CMP A, [num2] ; compara si num1 y num2 son iguales
JE multi ; si son iguales
JNE resta ; si no son iguales
JMP end ;

resta:
SUB A, [num2] ; adiciona el contenido de num2 al registro A
JMP end ;
multi:
MUL [num1] ; multiplica
JMP end ;
end:
HLT ;

# data[].attributes.body
; Calcula potencia de 2 elevado a la 7 = 128 en registro A
JMP start ; Salta a etiqueta start

nume: DB 3 ; Variable número
num: DB 3 ; Variable potencia (limite)

start:
MOV A, [nume] ; Copia contenido de nume a registro A
CMP A, [num]    ;
JE  .Igual      ;
CMP A, [num]    ;
JB  .Menor      ;

.Igual:
MUL [num] ;
JMP end   ;

.Menor:
SUB A, [num];
JMP end;

end:
HLT;

# data[].attributes.body
;       calcular factorial de 5

JMP start ; Salta a etiqueta start

start:
nume: DB 5;
MOV A, [nume] ; copia nume en registro A
HLT ; Detiene la ejecución del programa

factorial:

MOV B,1
.loop:
MUL B; Multiplica dos números
INC B; Incrementa en 1
CMP B, [nume]; Compara si son iguales
JB .loop

RET

# data[].attributes.body
; Factorial de 5 en registro A
JMP start ; Salta a etiqueta start

nume: DB 1 ; Variable numero
fact: DB 5 ; Variable potencia

start:
MOV A, [nume] ; Copia contenido de nume a registro A
MOV C, [nume] ; Copia contenido de nume a registro C
CALL factorial ; LLama a función con etiqueta potencia
HLT ; Detiene la ejecución del programa

factorial:
MOV B, 1 ; Inicializa registro B en valor 1 para contar

.loop:
INC C ; Aumenta en 1 el contador
MOV [nume], C
MUL [nume] ; Multiplica contenido de nume por registro A
INC B ; Aumenta en 1 el contador
CMP B, [fact] ; Compara registro B con potencia si son =
JB .loop ; If B pote salta a .loop

RET ; Sale funcion