Ayuda en ensamblador

Hola
Estoy buscado como hacer un ensamblador pero a partir de cero
Quisiera si me ayudan o me den una guía donde puedea basarme ya que tengo que empezar desde la deficicion de la maquina virtual que tiene que ver con el ensamblador has como hacer el programa para el ensamblador
Espero su ayuda

1 respuesta

Respuesta
1
Hace muchos años hice un ensablador en Pascal para un microprocesador de motorola MC6800, y lo primero que debes conocer a perfección es el microprocesador,,, todo su funcionamiento interno y el conjunto de todas sus instrucciones y registros, pues es básicos al momento de hacer el ensamblador, no se que procesador vas autolizar o sobre cual,, pues varían,,, cada uno tiene, diferencias, por ahí podrías empezar.
Pues no sabría decirte sobre el microprocesador ya que son del compuro de la escuela y creo que intel pentium 4 y nos pidieron defimir nuestra maquina virtual con espacio de memoria de 24 bits y que definiéramos nuestros proios nemonicos (código, nemonico, tamaño y valor ha exadecimal) y después el lenguaje ensamblador.
Espero que me ayudes a comprender mejor
Lo que te están pidiendo e que tu hagas y simules un procesador,,, por ejemplo una calculadora básica,,, que nesesitarias para que funcione:
capturar digitos 0-9,,,donde los guardo ,en memoria ,,necesito localidades de memoria, que funciones va hacer +, - * y / ,= ...si quieres agrewgarle algo mas raiz cuadrada ,etc..
¿Lo básico para hacer una operación que necesito?
Un espacio para un dato(1-9) luego un espacio para colocar un operador (+,-,*,/) y otro espacio para colocar el otro numero (1-9) y por ultimo el = para el resultado
resimiendo,, para hacer una simple suma,, use 4 elementos dos son similares y dos diferentes, los elementos iguales son los números, pero en diferente ubicación,,, un elemto que seleccione la operación y un ultimoelemneto que de el resultado
para un proceso digita l,, se necesitan espacios,,, bye, todos son digitaels,,, lo que cambia es el orden y la interpretación que les des
para la calculadora el primer byte es un dígitos,, el segundo es un operador,,(+,-,*,/)el tercero un dígito y el cuarto el igual
ahora al operador le puedes asgnar las letras ADD que seria el nemonico y le puedes asignar el código 01, para la resta RES y seria el 02,, etc..
Ahora, tu maquina virtual,, como tu la diseñas,, podemos decir que la instrucción ADD va a tener la sintaxis ADD [x, y] y su código sera 01 xx, yy donde xx, yy son dígitos
así, con las operaciones que requiras para tu maquina virtual
obviamente el ensamblador, repetara los códigos delas asignadas
espero esto te de una idea para iniciar tu proyecto
saludos
Respecto con la anterior ya he definido mis nemonicos que voy a usar con su código son los basicoa los de operaciones (+,-,*,/) y los lógicos(and, or, comp).
Pero me confundí con esto de que si la maquina virtual va a ser de 24 bits o la memoria de la MV va a ser de 24 bits los cuales forman una linea de operación
y me están pidiendo que use los registros básicos para la MV, pero aun no me queda claro que es la mquina virtual y que fencion tiene para el ensamblador.
edpero que me ayudes ha entender
La MV es circuito electrónico que hace cálculos básicos +,-,*,/ como una calculadora de funciones básicas, sin embargo estas tiene instrucciones de uso similar a excel,, donde hacen referencias a ubicaiones donde hay datos en memoria, ahora los 24 bits son de datos o son de direcciones, de datos no creo,,,, pues como esta empezando, seria muy complicado,,,, para que me entiendas actualmente las PC con windows trabajan a 32 bits de datos yhay de 64,, pero en direccionamiento de memoria están diseñadas para leer las de 32, hasta 4 GB y las de 64 hast 8 * 16 Gb dependiendo .
Muchas gracias por la aclaración claro que me ha servido y me he estado basando en el computadoe hipotético de la maquina del SIC.
Mis nmeonicos son los comunes pero solo que son en español para mejor enteimiento y es forsosamnte pasarlos a headecimal checalas a ver si si van bien:
Codigo          Accion             Tamaño    Nemonico    ConvercionHex
10000000     suma               3 bytes          SUM              80                                          10000001     resta               3 bytes          RES               81                                      10000010    multiplica          3bytes           MUL              82                                                10000011     divide              3 bytes          DIV               83                                            10000100     saltaMay         3 bytes          stmy             84                                                  10000101     saltaMer          3 bytes         stmn             85                                         10000110     sataIg             3 bytes         atig               86         
 ahora ya e definido mis nemonicos  pero tengo duda con las intruciones y las seudoistrucciones. Por intrcciones tengo las siguentes que son:
START, END, BYTE, WORD, RESB Y RESW. ahora todas son intrucciones  o cuales son seudoistrcciones y se me faltan mas aparte de estas.
Como es libre la maquina virtual es a tu gusto,, la puedes hacer tan simple como una calculadora normal o tan compleja como una programable,, en eso radica la cantidad de instrucciones que podrás procesar, normalmente una maquina virtual al menos puede hacer comparaciones lógicas,, pues debes poder hacer toma de decisiones ademas de manejar ciclos iterativos, con eso seria más que suficiente y tu asignación es correcta, solo debes definirá la cantidad de registro y el tipo que tine la maquina virtual para realizar esas operaciones.
Gracias por la aclaración ahora ya definí mis nemonicos.
Ya estoy armando mi ensamblador y lo estoy achiendo en java y no sabe si hay uncodigo de un ensamblador ya sea en cualquier lenguaje para poder basarme en el.
Mientras tratare de terminarlo y funcione
gracias y saludos
Yo hice un ensamblador hace muchos años,, y lo estructure de esta mnanera,
en una base de datos metí todas las instrucciones junto con sus respectivos códigos hexadecimales,, y después leía un archivo texto, donde esta escrito el código,,, estee es leído por linea, todos los códigos deben estar en tu base de datos para ue puedas interpretarlos y en caso de que no este, mandar un aviso de error,,
haces rutinas, donde agrupas instrucciones de uso similar, lees el nemonico y buscas en tu tabla si esta tu sabes que hace esta instrucción y la canalizas a la rutina correspondiente
como tu estas haciendo la maquina virtual tu sabes cuantos datos y la manera en que se reciben en la instrucción, y en la ogica de tu programa debes hacer que hag lo que la instrucción debe hacer,, espero me esplique
ejemplo : en BAsic GO brinca, la instrucción GO es para trasladar el procesador a donde la etiqueta brinca este,, entonces,, dentro del código debes buscar la etiqueta brinca la cual debe estar ubicada más abajo en tu código,, continuando en ese punto con la codificación de las instrucciones
espero no enredarte
saludos
Aja apenas me bino otra cuestión
Si mi MV es de 28 bits, 8 de código de operación 1 de modo direccionamiento y 15 de dirección, supongamos con este ejemplo de mis nemonicos
etqueta nemonico(código de operación) operando
                             INICIO 1000 inicia el localidad 1000
a RESB 2 reserva 2 bytes
                              FIN 1000
En los 8 bits ban los nemonicos en 1 bit suepuestamente va 0 ya que el direcionamiento es directopero no estoy seguro y el los 15 bits el operando, y la etiqueta dode va y el fin por que ponen la dirección del inicio
gracias por estar contestando y si mejor nos repondemos por messenger para más rapido bueno si es que esta de acuerdo, mi dirección se muestra ya que usted contesto amis preguntas(tank`s)
Ni veo tu correo el mio es luisolvera@hotmail
Finaliza y califica la pregunta para queno quede abierta y anexame a tu msn, estoy conectado

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas