Mnemónico | Instrucción | ||
---|---|---|---|
LD | Load (cargar) | 010 | Mem → Ac |
ST | Store (almacenar) | 011 | Ac → Mem |
ADD | Add (sumar) | 100 | Ac ← Ac + Mem |
SUB | Subtract (restar) | 101 | Ac ← Ac - Mem |
JMP | Jump (saltar) | 110 | PC ← PC + despl |
JZ | Jump if Zero (saltar si cero) | 111 | Ac == 0 ⇒ PC ← PC + despl |
HLT | Halt (detener) | 001 | Parada |
NOP | No Operation | 000 | No operación |
|
|
.globl _start
.text # seccion de codigo
_start:
movl $len, %edx # carga parametros longitud
movl $msg, %ecx # y direccion del mensaje
movl $1, %ebx # parametro 1: stdout
movl $4, %eax # servicio 4: write
int $0x80 # syscall
movl $0, %ebx # retorna 0
movl $1, %eax # servicio 1: retorno de llamada
int $0x80 # syscall
.data # seccion de datos
msg:
.ascii "Hola, mundo!\n"
len = . - msg # longitud del mensaje
.global main
main:
@ Guarda la direccion de retorno lr
@ mas 8 bytes para alineacion
push {ip, lr}
@ Carga la direccion de la cadena y llama syscall
ldr r0, =hola
bl printf
@ Retorna 0
mov r0, #0
@ Desapila el registro ip y guarda
@ el siguiente valor desapilado en el pc
pop {ip, pc}
hola:
.asciz "Hola, mundo!\n"
.data # seccion de variables
msg:
.string "Hola, mundo!\n"
len = . - msg # longitud de cadena
.text # seccion de codigo
.global _start
_start:
li 0,4 # syscall sys_write
li 3,1 # 1er arg: desc archivo (stdout)
# 2do arg: puntero a mensaje
lis 4,msg@ha # carga 16b mas altos de &msg
addi 4,4, msg@l # carga 16b mas bajos de &msg
li 5,len # 3er arg: longitud de mensaje
sc # llamada al kernel
#
li 0,1 # syscall sys_exit
li 3,1 # 1er arg: exit code
sc # llamada al kernel
int factorial(int n)
{
int f = 1;
while (n > 1) {
f *= n;
n--;
}
return f;
}
factorial(0,X):- X=1.
factorial(N,X):- N1=N-1, factorial(N1,X1), X=X1*N.
factorial(N):- factorial(N,X), write(X).
(defun factorial (n)
(if (= n 0)
1
(* n (factorial (- n 1))) ) )
class Combinatoria():
def factorial(self,n):
num = 1
while n > 1:
num = num * n
n = n - 1
return num
c = Combinatoria()
a = c.factorial(3)
print a