Sie sind auf Seite 1von 29

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"]=="fo
rm1")){
$incetiqueta=0;
$incvariable=0;
$etiqueta[][]=' ';
$variable[][]=' ';
$localidad=0x0000;
$a=0;
$varnem=" ";
$fileS="68hc11compila.lst";

$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]);

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

}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++;

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras

$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]);

Prez Gonzlez Josu Abraham


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]);

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],$locali
dad,$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;

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

}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

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras

$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){

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras

}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;

Prez Gonzlez Josu Abraham

}elseif($arry[0]=="FCB"){

Programacin y estructura de computadoras


fprintf($fp1,"%d A
%s\t%s\t\t%X\tERROR INCONSISTENCIA DE
DIRECCIONAMIENTO\r\n",$a,$arry[0],$arry[1],$localidad
);

$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
){

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras

}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);

}//FIN WHILE READ


fclose($fp);
fclose($fp1);

}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"),

Prez Gonzlez Josu Abraham


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"),

Programacin y estructura de computadoras


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"),
);

$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;

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras

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){

if($a > -1){


$a=-

$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]);

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras

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;}

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras

if( ($ascii>47 && $ascii<58) ||

$a1=0;
$i=0;
for($i=0;$i<$tam;$i++){
$a1++;
if($arrvar[$i][0]==$val){

($ascii>64 && $ascii<71)){


$var++;
}
$i++;
}

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){

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras

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

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras

$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){

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras

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++;
}

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras


if(decimal($hom)===true){
if($a==$i &&

$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;

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras

$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;}

return $hom . $hom1 ;}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;

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras

}else{ return false; }

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]);

}else{ return false; }

$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){

return $hom . $hom1 ;}else{return


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 &&

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras

exad($hom)===true){if(strlen($hom)<4){
$hom="0".$hom;}

strlen($hom1)>0) && (strlen($hom)<3 &&


strlen($hom)>0)){

return $hom; }else{return false;}

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

}else{ return false; }

$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;

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras

$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);

if($Nemo>127 && $Nemo<148){

$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

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras

$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"){

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras

$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]);

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras


}elseif($comen===false){/////IF

$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);

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras

$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;

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;

}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])){

Prez Gonzlez Josu Abraham

Programacin y estructura de computadoras

$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

?>

Das könnte Ihnen auch gefallen