Documentos de Académico
Documentos de Profesional
Documentos de Cultura
ENTREGA PREVIA 1
Introducción
Para lograr que las máquinas hagan lo que queremos debemos dar las instrucciones necesarias
mediante algoritmos y lenguajes de programación tales como Java, C++, Python estos lenguajes
Objetivo General
usando un lenguaje de alto nivel Pseint que nos ayuda a diagramar el algoritmo e identificar las
primo o no.
Desarrollo
La arquitectura del conjunto de instrucciones (ISA) se emplea a veces para distinguir este
instrucciones; por ejemplo, el Intel Pentium y AMD Athlon implementan versiones casi
2020)
3
Programa PSelnt.
Algoritmo arq_computadores
leer num
x=1
contador = 0
contador = contador + 1
FinSi
x=x+1
FinMientras
si contador == 2 Entonces
SiNo
FinSi
FinProceso
4
Codigo en java
5
Los registros de memoria son una pequeña cantidad de memoria muy rápida en donde
almacena y accede a datos de mayor frecuencia lo que permite incrementar la velocidad del
moviendo datos desde la memoria principal hacia los registros, se opera sobre éstos, y el
Registro Descripción
Registro acumulador,usandolo se
produce una instrucción que ocupa un
V
byte menos que si se utilizaran otros
registros de uso general
Registro de uso general,debe utilizarse
solo como puntero de pila, la cual sirve
SP para almacenar las direcciones de
retorno de subrutinas y datos
temporarios.
Registro base de propósito similar (se
BX
usa para direccionamiento indirecto)
Registro contador, se utiliza como
CX contador en bucle, en operaciones con
cadenas
Registro de datos, se utiliza junto con
el
registro AX en multiplicaciones y
DX
divisiones en la instrucción CWD(el
registro DX indica el número de puerto
de entrada/salida)
Puntero base, generalmente se utiliza
BP para realizar direccionamiento indirecto
dentro de la pila
Puntero destino(no se puede
DI
subdividir)
Puntero índice, sirve como puntero
fuente para las operaciones con
SI
cadenas, también sirve para realizar
direccionamiento indirecto
Es el conjunto de reglas que especifican una localización (posición) del dato usado durante
debido a que usa un modo de direccionamiento el cual especifica la forma en que se interpreta
la información.
instrucción.
8
16 bits, que, sumado al contenido del registro DS, determina la dirección efectiva en la que se
Traducción del programa de alto nivel (entrega 1) al lenguaje ensamblador que han
file "primo.c"
.intel_syntax noprefix
.text
.def ___main; .scl 2; .type 32; .endef
.section .rdata,"dr"
LC0:
.ascii "\12Numero.....: \0"
LC1:
.ascii " %d\0"
LC2:
.ascii "\12El numero %d es primo\0"
9
LC3:
.ascii "\12El numero %d no es primo\0"
.text
.globl _main
.def _main; .scl 2; .type 32; .endef
_main:
LFB17:
.cfi_startproc
push ebp
.cfi_def_cfa_offset 8
.cfi_offset 5, -8
mov ebp, esp
.cfi_def_cfa_register 5
and esp, -16
sub esp, 32
call ___main
mov DWORD PTR [esp+20], 0
mov DWORD PTR [esp+28], 0
mov DWORD PTR [esp+24], 0
L8:
mov DWORD PTR [esp], OFFSET FLAT:LC0
call _printf
lea eax, [esp+20]
mov DWORD PTR [esp+4], eax
mov DWORD PTR [esp], OFFSET FLAT:LC1
call _scanf
mov eax, DWORD PTR [esp+20]
cmp eax, -1
je L2
mov eax, DWORD PTR [esp+20]
test eax, eax
jle L2
mov DWORD PTR [esp+24], 0
mov DWORD PTR [esp+28], 2
jmp L3
L6:
mov eax, DWORD PTR [esp+20]
cdq
idiv DWORD PTR [esp+28]
mov eax, edx
test eax, eax
jne L4
mov DWORD PTR [esp+24], 1
L4:
add DWORD PTR [esp+28], 1
10
L3:
mov eax, DWORD PTR [esp+20]
cmp DWORD PTR [esp+28], eax
jge L5
cmp DWORD PTR [esp+24], 1
jne L6
L5:
cmp DWORD PTR [esp+24], 0
jne L7
mov eax, DWORD PTR [esp+20]
mov DWORD PTR [esp+4], eax
mov DWORD PTR [esp], OFFSET FLAT:LC2
call _printf
jmp L2
L7:
mov eax, DWORD PTR [esp+20]
mov DWORD PTR [esp+4], eax
mov DWORD PTR [esp], OFFSET FLAT:LC3
call _printf
L2:
mov eax, DWORD PTR [esp+20]
cmp eax, -1
jne L8
mov eax, 0
leave
.cfi_restore 5
.cfi_def_cfa 4, 4
ret
.cfi_endproc
LFE17:
.ident "GCC: (MinGW.org GCC-8.2.0- 3) 8.2.0"
.def _printf; .scl 2; .type 32; .endef
.def _scanf; .scl 2; .type 32; .endef
11
Listado en HEXA del binario que representa el programa realizado en el punto 4 de esta
entrega.
BINARIO HEXADECIMAL
10110100 B4
1 1
11001101 CD
100001 21
10001010 8A
11111000 F8
11011000 D8
12
10 2
11011111 DF
1110101 75
11 3
11101001 E9
11100011 E3
0 0
10111011 BB
10111000 B8
110 6
10110111 B7
111 7
10111010 BA
10111001 B9
1001111 4F
11000 18
1010111 57
10000 10
10110110 B6
10111010 BA
101 5
11101000 E8
11111101 FD
1111100 7C
11000111 C7
11111001 F9
111001 39
1111111 7F
11000010 C2
10000000 80
11111011 FB
10011100 9C
1110100 74
1000 8
13
10011101 9D
10001000 88
101110 2E
1010101 55
1110 0E
1010110 56
110000 30
10110000 B0
1010 0A
10001001 89
10110101 B5
1110100 74
11110 1E
111011 3B
11101011 EB
11101010 EA
11110111 F7
11110011 F3
1110100 74
ALU en Logisim, que pueda ejecutar las instrucciones requeridas por el programa.
Son dos entradas de datos de 4 bits que son los números para operar, los cuales
aparecen como valor1 y valor2 y el resultado es de 5 Bits una salida de 1 bit para la
Conclusiones
Con el avance de nuestro proyecto hemos logrado especificar las sentencias necesarias en
lenguaje Java para poder determinar si un número es primo o no. También hemos identificado las
instrucciones que necesitaremos para poder implementar estas instrucciones que necesitaremos