compilador 68hc11 de motorola

29
Pérez González Josué Abraham Programación y estructura de computadoras Compilador 68HC11 de Motorola Integrantes: Josue Abraham Perez González Lenguaje utilizado: PHP Se propone un compilador práctico para que al usuario no se le dificulte introducir la ruta de su archivo a compilar. Este compilador fue desarrollado en el lenguaje PHP que permite un buen manejo de stings, está estructurado a partir de 15 funciones principales, básicamente el compilador se conforma de tres archivos principales con extensión PHP: Index.php El archivo index es la imagen del compilador; en este archivo está el código que permite subir archivos “.asc” asi como la visualización previa de los archivos. Carga.php El archivo carga se encarga de subir y obtener el nombre del archivo a compilar, aquí se encuentra el código necesario para restringir los archivos para aceptar solo la extensión “.asc”. Compila.php El archivo compila contiene el código de las funciones y código central que llama a las funciones esenciales que hacen funcionar el compilador, este archivo es el último en ser ejecutado al requerir el nombre del archivo y la ruta que se obtienen a partir del archivo carga .php. lempty($linea)-Verifica si la línea está vacía. linend($linea)-Verifica si en la línea hay un “END”. verifica_nem($linea,$seting)-Verifica si en la línea hay un nemónico. arr_linea($lineas)-Convierte una línea en un arreglo .

Upload: josue-abraham-perez-gonzalez

Post on 24-Nov-2015

102 views

Category:

Documents


3 download

TRANSCRIPT

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    Compilador 68HC11 de Motorola

    Integrantes: Josue Abraham Perez Gonzlez

    Lenguaje utilizado: PHP

    Se propone un compilador prctico para que al usuario no se le dificulte introducir la ruta de su archivo a

    compilar.

    Este compilador fue desarrollado en el lenguaje PHP que permite un buen manejo de stings, est estructurado a

    partir de 15 funciones principales, bsicamente el compilador se conforma de tres archivos principales con

    extensin PHP:

    Index.php El archivo index es la imagen del compilador; en este archivo est el cdigo que permite subir

    archivos .asc asi como la visualizacin previa de los archivos.

    Carga.php El archivo carga se encarga de subir y obtener el nombre del archivo a compilar, aqu se encuentra el

    cdigo necesario para restringir los archivos para aceptar solo la extensin .asc.

    Compila.php El archivo compila contiene el cdigo de las funciones y cdigo central que llama a las funciones

    esenciales que hacen funcionar el compilador, este archivo es el ltimo en ser ejecutado al requerir el nombre

    del archivo y la ruta que se obtienen a partir del archivo carga .php.

    lempty($linea)-Verifica si la lnea est vaca.

    linend($linea)-Verifica si en la lnea hay un END.

    verifica_nem($linea,$seting)-Verifica si en la lnea hay un nemnico.

    arr_linea($lineas)-Convierte una lnea en un arreglo .

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    prm_char($cdn,$crc)-Verifica si un carcter est en la primera posicin de un string.

    decimal($num)-Verifica si el string es decimal .

    R_tv($psc,$posac)-Verifica que no se rebase el lmite de bifurcacin (128 y -127).

    exad($num)-Verifica si es hexadecimal.

    buscaeti($arreti,$siz,$val)-Verifica si existe una etiqueta en la lnea.

    B_eti($arr,$val)-Verifica si existe una etiqueta en la lnea.

    buscavar($arrvar,$tam,$val)-Verifica si hay una variable en la linea.

    modo_dir($linea,$siz,$variarr,$etiarr,$tam,$numne)-Verifica que modo de direccionamiento

    corresponde al string en lectura.

    Aster_fir($lineas)-Verifica si hay un * en la primer posicin del string.

    dir_memo($mdir,$dir,$variabl,$tama)-Devuelve el cdigo correspondiente al modo de

    direccionamiento.

    Etiquetas($archivo,$set)-Busca etiquetas y su direccin, devuelve un arreglo de etiquetas con direccin.

    Las funciones ya mencionadas son esenciales para la ejecucin del compilador estas devuelven todos los

    elementos que ocupara el cdigo central una vez que el archivo se suba con xito, la instruccin

    if((isset($_POST["enviado"]))&&($_POST["enviado"]=="form1")) permita ejecutar el cdigo central que abre el

    archivo lo lee e imprime los resultados en un nuevo archivo con extensin .lst.

    Aunque se ocuparon diversos recursos tales como HTML, JavaScript y Css5 el cdigo representativo del

    compilador descansa en un solo en el archivo compila.php cuyo lenguaje puramente es PHP.

    El cdigo es el siguiente se lee en dos columnas:

    if((isset($_POST["enviado"]))&&($_POST["enviado"]=="form1")){ $incetiqueta=0; $incvariable=0; $etiqueta[][]=' '; $variable[][]=' '; $localidad=0x0000; $a=0; $varnem=" "; $fileS="68hc11compila.lst"; $filname=$_POST["nom"]; $as=explode(" ",$filname); $fp=fopen($as[0],"rb"); $fp1=fopen($fileS,"a"); $etiqueta=Etiquetas($as[0],$set); while(!feof($fp)){ $a++;

    $linea = fgets($fp); $comen=strpos($linea,'*'); $coment=Aster_fir($linea); $tab=strpos($linea,"\t"); $space=strpos($linea,' '); $linarr=arr_linea($linea) ; if($coment===true){ fprintf($fp1,"%d A\t%s",$a,$linea); }elseif($comen!==false){ $linex=explode("*",$linea); $arrx=arr_linea($linex[0]);

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    //**************************************OPCION DE LINEA COMPLETA $Nmonic=" "; $Modir=" "; $i=0; $z=0; $w=0; $error1=0; $r=0; while(!empty($arrx[$i])){ $Nemo=verifica_nem($arrx[$i],$set); if($Nemo>127 && $Nemo

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    $Modir=modo_dir($arrx[1],$incvariable,$variable,$etiqueta,$incetiqueta,$Nmon); if($buscon!==false){ $miu=R_tv($etiqueta[$buscon][1],$localidad); if($miu!==false){ if(strlen($miu)

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    fprintf($fp1,"%d A %s\t%s\t\t%X\t%s\t*%s\r\n",$a,$arrx[0],$arrx[1],$localidad,$Unix,$linex[1]); $localidad=$localidad+(strlen($Unix))/2; }elseif($arrx[0]=="FCB"){ $Inst=dir_memo(8,$arrx[1],$variable,$incvariable); $Unix=$Inst; $localidad=$localidad + 0x0000; fprintf($fp1,"%d A %s\t%s\t\t%X\t%s\t*%s\r\n",$a,$arrx[0],$arrx[1],$localidad,$Unix,$linex[1]); $localidad=$localidad+(strlen($Unix))/2; }elseif($arrx[0]=="ORG"){$localidad=dir_memo($Modir,$arrx[1],$variable,$incvariable); $localidad=dechex($localidad); fprintf($fp1,"%d A %s\t%s\t\t%X\t*%s\r\n",$a,$arrx[0],$arrx[1],$localidad,$linex[1]); $localidad=$localidad + 0x0000; }elseif($Nmonic!==false){ if($set[$Nmonic][$Modir]!="0"){/////////////////////EXEPCION CHANGE $Inst=dir_memo($Modir,$arrx[1],$variable,$incvariable); $Unix=$set[$Nmonic][$Modir].$Inst; $localidad=$localidad + 0x0000;

    fprintf($fp1,"%d A %s\t%s\t\t%X\t%s\t*%s\r\n",$a,$arrx[0],$arrx[1],$localidad,$Unix,$linex[1]); $localidad=$localidad+(strlen($Unix))/2; }elseif($set[$Nmonic][$Modir]=="0"){ fprintf($fp1,"%d A %s\t\t\t%s\t%X\tERROR INCONSISTENCIA DE DIRECCIONAMIENTO\r\n",$a,$arrx[0],$arrx[1],$localidad); }elseif($Modir===false){ fprintf($fp1,"%d A %s\t\t\t%s\t%X\tERROR INCONSISTENCIA DE DIRECCIONAMIENTO\r\n",$a,$arrx[0],$arrx[1],$localidad); }else{ fprintf($fp1,"%d A %s\t\t\t%s\t%X\tERROR INCONSISTENCIA DE DIRECCIONAMIENTO\r\n",$a,$arry[0],$arry[1],$localidad); } }else{ $AROR=explode("\r\n",$linea); fprintf($fp1,"%d A %s\t\t\t%X\t\tERROR\r\n",$a,$AROR[0],$localidad); } } }elseif($w==1 && $Nmonic!==false && $z==0){//*****************END******NEMONICOS******INHERENTE if($Nmonic!==false && $set[$Nmonic][6]!="0"){ $Unix=$set[$Nmonic][6]; $localidad=$localidad + 0x0000;

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    fprintf($fp1,"%d A %s\t\t\t%X\t%s\t*%s\r\n",$a,$arrx[0],$localidad,$Unix,$linex[1]); $localidad=$localidad+(strlen($Unix))/2; } }elseif($z==1 && verifica_nem($arrx[0],$set)===false){/////////////////////*****ETIQUTASSSS****CHANGE $rw=explode(" ",$linea); $zx=explode("\t",$linea); if(!empty($zx[0]) && !empty($rw[0])){ fprintf($fp1,"%d A %s\t\t%X\t\t*%s\r\n",$a,$arrx[0],$localidad,$linex[1]); }elseif(linend($linea)===true){ fprintf($fp1,"%d A \t\t\tEND\t%X\r\n",$a,$localidad); }elseif(lempty($linea)!==false){ fprintf($fp1,"%d A %X\t\t\r\n",$a,$localidad); }else{ $AROR=explode("\r\n",$linea); fprintf($fp1,"%d A %s\t\t%X\t\tERROR\r\n",$a,$AROR[0],$localidad);} }else{ if(lempty($linea)!==false){ fprintf($fp1,"%d A %X\t\t\r\n",$a,$localidad);

    }elseif(linend($linea)===true){ fprintf($fp1,"%d A\t\t\tEND\t%X\r\n",$a,$localidad); } }//**************************************IF COMENTARIOS //*****************************************SIN COMENTARIOS************************************************* }elseif($comen===false){/////IF SIN COMENTA $arry=arr_linea($linea); //**************************************OPCION DE LINEA COMPLETA $Nmonic=" "; $Modir=" "; $i=0; $z=0; $w=0; $error1=0; $r=0; while(!empty($arry[$i])){ $Nemo=verifica_nem($arry[$i],$set); if($Nemo>127 && $Nemo

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    $Nmonic=verifica_nem($arry[$i],$set); $w++; }elseif(modo_dir($arry[$i],$incvariable,$variable,$etiqueta,$incetiqueta,$Nemo)!==false){ $Modir=modo_dir($arry[$i],$incvariable,$variable,$etiqueta,$incetiqueta,$Nemo); $w++; $z++; }elseif($Nemo===false){//SI NO HAY NEMONICO? $z++; }else{ $error1++;} $i++; }//TERMINA WHILE ARRX if(!empty($arry[1])&&!empty($arry[0])){$error1=1;} if(lempty($linea)!==false){ fprintf($fp1,"%d A \t\t\t\t%X\r\n",$a,$localidad); }elseif($error1==1 && $r!=1 && modo_dir($arry[1],$incvariable,$variable,$etiqueta,$incetiqueta,$Nemo)===false && verifica_nem($arry[0],$set)!==false ){ fprintf($fp1,"%d A %s\t%s\t\t%X\t\tERROR DE SINTAXIS\r\n",$a,$arry[0],$arry[1],$localidad);

    }elseif($r==1 && !empty($arry[1])){ $buscon=buscaeti($etiqueta,$incetiqueta,$arry[1]); if(!empty($arry[1])&&!empty($arry[0])){ $Nmon=verifica_nem($arry[0],$set); $Modir=modo_dir($arry[1],$incvariable,$variable,$etiqueta,$incetiqueta,$Nmon); if($arry[0]=="END"){ ///CAMBIAR $ends=explode("\r\n",$linea); fprintf($fp1,"%d A %s\t\t\t%X\t\r\n",$a,$ends[0],$localidad); }elseif($buscon!==false){ $miu=R_tv($etiqueta[$buscon][1],$localidad); if($miu!==false){

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    if(strlen($miu)

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    }elseif($arry[0]=="FCB"){ $Inst=dir_memo(8,$arry[1],$variable,$incvariable); $Unix=$Inst; $localidad=$localidad + 0x0000; fprintf($fp1,"%d A %s\t%s\t\t%X\t%s\t\r\n",$a,$arry[0],$arry[1],$localidad,$Unix); $localidad=$localidad+(strlen($Unix))/2; }elseif($arry[0]=="ORG"){$localidad=dir_memo($Modir,$arry[1],$variable,$incvariable); $localidad=hexdec($localidad); $localidad=$localidad + 0x0000; fprintf($fp1,"%d A %s\t%s\t\t%X\r\n",$a,$arry[0],$arry[1],$localidad); }elseif($Nmonic!==false && $Modir!==false && !empty($set[$Nmonic][$Modir])){ if($set[$Nmonic][$Modir]!="0"){ $Inst=dir_memo($Modir,$arry[1],$variable,$incvariable); $Unix=$set[$Nmonic][$Modir].$Inst; $localidad=$localidad + 0x0000; fprintf($fp1,"%d A %s\t%s\t\t%X\t%s\r\n",$a,$arry[0],$arry[1],$localidad,$Unix); $localidad=$localidad+(strlen($Unix))/2; }elseif($set[$Nmonic][$Modir]=="0"){

    fprintf($fp1,"%d A %s\t%s\t\t%X\tERROR INCONSISTENCIA DE DIRECCIONAMIENTO\r\n",$a,$arry[0],$arry[1],$localidad); }elseif($Modir===false){ fprintf($fp1,"%d A %s\t%s\t\t%X\tERROR INCONSISTENCIA DE DIRECCIONAMIENTO\r\n",$a,$arry[0],$arry[1],$localidad); } }else{ fprintf($fp1,"%d A %s\t%s\t\t%X\tERROR INCONSISTENCIA DE DIRECCIONAMIENTO\r\n",$a,$arry[0],$arry[1],$localidad); } }else{ $AROR=explode("\r\n",$linea); fprintf($fp1,"%d A %s\t%X\tERROR\r\n",$a,$AROR[0],$localidad); } }elseif($w==1 && $Nmonic!==false && $z==0){//*****************END******NEMONICOS******INHERENTE if($Nmonic!==false && $set[$Nmonic][6]!="0" ){/////////////CAMBIAR A LOS DEMAS $Unix=$set[$Nmonic][6]; $localidad=$localidad + 0x0000; fprintf($fp1,"%d A %s\t\t\t%X\t%s\r\n",$a,$arry[0],$localidad,$Unix); $localidad=$localidad+(strlen($Unix))/2; }

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    }elseif($z==1 && verifica_nem($arry[0],$set)===false){/////////////////////*****ETIQUTASSSS $rw=explode(" ",$linea); $zx=explode("\t",$linea); if(!empty($zx[0]) && !empty($rw[0])){ fprintf($fp1,"%d A %s\t\t%X\t\t\r\n",$a,$arry[0],$localidad); }elseif(linend($linea)===true){ fprintf($fp1,"%d A END\t\t\t%X\r\n",$a,$localidad); }elseif(lempty($linea)!==false){ fprintf($fp1,"%d A \t\t\t\t%X\r\n",$a,$localidad); }else{ $AROR=explode("\r\n",$linea);/////////////CAMBIAR LAS DEMAS fprintf($fp1,"%d A %s\t%X\tERROR\r\n",$a,$AROR[0],$localidad); } }else{ if(lempty($linea)!==false){ fprintf($fp1,"%d A \t\t\t\t%X\r\n",$a,$localidad); }elseif(linend($linea)===true){

    fprintf($fp1,"%d A END\t\t\t%X\r\n",$a,$localidad); }} }//FIN SIN COMENTARIOS COMENTA }//FIN WHILE READ fclose($fp); fclose($fp1); }//FIN ISSET

    Las funciones: $set = array( array("FCB","0","0","0","0","0","0","0"), array("ORG","","","","","","",""), array("ADCA","89","99","A9","18B9","B9","0","0"), array("ADCB","C9","D9","E9","18E9","F9","0","0"), array("ADDA","8B","9B","AB","18AB","BB","0","0"), array("ADDB","CB","DB","EB","18EB","FB","0","0"), array("ADDD","C3","D3","E3","18E3","F3","0","0"), array("ANDA","84","94","B4","18A4","B4","0","0"), array("ANDB","C4","D4","E4","18E4","F4","0","0"), array("ASL","0","0","68","1868","78","0","0"), array("ASR","0","0","67","1867","77","0","0"), array("BCLR","0","15","1D","181D","0","0","0" ), array("BITA","85","95","A5","18A5","B5","0","0"), array("BITB","C5","D5","E5","18E5","F5","0","0"), array("BRCLR","0","13","1F","181F","0","0","0"), array("BRSET","0","12","1E","181E","0","0","0"), array("BSET","0","14","1C","181C","0","0","0"), array("CLR","0","0","6F","186F","7F","0","0"), array("CMPA","81","91","A1","18A1","B1","0","0"), array("CMPB","C1","D1","E1","18E1","F1","0","0"), array("COM","0","0","63","1863","73","0","0"), array("CPD","1A83","1A93","1AA3","CDA3","1AB3","0","0"), array("CPX","8C","9C","AC","CDAC","BC","0","0"), array("CPY","188C","189C","1AAC","18AC","18BC","0","0"), array("DEC","0","0","6A","186A","7A","0","0"),

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    array("EORA","88","98","A8","18A8","B8","0","0"), array("EORB","C8","D8","E8","18E8","F8","0","0"), array("INC","0","0","6C","186C","7C","0","0"), array("JSR","0","9D","AD","18AD","BD","0","BD"), array("LDAA","86","96","A6","18A6","B6","0","0"), array("LDAB","C6","D6","E6","18E6","F6","0","0"), array("LDD","CC","DC","EC","18EC","FC","0","0"), array("LDS","8E","9E","AE","18AE","BE","0","0"), array("LDX","CE","DE","EE","CDEE","FE","0","0"), array("LDY","18CE","18DE","1AEE","18EE","18FE","0","0"), array("LSL","0","0","68","1868","78","0","0"), array("LSR","0","0","64","1864","74","0","0"), array("NEG","0","0","60","1860","70","0","0"), array("ORAA","8A","9A","AA","18AA","BA","0","0"), array("ORAB","CA","DA","EA","18EA","FA","0","0"), array("ROL","0","0","69","1869","79","0","0"), array("ROR","0","0","66","1866","76","0","0"), array("SBCA","82","92","A2","18A2","B2","0","0"), array("SBCB","C2","D2","E2","18E2","F2","0","0"), array("STAA","0","97","A7","18A7","B7","0","0"), array("STAB","0","D7","E7","18E7","F7","0","0"), array("STD","0","DD","ED","18ED","FD","0","0"), array("STS","0","9F","AF","18AF","BF","0","0"), array("STX","0","DF","EF","CDEF","FF","0","0"), array("STY","0","18DF","1AEF","18EF","FF","0","0"), array("SUBA","80","90","A0","18A0","B0","0","0"), array("SUBB","C0","D0","E0","18E0","F0","0","0"), array("SUBD","83","93","A3","18A3","B3","0","0"), array("TST","0","0","6D","186D","7D","0","0"), array("ABA","0","0","0","0","0","1B","0"), array("ABX","0","0","0","0","0","3A","0"), array("ABY","0","0","0","0","0","183A","0"), array("ASLA","0","0","0","0","0","48","0"), array("ASLB","0","0","0","0","0","58","0"), array("ASLD","0","0","0","0","0","5","0"), array("ASRA","0","0","0","0","0","47","0"), array("ASRB","0","0","0","0","0","57","0"), array("CBA","0","0","0","0","0","11","0"), array("CLC","0","0","0","0","0","0C","0"), array("CLI","0","0","0","0","0","0E","0"), array("CLRA","0","0","0","0","0","4F","0"), array("CLRB","0","0","0","0","0","5F","0"), array("CLV","0","0","0","0","0","0A","0"), array("COMA","0","0","0","0","0","43","0"), array("COMB","0","0","0","0","0","53","0"), array("DAA","0","0","0","0","0","19","0"), array("DECA","0","0","0","0","0","4A","0"), array("DECB","0","0","0","0","0","5A","0"), array("DES","0","0","0","0","0","34","0"), array("DEX","0","0","0","0","0","09","0"), array("DEY","0","0","0","0","0","1809","0"),

    array("FDIV","0","0","0","0","0","03","0"), array("IDIV","0","0","0","0","0","02","0"), array("INCA","0","0","0","0","0","4C","0"), array("INCB","0","0","0","0","0","5C","0"), array("INS","0","0","0","0","0","31","0"), array("INX","0","0","0","0","0","08","0"), array("INY","0","0","0","0","0","1808","0"), array("LSLA","0","0","0","0","0","48","0"), array("LSLB","0","0","0","0","0","58","0"), array("LSLD","0","0","0","0","0","05","0"), array("LSRA","0","0","0","0","0","44","0"), array("LSRB","0","0","0","0","0","54","0"), array("LSRD","0","0","0","0","0","04","0"), array("MUL","0","0","0","0","0","3D","0"), array("NEGA","0","0","0","0","0","40","0"), array("NEGB","0","0","0","0","0","50","0"), array("NOP","0","0","0","0","0","01","0"), array("PSHA","0","0","0","0","0","36","0"), array("PSHB","0","0","0","0","0","37","0"), array("PSHX","0","0","0","0","0","3C","0"), array("PSHY","0","0","0","0","0","183C","0"), array("PULA","0","0","0","0","0","32","0"), array("PULB","0","0","0","0","0","33","0"), array("PULX","0","0","0","0","0","38","0"), array("PULY","0","0","0","0","0","1838","0"), array("ROLA","0","0","0","0","0","49","0"), array("ROLB","0","0","0","0","0","59","0"), array("RORA","0","0","0","0","0","46","0"), array("RORB","0","0","0","0","0","56","0"), array("RTI","0","0","0","0","0","3B","0"), array("RTS","0","0","0","0","0","39","0"), array("SBA","0","0","0","0","0","10","0"), array("SEC","0","0","0","0","0","OD","0"), array("SEI","0","0","0","0","0","OF","0"), array("SEV","0","0","0","0","0","OB","0"), array("STOP","0","0","0","0","0","CF","0"), array("SWI","0","0","0","0","0","3F","0"), array("TAB","0","0","0","0","0","16","0"), array("TAP","0","0","0","0","0","06","0"), array("TBA","0","0","0","0","0","17","0"), array("TETS","0","0","0","0","0","00","0"), array("TPA","0","0","0","0","0","07","0"), array("TSTA","0","0","0","0","0","4D","0"), array("TSTB","0","0","0","0","0","5D","0"), array("TSX","0","0","0","0","0","30","0"), array("TSY","0","0","0","0","0","1830","0"), array("TXS","0","0","0","0","0","35","0"), array("TYS","0","0","0","0","0","1835","0"), array("WAI","0","0","0","0","0","3E","0"), array("XGDX","0","0","0","0","0","8F","0"), array("XGDY","0","0","0","0","0","188F","0"), array("BCC","0","0","0","0","0","0","24"), array("BCS","0","0","0","0","0","0","25"),

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    array("BEQ","0","0","0","0","0","0","27"), array("BGE","0","0","0","0","0","0","2C"), array("BGT","0","0","0","0","0","0","2E"), array("BHI","0","0","0","0","0","0","22"), array("BHS","0","0","0","0","0","0","24"), array("BLE","0","0","0","0","0","0","2F"), array("BLO","0","0","0","0","0","0","25"), array("BLS","0","0","0","0","0","0","23"), array("BLT","0","0","0","0","0","0","2D"), array("BMI","0","0","0","0","0","0","2B"), array("BNE","0","0","0","0","0","0","26"), array("BPL","0","0","0","0","0","0","2A"), array("BRA","0","0","0","0","0","0","20"), array("BRN","0","0","0","0","0","0","21"), array("BSR","0","0","0","0","0","0","8D"), array("BVC","0","0","0","0","0","0","28"), array("JMP","0","0","6E","186E","0","0","7E"), array("BVS","0","0","0","0","0","0","29"), array("END","0","0","0","0","0","0","0"), ); function lempty($linea){ $i=0; $a=0; $l1=str_split($linea); while(!empty($l1[$i])){ $ascii=ord($l1[$i]); if($ascii>32){ $a++; } $i++; } if($a!=0){return false;} } function linend($linea){

    $i=0; $a=0; $b=0; $l1=str_split($linea); while(!empty($l1[$i])){ $ascii=ord($l1[$i]); if($ascii==69 || $ascii==78 || $ascii==68 ){ $a++; if($a==3){return true;} }elseif($ascii>0){ $a=0; } $i++; } //if($b==1){return true;} } /*function quitaceros($valor){ if(strlen($valor)2){ if(prm_char($valor,"0")){ $valor1=str_replace("0","",$valor); if(strlen($valor1)1){ return $valor1;} quitaceros($valor1); }else{return $valor;} }else{return $valor;} }*/ function verifica_nem($linea,$seting){ $x=-1;

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    while($x!=147){ $x++; if($linea==$seting[$x][0]){ return $x; } } if($x==147){ return false; } } function arr_linea($lineas){ $tam=strlen($lineas); $di=str_split($lineas); $i=0; $a=-1; $b=-1; $c=0; $cadena[][]=' '; $linearr[]=' '; for($i=0;$i -1){ $a=-1; $c++; $b++; $linearr[$b]=implode($cadena[$b]);

    //printf("%s",$linearr[$b]); } }else{ $a++; $cadena[$c][$a]=$di[$i]; } } return $linearr; } function prm_char($cdn,$crc){ $arr=str_split($cdn); $ascii1=ord($crc); $ascii=ord($arr[0]); if($ascii==$ascii1){ return true; } } function decimal($num){ $tam=strlen($num); $h1=str_split($num); $i=0; $j=0; $val=0; $arr=array(48,49,50,51,52,53,54,55,56,57); for($i=0;$i

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    for($j=0;$j $a2){ $a=($a2 - $a1); if($a>-128){ $a=decbin($a-1); $b=str_replace("111111111111111111111111","",($a)); return dechex(bindec($b)); }else{return false;}

    }elseif($a1 < $a2){ $a=(($a2 - $a1)-2); if($a

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    if( ($ascii>47 && $ascii64 && $ascii

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    if($arrdex[1]=="X"){//INDEX X if(prm_char($arrdex[0],'$')===true && prm_char($arrdex[2],'#')===true && prm_char($ver,'$')===true){ return 3; } }elseif($arrdex[1]=="Y"){//INDEX Y if(prm_char($arrdex[0],'$')===true && prm_char($arrdex[2],'#')===true && prm_char($ver,'$')===true){ return 4; } } }elseif(!empty($arrdex[0]) && !empty($arrdex[1])){ if($arrdex[1]=="X"){ if(prm_char($arrdex[0],'$')===true){

    return 3; } }elseif($arrdex[1]=="Y"){ if(prm_char($arrdex[0],'$')===true){ return 4; } } }elseif(prm_char($arrdex[0],'$')===true && prm_char($arrdex[1],'$')===true){ return 8; }elseif(empty($arrdex[0]) || empty($arrdex[1])){ return false;//ERROR }else{ return false;//ERROR } }elseif($dos!==false){//INMEDIATO

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    $ver=str_replace("#","",$linea); $a1=buscavar($variarr,$siz,$ver); if(prm_char($linea,"#")===true){//ORDINARIO if(decimal($ver)===true){ return 1; }elseif(prm_char($ver,"$")===true){ return 1; }elseif(prm_char($ver,"'")===true){ return 1; }elseif($a1!==false){ $a2=str_replace("$","",$veriarr[$a1][1]); if(prm_char($veriarr[$a1][1],'$')===true && exad($a2)===true){ return 1; } }else{return false;} }else{return false;} }//FIN INMEDIATO elseif($uno!==false){//DIRECTO Y EXTENDIDO

    if(prm_char($linea,"$")===true &&($numne>127 && $numne

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    if(strpos($variarr[$f1][1],"$")!==false && ($numne>127 && $numne127 && $numne54 && $numne127 && $numne

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    if($a==$i && $ascii==42){ return true; } } } } function convexa($stn){ $ascii=ord($stn); if($ascii>32 && $ascii

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    }elseif(strpos("$",$variabl[$hum][1])!==false){ $hum1=str_replace("$",$variabl[$hum][1]); if(exad($hum1)===true){return $hum1;}else{return false;} }//CON '?******************************* }else{return false;} }elseif($mdir==2){//DIRECTO $hom=str_replace("$","",$dir); if(strlen($hom)>0 && exad($hom)===true){ if(strlen($hom)

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    }else{ return false; } } }elseif($mdir==4){//INDEXADO Y $hun=explode(",",$dir); if(!empty($hun[0]) && !empty($hun[1]) && !empty($hun[2])){ $hom=str_replace("$","",$hun[0]); $hom1=str_replace("#$","",$hun[2]); if(strlen($hom)0 && exad($hom)===true && exad($hom1)===true){ if(strlen($hom)

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    exad($hom)===true){if(strlen($hom)0 && strlen($hom)

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    $incvariable=0; $inc=0; $etiqueta[][]=' '; $variable[][]=' '; $ETI[]=' '; $localidad=0x0000; $a=0; $varnem=" "; $fp=fopen($archivo,"rb"); //*********************************************************** while(!feof($fp)){ $linea = fgets($fp); $rx=explode(" ",$linea); $wx=explode("\t",$linea); $linarr=arr_linea($linea); if(!empty($wx[0]) || !empty($rx[0])){ if(!empty($linarr[0]) && empty($linarr[1])){ $ETI[$inc]=$linarr[0]; //ETIQUETA $inc++; } } } fclose($fp); //************************************************************************* $fp1=fopen("pueva2.txt","a"); $fp=fopen($archivo,"rb"); while(!feof($fp)){ $a++;

    $linea = fgets($fp); $comen=strpos($linea,'*'); $coment=Aster_fir($linea); $linarr=arr_linea($linea); if($coment===true){ fprintf($fp1,"%d A\t%s",$a,$linea); }elseif($comen!==false){ $linex=explode("*",$linea); $arrx=arr_linea($linex[0]); //**************************************OPCION DE LINEA COMPLETA $Nmonic=" "; $Modir=" "; $i=0; $z=0; $w=0; $error1=0; $r=0; while(!empty($arrx[$i])){ $Nemo=verifica_nem($arrx[$i],$set); if($Nemo>127 && $Nemo

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    $Nmonic=verifica_nem($arrx[$i],$set); $w++; }elseif(modo_dir($arrx[$i],$incvariable,$variable,$etiqueta,$incetiqueta,$Nemo)!==false){ $Modir=modo_dir($arrx[$i],$incvariable,$variable,$etiqueta,$incetiqueta,$Nemo); $w++; $z++; }elseif($Nemo===false){//SI NO HAY NEMONICO? $z++; }else{ $error1++;} $i++; }//TERMINA WHILE ARRX if(!empty($arrx[1])&&!empty($arrx[0])){$error1=1;} if($error1==1 && $r!=1 && modo_dir($arrx[1],$incvariable,$variable,$etiqueta,$incetiqueta,$Nemo)===false && verifica_nem($arrx[0],$set)!==false ){ fprintf($fp1,"%d A %X\t\t\t%s\t%s\t*%s\tERROR DE SINTAXIS\r\n",$a,$localidad,$arrx[0],$arrx[1],$linex[1]); }elseif($r==1 && !empty($arrx[1])){////////////////////////////////////////////***RELATIVO CHANGE

    $localidad=$localidad+2; }elseif($z==3){//*******************************************DECLARACION DE VARIABES $Inst=dir_memo($Modir,$arrx[2],$variable,$incvariable); fprintf($fp1,"%d A\t%s\t%s\tEQU\t%s\t*%s\r\n",$a,$Inst,$arrx[0],$arrx[2],$linex[1]); $variable[$incvariable][0]=$arrx[0]; $variable[$incvariable][1]=$arrx[2]; $incvariable++; }elseif($w==2 && $Nmonic!==false){//**************************ORG********NEMONICOS CON MODO DE DIRECCION $alpha=buscaeti($etiqueta,$a,$arrx[1]); if(verifica_nem($arrx[0],$set)!==false) { if($alpha!==false){ $Unix=$set[$Nmonic][5].dechex($etiqueta[$alpha][1]); fprintf($fp1,"%d A %X\t%s\t\t%s\t%s\t\r\n",$a,$localidad,$Unix,$arrx[0],$arrx[1]); $localidad=$localidad+(strlen($Unix))/2; }elseif($arrx[0]=="FCB"){

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    $Inst=dir_memo(8,$arrx[1],$variable,$incvariable); $Unix=$Inst; $localidad=$localidad + 0x0000; fprintf($fp1,"%d A %X\t%s\t\t%s\t%s\t*%s\r\n",$a,$localidad,$Unix,$arrx[0],$arrx[1],$linex[1]); $localidad=$localidad+(strlen($Unix))/2; }elseif($arrx[0]=="ORG"){$localidad=dir_memo($Modir,$arrx[1],$variable,$incvariable); $localidad=dechex($localidad); fprintf($fp1,"%d A %X\t%s\t\t%s\t*%s\r\n",$a,$localidad,$arrx[0],$arrx[1],$linex[1]); $localidad=$localidad + 0x0000; }elseif($Nmonic!==false){ if($set[$Nmonic][$Modir]!="0"){/////////////////////EXEPCION CHANGE $Inst=dir_memo($Modir,$arrx[1],$variable,$incvariable); $Unix=$set[$Nmonic][$Modir].$Inst; $localidad=$localidad + 0x0000; fprintf($fp1,"%d A %X\t%s\t\t%s\t%s\t*%s\r\n",$a,$localidad,$Unix,$arrx[0],$arrx[1],$linex[1]);

    $localidad=$localidad+(strlen($Unix))/2; }elseif($set[$Nmonic][$Modir]=="0"){ fprintf($fp1,"%d A %X\t\t\t%s\t%s\tERROR INCONSISTENCIA DE DIRECCIONAMIENTO\r\n",$a,$localidad,$arrx[0],$arrx[1]); }elseif($Modir===false){ fprintf($fp1,"%d A %X\t\t\t%s\t%s\tERROR INCONSISTENCIA DE DIRECCIONAMIENTO\r\n",$a,$localidad,$arrx[0],$arrx[1]); }else{ fprintf($fp1,"%d A %X\t\t\t%s\t%s\tERROR INCONSISTENCIA DE DIRECCIONAMIENTO\r\n",$a,$localidad,$arry[0],$arry[1]); } }else{ $AROR=explode("\r\n",$linea); fprintf($fp1,"%d A %X\t\t\t%s\t\tERROR\r\n",$a,$localidad,$AROR[0]); } } }elseif($w==1 && $Nmonic!==false && $z==0){//*****************END******NEMONICOS******INHERENTE if($Nmonic!==false && $set[$Nmonic][6]!="0"){ $Unix=$set[$Nmonic][6]; $localidad=$localidad + 0x0000; fprintf($fp1,"%d A %X\t%s\t\t%s\t*%s\r\n",$a,$localidad,$Nmonic,$arrx[0],$linex[1]);

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    $localidad=$localidad+(strlen($Unix))/2; } }elseif($z==1 && verifica_nem($arrx[0],$set)===false){/////////////////////*****ETIQUTASSSS****CHANGE $rw=explode(" ",$linea); $zx=explode("\t",$linea); if(!empty($zx[0]) && !empty($rw[0])){ $etiqueta[$incetiqueta][0]=$arrx[0]; //ETIQUETA $etiqueta[$incetiqueta][1]=$localidad; //LOCALIDAD ETIQUETA $incetiqueta++; fprintf($fp1,"%d A %X\t\t%s\t\t*%s\r\n",$a,$localidad,$arrx[0],$linex[1]); }else{ $AROR=explode("\r\n",$linea); fprintf($fp1,"%d A %X\t\t%s\t\tERROR\r\n",$a,$localidad,$AROR[0]);} }//**************************************IF COMENTARIOS //*****************************************SIN COMENTASRIOS*************************************************

    }elseif($comen===false){/////IF SIN COMENTA $arry=arr_linea($linea); //**************************************OPCION DE LINEA COMPLETA $Nmonic=" "; $Modir=" "; $i=0; $z=0; $w=0; $error1=0; $r=0; while(!empty($arry[$i])){ $Nemo=verifica_nem($arry[$i],$set); if($Nemo>127 && $Nemo

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    $w++; $z++; }elseif($Nemo===false){//SI NO HAY NEMONICO? $z++; }else{ $error1++;} $i++; }//TERMINA WHILE ARRX if(!empty($arry[1])&&!empty($arry[0])){$error1=1;} if($error1==1 && $r!=1 && modo_dir($arry[1],$incvariable,$variable,$etiqueta,$incetiqueta,$Nemo)===false && verifica_nem($arry[0],$set)!==false ){ fprintf($fp1,"%d A %X\t\t\t%s\t%s\t\t1ERROR DE SINTAXIS\r\n",$a,$localidad,$arry[0],$arry[1]); }elseif($r==1 && !empty($arry[1])){////////////////////////////////////////////***RELATIVO CHANGE $localidad=$localidad+2; }elseif($z==3){//*******************************************DECLARACION DE VARIABES $Inst=dir_memo($Modir,$arry[2],$variable,$incvariable); fprintf($fp1,"%d A\t%s\t%s\tEQU\t%s\r\n",$a,$Inst,$arry[0],$arry[2]);

    $variable[$incvariable][0]=$arry[0]; $variable[$incvariable][1]=$arry[2]; $incvariable++; }elseif($w==2 && $Nmonic!==false){//**************************ORG********NEMONICOS CON MODO DE DIRECCION $alpha=B_eti($ETI,$arry[1]); if(verifica_nem($arry[0],$set)!==false) { if($alpha!==false){ $Unix=$set[$Nmonic][5];//MAS 2 LOCALIDAES fprintf($fp1,"%d A %X\t%s\t\t%s\t%s\t\r\n",$a,$localidad,$Unix,$arry[0],$arry[1]); $localidad=$localidad+(strlen($Unix)+4)/2; }elseif($arry[0]=="FCB"){ $Inst=dir_memo(8,$arry[1],$variable,$incvariable); $Unix=$Inst; $localidad=$localidad + 0x0000; fprintf($fp1,"%d A %X\t%s\t\t%s\t%s\t\r\n",$a,$localidad,$Unix,$arry[0],$arry[1]); $localidad=$localidad+(strlen($Unix))/2;

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    }elseif($arry[0]=="ORG"){$localidad=dir_memo($Modir,$arry[1],$variable,$incvariable); $localidad=hexdec($localidad); $localidad=$localidad + 0x0000; fprintf($fp1,"%d A %X\t\t\t%s\t%s\r\n",$a,$localidad,$arry[0],$arry[1]); }elseif($Nmonic!==false && $Modir!==false && !empty($set[$Nmonic][$Modir])){ if($set[$Nmonic][$Modir]!="0"){/////////////////////EXEPCION CHANGE $Inst=dir_memo($Modir,$arry[1],$variable,$incvariable); $Unix=$set[$Nmonic][$Modir].$Inst; $localidad=$localidad + 0x0000; fprintf($fp1,"%d A %X\t%s\t\t%s\t%s\r\n",$a,$localidad,$Unix,$arry[0],$arry[1]); $localidad=$localidad+(strlen($Unix))/2; }elseif($set[$Nmonic][$Modir]=="0"){ fprintf($fp1,"%d A %X\t\t\t%s\t%s\tERROR INCONSISTENCIA DE DIRECCIONAMIENTO\r\n",$a,$localidad,$arry[0],$arry[1]); }elseif($Modir===false){ fprintf($fp1,"%d A %X\t\t\t%s\t%s\tERROR INCONSISTENCIA DE DIRECCIONAMIENTO\r\n",$a,$localidad,$arry[0],$arry[1]); }

    }else{ fprintf($fp1,"%d A %X\t\t\t%s\t%s\tERROR INCONSISTENCIA DE DIRECCIONAMIENTO\r\n",$a,$localidad,$arry[0],$arry[1]); } }else{ $AROR=explode("\r\n",$linea); fprintf($fp1,"%d A %X\t\t\t%s\t\tERROR\r\n",$a,$localidad,$AROR[0]); } }elseif($w==1 && $Nmonic!==false && $z==0){//*****************END******NEMONICOS******INHERENTE if($Nmonic!==false && $set[$Nmonic][6]!="0"){ $Unix=$set[$Nmonic][6]; $localidad=$localidad + 0x0000; fprintf($fp1,"%d A %X\t%s\t\t%s\r\n",$a,$localidad,$Unix,$arry[0]); $localidad=$localidad+(strlen($Unix))/2; } }elseif($z==1 && verifica_nem($arry[0],$set)===false){/////////////////////*****ETIQUTASSSS****CHANGE $rw=explode(" ",$linea); $zx=explode("\t",$linea); if(!empty($zx[0]) && !empty($rw[0])){

  • Prez Gonzlez Josu Abraham Programacin y estructura de computadoras

    $etiqueta[$incetiqueta][0]=$arry[0]; //ETIQUETA $etiqueta[$incetiqueta][1]=$localidad; //LOCALIDAD ETIQUETA $incetiqueta++; fprintf($fp1,"%d A %X\t\t%s\t\t\r\n",$a,$localidad,$arry[0]); }else{ $AROR=explode("\r\n",$linea); fprintf($fp1,"%d A %X\t\t%s\t\tERROR\r\n",$a,$localidad,$AROR[0]);} } }//FIN SIN COMENTARIOS COMENTA }//////FIN WHILE DOS fclose($fp); return $etiqueta; }////FIN ETIQUETA ?>