Beruflich Dokumente
Kultur Dokumente
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.
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.
$linea = fgets($fp);
$comen=strpos($linea,'*');
$coment=Aster_fir($linea);
$tab=strpos($linea,"\t");
$space=strpos($linea,' ');
$linarr=arr_linea($linea) ;
if($coment===true){
$filname=$_POST["nom"];
$as=explode(" ",$filname);
$fp=fopen($as[0],"rb");
$fp1=fopen($fileS,"a");
$etiqueta=Etiquetas($as[0],$set);
while(!feof($fp)){
$a++;
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
}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,$ince
tiqueta,$Nemo)===false &&
);
verifica_nem($arrx[0],$set)!==false
if($Nemo>127 && $Nemo<148){
){
$r++;///////////////************c
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]);
hange
}elseif($arrx[$i]=="EQU"){//SI EQU
$z++;
}elseif($r==1
&&
!empty($arrx[1])){/////////////////////////////////////////
///***RELATIVO CHANGE
}elseif($Nemo!==false){//SI
NEMONICO
$buscon=buscaeti($etiqueta,$inceti
$Nmonic=verifica_nem($arrx[$i],$s
queta,$arrx[1]);
et);
$w++;
}elseif(modo_dir($arrx[$i],$incvaria
ble,$variable,$etiqueta,$incetiqueta,$Nemo)!==false){
if(!empty($arrx[1])&&!empty($arrx[
0])){
$Modir=modo_dir($arrx[$i],$incvari
able,$variable,$etiqueta,$incetiqueta,$Nemo);
$w++;
$z++;
}elseif($Nemo===false){//SI NO HAY
NEMONICO?
$Nmon=verifica_nem($arrx[0],$set);
$z++;
$localidad=$localidad+(strlen($Unix
$Modir=modo_dir($arrx[1],$incvari
able,$variable,$etiqueta,$incetiqueta,$Nmon);
if($buscon!==false){
$miu=R_tv($etiqueta[$buscon][1],$
))/2;
}else{fprintf($fp1,"%d
A %s\t\t\t%s\t%X\tERROR INCONSISTENCIA DE
DIRECCIONAMIENTO\r\n",$a,$arrx[0],$arrx[1],$localidad
);}
localidad);
}
}elseif($z==3){//****************
***************************DECLARACION DE
VARIABES
if($miu!==false){
$Inst=dir_memo($Modir,$arrx[2],$v
ariable,$incvariable);
if(strlen($miu)<2){$miu="0".$miu;}
$miu =
strtoupper($miu);
fprintf($fp1,"%d
A\t%s\tEQU\t%s\t%s\t*%s\r\n",$a,$arrx[0],$arrx[2],$Ins
t,$linex[1]);
$Unix=$set[$Nmon][7].$miu;
$variable[$incvariable][0]=$arrx[0];
fprintf($fp1,"%d A
%s\t%X\t\t%s\t%s\r\n",$a,$arrx[0],$localidad,$Unix,$lin
ex[1]);
$localidad=$localidad+(strlen($Unix
))/2;
}elseif($miu===false){fprintf($fp1,"
%d A %s\t\t\t%s\t%X\tERROR DE
BIFURCACION\r\n",$a,$arrx[0],$arrx[1],$localidad);}
$variable[$incvariable][1]=$arrx[2];
$incvariable++;
}elseif($w==2 &&
$Nmonic!==false){//**************************ORG
********NEMONICOS CON MODO DE DIRECCION
$alpha=buscaeti($etiqueta,$a,$arrx
[1]);
e)
}elseif($Modir!==false
&& $set[$Nmon][$Modir]!="0" &&
dir_memo($Modir,$arrx[1],$variable,$incvariable)!=false
){
$Inst=dir_memo($Modir,$arrx[1],$v
if(verifica_nem($arrx[0],$set)!==fals
{
if($arrx[0]=="END"){
$ends=explode("\r\n",$linea);
fprintf($fp1,"%d A
%s\t\t\t%X\t\t",$a,$ends[0],$localidad);
ariable,$incvariable);
}elseif($alpha!==false){
$Unix=$set[$Nmon][$Modir].$Inst;
$Unix=$set[$Nmonic][5].dechex($e
tiqueta[$alpha][1]);
fprintf($fp1,"%d A
%s\t%s\t\t%X\t%s\t%s\r\n",$a,$arrx[0],$arrx[1],$localid
ad,$Unix,$linex[1]);
$localidad=$localidad+(strlen($Unix
))/2;
$localidad=$localidad+(strlen($Unix
))/2;
}elseif($arrx[0]=="FCB"){
}elseif($set[$Nmonic][$Modir]=="0"
){
$Inst=dir_memo(8,$arrx[1],$variabl
e,$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],$locali
dad,$Unix,$linex[1]);
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
);
$localidad=$localidad+(strlen($Unix
}else{
))/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
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
$Inst=dir_memo($Modir,$arrx[1],$v
ariable,$incvariable);
$Unix=$set[$Nmonic][$Modir].$Inst
if($Nmonic!==false &&
$set[$Nmonic][6]!="0"){
;
$Unix=$set[$Nmonic][6];
$localidad=$localidad + 0x0000;
$localidad=$localidad + 0x0000;
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
}elseif(linend($linea)===true){
fprintf($fp1,"%d
A\t\t\tEND\t%X\r\n",$a,$localidad);
))/2;
}
}elseif($z==1 &&
verifica_nem($arrx[0],$set)===false){/////////////////////
*****ETIQUTASSSS****CHANGE
}
}//***************************
***********IF COMENTARIOS
$rw=explode(" ",$linea);
$zx=explode("\t",$linea);
if(!empty($zx[0]) &&
!empty($rw[0])){
//*****************************************SIN
COMENTARIOS**********************************
***************
}elseif($comen===false){/////IF
SIN COMENTA
$arry=arr_linea($linea);
fprintf($fp1,"%d A
%s\t\t%X\t\t*%s\r\n",$a,$arrx[0],$localidad,$linex[1]);
//****************************
**********OPCION DE LINEA COMPLETA
}elseif(linend($linea)===true){
$Nmonic=" ";
$Modir=" ";
$i=0;
$z=0;
$w=0;
$error1=0;
$r=0;
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);
while(!empty($arry[$i])){
$Nemo=verifica_nem($arry[$i],$set
);
}else{
if($Nemo>127 && $Nemo<148){
$AROR=explode("\r\n",$linea);
$r++;
fprintf($fp1,"%d A
%s\t\t%X\t\tERROR\r\n",$a,$AROR[0],$localidad);}
}else{
}elseif($arry[$i]=="EQU"){//SI EQU
$z++;
if(lempty($linea)!==false){
}elseif($Nemo!==false){//SI
fprintf($fp1,"%d A
%X\t\t\r\n",$a,$localidad);
NEMONICO
$Nmonic=verifica_nem($arry[$i],$s
et);
}elseif($r==1 &&
!empty($arry[1])){
$w++;
}elseif(modo_dir($arry[$i],$incvaria
ble,$variable,$etiqueta,$incetiqueta,$Nemo)!==false){
$buscon=buscaeti($etiqueta,$inceti
queta,$arry[1]);
$Modir=modo_dir($arry[$i],$incvari
able,$variable,$etiqueta,$incetiqueta,$Nemo);
$w++;
if(!empty($arry[1])&&!empty($arry[
0])){
$z++;
}elseif($Nemo===false){//SI NO HAY
NEMONICO?
$Nmon=verifica_nem($arry[0],$set);
$z++;
$Modir=modo_dir($arry[1],$incvari
able,$variable,$etiqueta,$incetiqueta,$Nmon);
}else{ $error1++;}
$i++;
}//TERMINA
WHILE ARRX
if(!empty($arry[1])&&!empty($arry[
0])){$error1=1;}
if($arry[0]=="END"){
///CAMBIAR
$ends=explode("\r\n",$linea);
if(lempty($linea)!==false){
fprintf($fp1,"%d A
\t\t\t\t%X\r\n",$a,$localidad);
fprintf($fp1,"%d A
%s\t\t\t%X\t\r\n",$a,$ends[0],$localidad);
}elseif($buscon!==false){
}elseif($error1==1 && $r!=1 &&
modo_dir($arry[1],$incvariable,$variable,$etiqueta,$ince
tiqueta,$Nemo)===false &&
$miu=R_tv($etiqueta[$buscon][1],$
localidad);
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);
if($miu!==false){
}elseif($z==3){//****************
***************************DECLARACION DE
VARIABES
if(strlen($miu)<2){$miu="0".$miu;}
$Inst=dir_memo($Modir,$arry[2],$v
$miu
= strtoupper($miu);
ariable,$incvariable);
fprintf($fp1,"%d
A\t%s\t%s\tEQU\t%s\r\n",$a,$arry[0],$arry[2],$Inst);
$Unix=$set[$Nmon][7].$miu;
$variable[$incvariable][0]=$arry[0];
fprintf($fp1,"%d A
%s\t%s\t\t%X\t%s\r\n",$a,$arry[0],$arry[1],$localidad,$
Unix);
$variable[$incvariable][1]=$arry[2];
$localidad=$localidad+(strlen($Unix
$incvariable++;
))/2;
}elseif($miu===false){fprintf($fp1,"
%d A %s\t%s\t\t%X\tERROR DE
BIFURCACION\r\n",$a,$arry[0],$arry[1],$localidad);}
}elseif($w==2 &&
$Nmonic!==false){//**************************ORG
********NEMONICOS CON MODO DE DIRECCION
$alpha=buscaeti($etiqueta,$a,$arry
[1]);
}elseif($Modir!==false &&
$set[$Nmon][$Modir]!="0" &&
dir_memo($Modir,$arry[1],$variable,$incvariable)!=false
){//////////////CAMBIA EN LOS DEMAS
e)
if(verifica_nem($arry[0],$set)!==fals
{
if($arry[0]=="END"){
$Inst=dir_memo($Modir,$arry[1],$v
ariable,$incvariable);
$ends=explode("\r\n",$linea);
$Unix=$set[$Nmon][$Modir].$Inst;
fprintf($fp1,"%d A
%s\t\t\t%X\t\r\n",$a,$ends[0],$localidad);
fprintf($fp1,"%d A
%s\t%s\t\t%X\t%s\r\n",$a,$arry[0],$arry[1],$localidad,$
Unix);
}elseif($alpha!==false){
$Unix=$set[$Nmonic][5].dechex($e
$localidad=$localidad+(strlen($Unix
tiqueta[$alpha][1]);
))/2;
}else{fprintf($fp1,"%d
A %s\t%s\t\t\t%X\tERROR INCONSISTENCIA DE
DIRECCIONAMIENTO\r\n",$a,$arry[0],$arry[1],$localidad
);}
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]=="FCB"){
$Inst=dir_memo(8,$arry[1],$variabl
e,$incvariable);
$Unix=$Inst;
$localidad=$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
);
0x0000;
fprintf($fp1,"%d A
%s\t%s\t\t%X\t%s\t\r\n",$a,$arry[0],$arry[1],$localidad,
$Unix);
}
}else{
$localidad=$localidad+(strlen($Unix
))/2;
}elseif($arry[0]=="ORG"){$localidad
=dir_memo($Modir,$arry[1],$variable,$incvariable);
fprintf($fp1,"%d A
%s\t%s\t\t%X\tERROR INCONSISTENCIA DE
DIRECCIONAMIENTO\r\n",$a,$arry[0],$arry[1],$localidad
);
}
$localidad=hexdec($localidad);
}else{
$localidad=$localidad + 0x0000;
fprintf($fp1,"%d A
%s\t%s\t\t%X\r\n",$a,$arry[0],$arry[1],$localidad);
$AROR=explode("\r\n",$linea);
fprintf($fp1,"%d A
%s\t%X\tERROR\r\n",$a,$AROR[0],$localidad);
}elseif($Nmonic!==false &&
$Modir!==false && !empty($set[$Nmonic][$Modir])){
if($set[$Nmonic][$Modir]!="0"){
}
}elseif($w==1 &&
$Nmonic!==false &&
$z==0){//*****************END******NEMONICOS**
****INHERENTE
$Inst=dir_memo($Modir,$arry[1],$v
ariable,$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);
if($Nmonic!==false &&
$set[$Nmonic][6]!="0" ){/////////////CAMBIAR A LOS
DEMAS
$Unix=$set[$Nmonic][6];
$localidad=$localidad+(strlen($Unix
$localidad=$localidad + 0x0000;
fprintf($fp1,"%d A
%s\t\t\t%X\t%s\r\n",$a,$arry[0],$localidad,$Unix);
}elseif($set[$Nmonic][$Modir]=="0"
))/2;
))/2;
$localidad=$localidad+(strlen($Unix
){
}elseif($z==1 &&
verifica_nem($arry[0],$set)===false){/////////////////////
*****ETIQUTASSSS
$rw=explode(" ",$linea);
fprintf($fp1,"%d A
END\t\t\t%X\r\n",$a,$localidad);
$zx=explode("\t",$linea);
if(!empty($zx[0]) &&
}}
!empty($rw[0])){
}//FIN SIN COMENTARIOS
COMENTA
fprintf($fp1,"%d A
%s\t\t%X\t\t\r\n",$a,$arry[0],$localidad);
}elseif(linend($linea)===true){
}//FIN ISSET
fprintf($fp1,"%d A
END\t\t\t%X\r\n",$a,$localidad);
Las funciones:
}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){
$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"),
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"),
);
$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){
function lempty($linea){
if(strlen($valor)<5 && strlen($valor)>2){
$i=0;
$a=0;
$l1=str_split($linea);
if(prm_char($valor,"0")){
while(!empty($l1[$i])){
$valor1=str_replace("0","",$valor);
$ascii=ord($l1[$i]);
if($ascii>32){
if(strlen($valor1)<3 &&
strlen($valor1)>1){ return $valor1;}
quitaceros($valor1);
$a++;
}
}else{return $valor;}
$i++;
}
if($a!=0){return false;}
}else{return $valor;}
}
}*/
function verifica_nem($linea,$seting){
function linend($linea){
$x=-1;
while($x!=147){
//printf("<span>%s</span><br/>",$l
$x++;
inearr[$b]);
if($linea==$seting[$x][0]){
return $x;
}else{
}
}
if($x==147){
$a++;
$cadena[$c][$a]=$di[$i];
return false;
}
}
}
}
return $linearr;
}
function prm_char($cdn,$crc){
function arr_linea($lineas){
$arr=str_split($cdn);
$tam=strlen($lineas);
$di=str_split($lineas);
$i=0;
$a=-1;
$b=-1;
$c=0;
$cadena[][]=' ';
$linearr[]=' ';
$ascii1=ord($crc);
$ascii=ord($arr[0]);
if($ascii==$ascii1){
return true;
for($i=0;$i<$tam;$i++){
$ascii=ord($di[$i]);
if($ascii==9 ||
$ascii==32 || $ascii==13 || $ascii==10){
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,
1;
$c++;
$b++;
56,57);
for($i=0;$i<$tam;$i++){
$linearr[$b]=implode($cadena[$b]);
$ascii=ord($h1[$i]);
for($j=0;$j<10;$j++){
}elseif($a1 < $a2){
if($ascii==$arr[$j]){
$a=(($a2 - $a1)-2);
$val++;
}
}
if($a<128){
return
}
dechex($a);
if($val==$tam){
}else{return
false;}
return true;
}
}else{return false;}
}
function R_tv($psc,$posac){
//$psn="0x".$psc;
$psn=$psc + 0x0000;
$i=0;
$a=0;
$a1=0;
$a2=0;
$a1=$posac;
$a2=$psc;
if($a1 > $a2){
$a=($a2 - $a1);
function exad($num){
if($a>-128){
$a=decbin($a-1);
$b=str_replace("111111111111111
$tam=strlen($num);
$p1=str_split($num);
$i=0;
$var=0;
while($i!=$tam){
111111111","",($a));
return
dechex(bindec($b));
$ascii=ord($p1[$i]);
}else{return
false;}
$a1=0;
$i=0;
for($i=0;$i<$tam;$i++){
$a1++;
if($arrvar[$i][0]==$val){
return $i;
}
if($var==$tam){
}
return true;
}
if($a1==0 || $a1==$tam){
}
return false;
}
}
function buscaeti($arreti,$siz,$val){
$i=0;
while(!empty($arreti[$i])){
if($arreti[$i][0]==$val){
return $i;
}
$i++;
function
modo_dir($linea,$siz,$variarr,$etiarr,$tam,$numne){
}
return false;
$uno=strpos($linea,'$');
$dos=strpos($linea,'#');
$tres=strpos($linea,',');
$f1=buscavar($variarr,$siz,$linea);
$f2=buscaeti($etiarr,$tam,$linea);
function B_eti($arr,$val){
$i=0;
while(!empty($arr[$i])){
if($arr[$i]==$val){
if($uno!==false &&
$tres!==false){ //INDEXADO
return true;
}
$i++;
}
return false;
}
$arrdex=explode(",",$linea);
//INICIA MODO
INDEXADO
if(!empty($arrdex[0]) &&
!empty($arrdex[1]) && !empty($arrdex[2])){
$ver=str_replace("#","",$arrdex[2]);
function buscavar($arrvar,$tam,$val){
if($arrdex[1]=="X"){//INDEX X
return 3;
}
if(prm_char($arrdex[0],'$')===true
&& prm_char($arrdex[2],'#')===true &&
prm_char($ver,'$')===true){
}elseif($arrdex[1]=="Y"){
return 3;
if(prm_char($arrdex[0],'$')===true){
}
return 4;
}elseif($arrdex[1]=="Y"){//INDEX Y
}
if(prm_char($arrdex[0],'$')===true
&& prm_char($arrdex[2],'#')===true &&
prm_char($ver,'$')===true){
}elseif(prm_char($arrdex[0],'$')===t
rue && prm_char($arrdex[1],'$')===true){
return 4;
}
return 8;
}
}elseif(empty($arrdex[0]) ||
empty($arrdex[1])){
}elseif(!empty($arrdex[0]) &&
!empty($arrdex[1])){
return false;//ERROR
if($arrdex[1]=="X"){
if(prm_char($arrdex[0],'$')===true){
}else{
return false;//ERROR
}
}elseif($dos!==false){//INMEDIATO
$ver=str_replace("#","",$linea);
if(prm_char($linea,"$")===true
&&($numne>127 && $numne<148) ){
$a1=buscavar($variarr,$siz,$ver);
return 7;
if(prm_char($linea,"#")===true){//O
RDINARIO
}elseif(prm_char($linea,"$")===true
){
if(decimal($ver)===true){
$ver=str_replace("$","",$linea);
return 1;
}elseif(prm_char($ver,"$")===true){
$tam=strlen($ver);
return 1;
}elseif(prm_char($ver,"'")===true){
if($tam<3 &&
exad($ver)===true){//DIRECTO
return 1;
}elseif($a1!==false){
return 2;
$a2=str_replace("$","",$veriarr[$a1
][1]);
}elseif($tam<5 &&
exad($ver)===true){//EXTENDIDO
if(prm_char($veriarr[$a1][1],'$')===
true && exad($a2)===true){
return 5;
return 1;
}else{
return false;
}
}
}else{return false;}
}else{return false;}
}
}//FIN
INMEDIATO
}elseif($f1!==false ||
$f2!==false){//RELATIVO
elseif($uno!==false){//DIRECTO Y
EXTENDIDO
if($f1!==false){
if(strpos($variarr[$f1][1],"$")!==fals
e && ($numne>127 && $numne<148)){
return 6;
return 7;
}elseif(exad($variarr[$f1][1])===tru
e && ($numne>127 && $numne<148)){
}elseif($numne>127 &&
$numne<148 && ($f2===false || $f1===false)){//relativo
return 7;
return 7;
}elseif(strpos($variarr[$f1][1],"$")!=
=false){
}else{
return 5;
return false;
}
}
}elseif($f2!==false){
if(!empty($etiarr[$f2][1])){
if(exad($etiarr[$f2][1])===true){
function Aster_fir($lineas){
return 7;
if(!empty($lineas)){
$tam=strlen($lineas);
$di=str_split($lineas);
$i=0;
$a=0;
for($i=0;$i<$tam;$i++){
}
return 7;
}
$ascii=ord($di[$i]);
}
if( $ascii==9
|| $ascii==32){
}elseif( $numne>54 &&
$numne<128 && ($f2===false ||
$f1===false)){//INHERENTE
$a++;
}
$hom1=dechex($hom);
$ascii==42){
if(strlen($hom1)<2){
return true;
}
$hom2="0".$hom1;
return
$hom2;
}
return $hom1;
}
}elseif(strpos($hom,"$")!==false){
$hom1=str_replace("$","",$hom);
function convexa($stn){
if(exad($hom1===true)){
$ascii=ord($stn);
if($ascii>32 && $ascii<256){
//QUITACEROS*****************
*
$mayus=dechex($ascii);
$mayus = strtoupper($mayus);
return $hom1;
}
return $mayus;
}else{
}elseif(strpos($hom,"'")!==false){
return false;
$hom1=str_replace("'","",$hom);
}
}
$hom2=convexa($hom1);
return $hom2;
}elseif($hum!==false){
function dir_memo($mdir,$dir,$variabl,$tama){
if(decimal($variabl[$hum][1])===tru
e){
if($mdir==1){//INMEDIATO
$hom=str_replace("#","",$dir);
$hom1=dechex($variabl[$hum][1]);
$hum=buscavar($variabl,$tama,$ho
m);
return $hom1;
$hom=str_replace("$","",$hun[0]);
}elseif(strpos("$",$variabl[$hum][1]
)!==false){
$hom1=str_replace("#$","",$hun[2]
);
$hum1=str_replace("$",$variabl[$h
um][1]);
if(strlen($hom)<3 &&
strlen($hom1)<3 && strlen($hom)>0 &&
strlen($hom1)>0 && exad($hom)===true &&
exad($hom1)===true){
if(strlen($hom)<2){$hom="0".$hom
;}
if(exad($hum1)===true){return
$hum1;}else{return false;}
if(strlen($hom1)<2){$hom1="0".$ho
m1;}
}//CON
'?*******************************
}else{return false;}
}elseif(!empty($hun[0]) &&
!empty($hun[1]) && empty($hum[2])){
}elseif($mdir==2){//DIRECTO
$hom=str_replace("$","",$hun[0]);
$hom=str_replace("$","",$dir);
if(strlen($hom)>0 &&
exad($hom)===true){
if(strlen($hom)<2){$hom="0".$hom;}
if(strlen($hom)<3 &&
strlen($hom)>0 && exad($hom)===true){
return
$hom;}else{return false;}
if(strlen($hom)<2){$hom="0".$hom
;}
}elseif($mdir==3){//INDEXADO
X
$hun=explode(",",$dir);
if(!empty($hun[0]) &&
!empty($hun[1]) && !empty($hun[2])){
return $hom;
if(strlen($hom)<2){$hom="0".$hom
}
;}
}elseif($mdir==4){//INDEXADO Y
return $hom;
$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)<3 &&
strlen($hom1)<3 && strlen($hom)>0 &&
strlen($hom1)>0 && exad($hom)===true &&
exad($hom1)===true){
}elseif($mdir==5){//EXTENDIDO
if(strlen($hom)<2){$hom="0".$hom
;}
$hum=buscavar($variabl,$tama,$dir
);
$hom=str_replace("$","",$dir);
if(strlen($hom1)<2){$hom1="0".$ho
m1;}
if($hum!==false){
$hum1=str_replace("$","",$variabl[
$hum][1]);
}elseif(!empty($hun[0]) &&
!empty($hun[1])){
if(prm_char($variabl[$hum][1],"$")
===true && exad($hum1)===true){
$hom=str_replace("$","",$hun[0]);
return $hum1;
}
if(strlen($hom)<3 &&
strlen($hom)>0 && exad($hom)===true){
}elseif(strlen($hom)>2 &&
exad($hom)===true){if(strlen($hom)<4){
$hom="0".$hom;}
if(strlen($hom)<2 ||
strlen($hom1)<2){
}elseif($mdir==6){//INHERENTE
return '';
if(strlen($hom)<2){$hom="0".$hom
;}
}elseif($mdir==7){//RELATIVO
$hum=buscavar($variabl,$tama,$dir);
if(strlen($hom1)<2){$hom1="0".$ho
$hom=str_replace("$","",$dir);
m1;}
$uju=hexdec($hom);
$hom.$hom1;
return
if(strlen($hom)>0 &&
strlen($hom)<3 && prm_char($dir,'$')===true){
}
return
if($uju<128){
$hom.$hom1;
return $hom;
}
return false;
}elseif(exad($dir)===true){return
$dir;}
}elseif($mdir==0){return false;}
}elseif($mdir==8){
$hun=explode(",",$dir);
}
if(!empty($hun[0]) &&
!empty($hun[1]) && empty($hum[2])){
$hom=str_replace("$","",$hun[0]);
function Etiquetas($archivo,$set){
$hom1=str_replace("$","",$hun[1]);
if((strlen($hom1)<3 &&
$incetiqueta=0;
$incvariable=0;
$inc=0;
$etiqueta[][]=' ';
$variable[][]=' ';
$ETI[]=' ';
$localidad=0x0000;
$a=0;
$varnem=" ";
$linea = fgets($fp);
$comen=strpos($linea,'*');
$coment=Aster_fir($linea);
$linarr=arr_linea($linea);
$fp=fopen($archivo,"rb");
if($coment===true){
//****************************
*******************************
while(!feof($fp)){
fprintf($fp1,"%d
A\t%s",$a,$linea);
}elseif($comen!==false){
$linex=explode("*",$linea);
$arrx=arr_linea($linex[0]);
$linea = fgets($fp);
$rx=explode(" ",$linea);
$wx=explode("\t",$linea);
$linarr=arr_linea($linea);
//****************************
**********OPCION DE LINEA COMPLETA
if(!empty($wx[0]) ||
$Nmonic=" ";
$Modir=" ";
$i=0;
$z=0;
$w=0;
$error1=0;
$r=0;
!empty($rx[0])){
if(!empty($linarr[0]) &&
empty($linarr[1])){
$ETI[$inc]=$linarr[0];
//ETIQUETA
while(!empty($arrx[$i])){
$inc++;
$Nemo=verifica_nem($arrx[$i],$set
);
}
}
}
fclose($fp);
$r++;///////////////************c
hange
//*********************************************
****************************
$fp1=fopen("pueva2.txt","a");
$fp=fopen($archivo,"rb");
while(!feof($fp)){
}elseif($arrx[$i]=="EQU"){//SI EQU
$z++;
}elseif($Nemo!==false){//SI
$a++;
NEMONICO
$Nmonic=verifica_nem($arrx[$i],$s
et);
$localidad=$localidad+2;
$w++;
}elseif(modo_dir($arrx[$i],$incvaria
ble,$variable,$etiqueta,$incetiqueta,$Nemo)!==false){
$Modir=modo_dir($arrx[$i],$incvari
able,$variable,$etiqueta,$incetiqueta,$Nemo);
}elseif($z==3){//****************
***************************DECLARACION DE
VARIABES
$Inst=dir_memo($Modir,$arrx[2],$v
ariable,$incvariable);
fprintf($fp1,"%d
A\t%s\t%s\tEQU\t%s\t*%s\r\n",$a,$Inst,$arrx[0],$arrx[2
],$linex[1]);
$w++;
$z++;
}elseif($Nemo===false){//SI NO HAY
$variable[$incvariable][0]=$arrx[0];
NEMONICO?
$z++;
$variable[$incvariable][1]=$arrx[2];
}else{ $error1++;}
$i++;
}//TERMINA
$incvariable++;
}elseif($w==2 &&
$Nmonic!==false){//**************************ORG
********NEMONICOS CON MODO DE DIRECCION
WHILE ARRX
$alpha=buscaeti($etiqueta,$a,$arrx
if(!empty($arrx[1])&&!empty($arrx[
[1]);
0])){$error1=1;}
if($error1==1 &&
e)
if(verifica_nem($arrx[0],$set)!==fals
{
$r!=1 &&
modo_dir($arrx[1],$incvariable,$variable,$etiqueta,$ince
tiqueta,$Nemo)===false &&
if($alpha!==false){
verifica_nem($arrx[0],$set)!==false
){
$Unix=$set[$Nmonic][5].dechex($e
tiqueta[$alpha][1]);
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
fprintf($fp1,"%d A
%X\t%s\t\t%s\t%s\t\r\n",$a,$localidad,$Unix,$arrx[0],$a
rrx[1]);
$localidad=$localidad+(strlen($Unix
))/2;
}elseif($arrx[0]=="FCB"){
$localidad=$localidad+(strlen($Unix
$Inst=dir_memo(8,$arrx[1],$variabl
))/2;
e,$incvariable);
$Unix=$Inst;
}elseif($set[$Nmonic][$Modir]=="0"
){
$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;
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{
}elseif($arrx[0]=="ORG"){$localidad
=dir_memo($Modir,$arrx[1],$variable,$incvariable);
fprintf($fp1,"%d A
%X\t\t\t%s\t%s\tERROR INCONSISTENCIA DE
DIRECCIONAMIENTO\r\n",$a,$localidad,$arry[0],$arry[1]
);
$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]);
}else{
$AROR=explode("\r\n",$linea);
$localidad=$localidad + 0x0000;
fprintf($fp1,"%d A
%X\t\t\t%s\t\tERROR\r\n",$a,$localidad,$AROR[0]);
}elseif($Nmonic!==false){
if($set[$Nmonic][$Modir]!="0"){////
/////////////////EXEPCION CHANGE
}
}
}elseif($w==1 &&
$Nmonic!==false &&
$z==0){//*****************END******NEMONICOS**
****INHERENTE
$Inst=dir_memo($Modir,$arrx[1],$v
ariable,$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]);
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]);
$localidad=$localidad+(strlen($Unix
SIN COMENTA
))/2;
}
}elseif($z==1 &&
verifica_nem($arrx[0],$set)===false){/////////////////////
*****ETIQUTASSSS****CHANGE
$arry=arr_linea($linea);
//****************************
**********OPCION DE LINEA COMPLETA
$rw=explode(" ",$linea);
$Nmonic=" ";
$Modir=" ";
$i=0;
$z=0;
$w=0;
$error1=0;
$r=0;
$zx=explode("\t",$linea);
if(!empty($zx[0]) &&
!empty($rw[0])){
while(!empty($arry[$i])){
$etiqueta[$incetiqueta][0]=$arrx[0]
; //ETIQUETA
$Nemo=verifica_nem($arry[$i],$set
);
$etiqueta[$incetiqueta][1]=$localid
ad; //LOCALIDAD ETIQUETA
if($Nemo>127 && $Nemo<148){
$incetiqueta++;
fprintf($fp1,"%d A
%X\t\t%s\t\t*%s\r\n",$a,$localidad,$arrx[0],$linex[1]);
$r++;///////////////************c
hange
}else{
}elseif($arry[$i]=="EQU"){//SI EQU
$z++;
$AROR=explode("\r\n",$linea);
}elseif($Nemo!==false){//SI
fprintf($fp1,"%d A
%X\t\t%s\t\tERROR\r\n",$a,$localidad,$AROR[0]);}
NEMONICO
$Nmonic=verifica_nem($arry[$i],$s
et);
$w++;
}//***************************
***********IF COMENTARIOS
}elseif(modo_dir($arry[$i],$incvaria
ble,$variable,$etiqueta,$incetiqueta,$Nemo)!==false){
//*****************************************SIN
COMENTASRIOS*********************************
****************
$Modir=modo_dir($arry[$i],$incvari
able,$variable,$etiqueta,$incetiqueta,$Nemo);
$w++;
$variable[$incvariable][0]=$arry[0];
$z++;
}elseif($Nemo===false){//SI NO HAY
$variable[$incvariable][1]=$arry[2];
NEMONICO?
$incvariable++;
}elseif($w==2 &&
$Nmonic!==false){//**************************ORG
********NEMONICOS CON MODO DE DIRECCION
$z++;
}else{ $error1++;}
$i++;
$alpha=B_eti($ETI,$arry[1]);
}//TERMINA
WHILE ARRX
if(!empty($arry[1])&&!empty($arry[
0])){$error1=1;}
e)
if($error1==1 &&
$r!=1 &&
modo_dir($arry[1],$incvariable,$variable,$etiqueta,$ince
tiqueta,$Nemo)===false &&
if(verifica_nem($arry[0],$set)!==fals
{
if($alpha!==false){
$Unix=$set[$Nmonic][5];//MAS 2
LOCALIDAES
verifica_nem($arry[0],$set)!==false
){
fprintf($fp1,"%d A
%X\t%s\t\t%s\t%s\t\r\n",$a,$localidad,$Unix,$arry[0],$a
rry[1]);
fprintf($fp1,"%d A %X\t\t\t%s\t%s\t\t1ERROR DE
SINTAXIS\r\n",$a,$localidad,$arry[0],$arry[1]);
$localidad=$localidad+(strlen($Unix
}elseif($r==1
)+4)/2;
&&
!empty($arry[1])){/////////////////////////////////////////
///***RELATIVO CHANGE
}elseif($arry[0]=="FCB"){
$Inst=dir_memo(8,$arry[1],$variabl
e,$incvariable);
$Unix=$Inst;
$localidad=$localidad+2;
$localidad=$localidad +
0x0000;
}elseif($z==3){//****************
***************************DECLARACION DE
VARIABES
fprintf($fp1,"%d A
%X\t%s\t\t%s\t%s\t\r\n",$a,$localidad,$Unix,$arry[0],$a
rry[1]);
$localidad=$localidad+(strlen($Unix
$Inst=dir_memo($Modir,$arry[2],$v
ariable,$incvariable);
fprintf($fp1,"%d
A\t%s\t%s\tEQU\t%s\r\n",$a,$Inst,$arry[0],$arry[2]);
))/2;
}elseif($arry[0]=="ORG"){$localidad
=dir_memo($Modir,$arry[1],$variable,$incvariable);
$localidad=hexdec($localidad);
$localidad=$localidad + 0x0000;
}else{
fprintf($fp1,"%d A
%X\t\t\t%s\t%s\tERROR INCONSISTENCIA DE
DIRECCIONAMIENTO\r\n",$a,$localidad,$arry[0],$arry[1]
);
fprintf($fp1,"%d A
%X\t\t\t%s\t%s\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($Nmonic!==false &&
$Modir!==false && !empty($set[$Nmonic][$Modir])){
if($set[$Nmonic][$Modir]!="0"){////
/////////////////EXEPCION CHANGE
}
}elseif($w==1 &&
$Nmonic!==false &&
$z==0){//*****************END******NEMONICOS**
****INHERENTE
$Inst=dir_memo($Modir,$arry[1],$v
ariable,$incvariable);
$Unix=$set[$Nmonic][$Modir].$Inst
;
if($Nmonic!==false &&
$set[$Nmonic][6]!="0"){
$localidad=$localidad + 0x0000;
fprintf($fp1,"%d A
%X\t%s\t\t%s\t%s\r\n",$a,$localidad,$Unix,$arry[0],$arr
y[1]);
$localidad=$localidad+(strlen($Unix
$Unix=$set[$Nmonic][6];
$localidad=$localidad + 0x0000;
fprintf($fp1,"%d A
%X\t%s\t\t%s\r\n",$a,$localidad,$Unix,$arry[0]);
))/2;
$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($z==1 &&
verifica_nem($arry[0],$set)===false){/////////////////////
*****ETIQUTASSSS****CHANGE
$rw=explode(" ",$linea);
}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]
);
}
$zx=explode("\t",$linea);
if(!empty($zx[0]) &&
!empty($rw[0])){
$etiqueta[$incetiqueta][0]=$arry[0]
; //ETIQUETA
$etiqueta[$incetiqueta][1]=$localid
ad; //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
?>