• Sábado 15 de Junio de 2024, 18:18

Autor Tema:  Ensamblador 2 pasos con python  (Leído 3106 veces)

eruelas

  • Miembro activo
  • **
  • Mensajes: 69
  • Nacionalidad: mx
    • Ver Perfil
Ensamblador 2 pasos con python
« en: Martes 17 de Febrero de 2015, 17:11 »
0
Buenos dias compañeros, quisiera saber si me pueden orientar respecto a mi codigo, lo que pasa es que este intentando verificar que un mnemonico leido desde un archivo exista en mi matriz, pero no me da, solo me lee el primero y esta correcto y los demas los da como fallos a pesar de que si estan en mi matriz, agradezco su ayuda.

El archivo que leo lo dejare adjunto.

Saludos!

Código: Text
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. import re
  5.  
  6. n=0
  7.  
  8. matriz =  [["ABA",2],
  9.                    ["ABY",2],
  10.                    ["ADCA",2],
  11.                    ["ADCC",2],
  12.                    ["ADDD",2],
  13.                    ["ANDCC",2],
  14.                    ["ASL",2],
  15.                    ["ASLB",2],
  16.                    ["ASR",2],
  17.                    ["LDAA", 2],
  18.                    ["LDAB", 2],
  19.                    ["LDD", 2],
  20.                    ["LDS", 2],
  21.                    ["LDX", 2],
  22.                    ["LDY", 2],
  23.                    ["LEAS", ],
  24.                    ["LEAX", 2],
  25.                    ["LEAY", 2],
  26.                    ["LSL", 2],
  27.                    ["LSLA", 0],
  28.                    ["LSLB", 0],
  29.                    ["LSLD", 0],
  30.                    ["LSR", 2],
  31.                    ["LSRA", 0],
  32.                    ["LSRB", 0],
  33.                    ["LSRD", 0],
  34.                    ["MAXA", 2],
  35.                    ["MAXM", 2],
  36.                    ["MEM", 0],
  37.                    ["MINA", 2],
  38.                    ["MINM", 2],
  39.                    ["MOVB", 2],
  40.                    ["MOVW", 2],
  41.                    ["MUL", 0],
  42.                    ["NEG", 2],
  43.                    ["NEGA", 0],
  44.                    ["NEGB", 0],
  45.                    ["NOP", 0],
  46.                    ["ORAA", 2],
  47.                    ["ORAB", 2],
  48.                    ["ORCC", 1],
  49.                    ["PSHA", 0],
  50.                    ["PSHB", 0],
  51.                    ["PSHC", 0],
  52.                    ["PSHD", 0],
  53.                    ["PSHX", 0],
  54.                    ["PSHY", 0],
  55.                    ["PULA", 0],
  56.                    ["PULB", 0]]
  57.  
  58. arc = open("salida.lst", "w")
  59.  
  60. #Leer el archivo
  61.  
  62. with  open("P1.ASM","r") as p1:
  63.  
  64.         arc.write( "{0}\t{1:10}\t{2}\t{3}\t{4}\t{5}".format("Linea","Etiqueta","Mnemonico","Operador1","Operador2","Comentario\n") )    
  65.  
  66.        
  67.         #Ciclo que recorre las lineas existentes en p1
  68.  
  69.         for line in p1:
  70.                 n = n+1
  71.                 i=0
  72.                
  73.                 #Separar donde se encuentre espacio o coma
  74.  
  75.                 pal=re.split('\s|,',line)
  76.  
  77.                 #Identifica componentes de la linea
  78.  
  79.                 etiq=nem=op1=op2=com=''
  80.                 etiq=pal[0]
  81.  
  82.  
  83.  
  84.                 if len(pal)>1 :
  85.                         nem=pal[1]
  86.                
  87.                 if len(pal)>2 :
  88.                         op1=pal[2]
  89.                 if len(pal)>3 :
  90.                         op2=pal[3]
  91.                 if len(pal)>4 :
  92.                         com=pal[4]
  93.  
  94.                 #Imprime linea con formato separando etiqueta si es muy larga
  95.                 for i in range(45):    
  96.                         if pal[1] ==matriz[i][0]:
  97.                                 print nem
  98.                                 break
  99.                         else:
  100.                                 print nem
  101.                                 print "\033[5;47;31merror en la linea ", n, " mnemonico invalido\033[0m" #Codigo ANSI para colorear el texto
  102.                                 break
  103.                 if len(etiq)<10:
  104.                         arc.write("{0:5}\t{1:10}\t{2:10}\t\t{3:5}\t\t{4:5}\t\t{5}\n".format(n,etiq,nem,op1,op2,com) )
  105.                 else:
  106.                         arc.write("{0}\t{1}\n\t\t\t{2}\t\t{3}\t\t{4}\t\t{5}\n".format(n,etiq,nem,op1,op2,com) )
  107. arc.close()
  108.  
  109.  
  110.  
  111.  
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
« última modificación: Martes 17 de Febrero de 2015, 21:15 por eruelas »

eruelas

  • Miembro activo
  • **
  • Mensajes: 69
  • Nacionalidad: mx
    • Ver Perfil
Re:Ensamblador 2 pasos con python
« Respuesta #1 en: Jueves 19 de Febrero de 2015, 18:22 »
0
Problema resuelto