martes, 17 de abril de 2018
Ejemplo de procedimientos almacenados :loop
CREATE DEFINER=`root`@`localhost` PROCEDURE `lolop`(in num int)
BEGIN
DECLARE x INT;
SET x = 0;
loop_label: LOOP
insert into editoriales (nombre_edi)
values (rand());
SET x = x + 1;
IF x >= num
THEN
LEAVE loop_label;
END IF;
END LOOP;
END
lunes, 16 de abril de 2018
Ejemplos de procediemientos almacenados
CREATE DEFINER=`root`@`localhost` PROCEDURE `PROCESOS_alumnos`(in _numcon int,
in _nombreA varchar(10),
in _apellidoP varchar(10),
in _apellidoM varchar(10),
in _correo varchar(20),
in accion varchar(20))
BEGIN
case accion
when "nuevo" then
insert into alumnos(num_control,Nombre_A,apellido_p,apellido_m,correo)
values (_numcon,_nombreA,_apellidoP,_apellidoM,_correo);
when "editar" then
update alumnos set
Nombre_A=_nombreA ,apellido_p=_apellidoP,apellido_m=_apellidoM,correo=_correo
where num_control=_numcon;
when "eliminar" then
delete from alumnos where num_control=_numcon;
when "consultar" then
select *from alumnos where num_control=_numcon;
end case;
END
Ejemplo delete
CREATE DEFINER=`root`@`localhost` PROCEDURE `delete_procedure`(in hj int)
BEGIN
delete from editoriales where ideditoriales=hj;
END
Ejemplo insert
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_procedure`(in vg varchar(10))
BEGIN
insert into editoriales (nombre_edi)
values (vg);
END
Ejemplo select 1
CREATE DEFINER=`root`@`localhost` PROCEDURE `mostrartodo_procedure`()
BEGIN
select * from editoriales;
END
Ejemplo select 2
CREATE DEFINER=`root`@`localhost` PROCEDURE `select_procedure`(in hj int)
BEGIN
select * from editoriales where ideditoriales=hj;
END
Ejemplo update
CREATE DEFINER=`root`@`localhost` PROCEDURE `update_procedure`(in vh int , in th varchar(19))
BEGIN
update editoriales
set nombre_edi= th where ideditoriales=vh;
END
in _nombreA varchar(10),
in _apellidoP varchar(10),
in _apellidoM varchar(10),
in _correo varchar(20),
in accion varchar(20))
BEGIN
case accion
when "nuevo" then
insert into alumnos(num_control,Nombre_A,apellido_p,apellido_m,correo)
values (_numcon,_nombreA,_apellidoP,_apellidoM,_correo);
when "editar" then
update alumnos set
Nombre_A=_nombreA ,apellido_p=_apellidoP,apellido_m=_apellidoM,correo=_correo
where num_control=_numcon;
when "eliminar" then
delete from alumnos where num_control=_numcon;
when "consultar" then
select *from alumnos where num_control=_numcon;
end case;
END
Ejemplo delete
CREATE DEFINER=`root`@`localhost` PROCEDURE `delete_procedure`(in hj int)
BEGIN
delete from editoriales where ideditoriales=hj;
END
Ejemplo insert
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_procedure`(in vg varchar(10))
BEGIN
insert into editoriales (nombre_edi)
values (vg);
END
Ejemplo select 1
CREATE DEFINER=`root`@`localhost` PROCEDURE `mostrartodo_procedure`()
BEGIN
select * from editoriales;
END
Ejemplo select 2
CREATE DEFINER=`root`@`localhost` PROCEDURE `select_procedure`(in hj int)
BEGIN
select * from editoriales where ideditoriales=hj;
END
Ejemplo update
CREATE DEFINER=`root`@`localhost` PROCEDURE `update_procedure`(in vh int , in th varchar(19))
BEGIN
update editoriales
set nombre_edi= th where ideditoriales=vh;
END
sábado, 14 de abril de 2018
ejemplo 3-Macros- Multiplicacion de numeros de 2 digitos
; You may customize this and other start-up templates;
; The location of this template is c:\emu8086\inc\0_com_template.txt
;Eduardo Pablo Aquino Sanchez
org 100h
multi macro chra,chrb,chrx,chr3,chr2,chr1
mov al,chra ;al = chr4
mov bl,chrb ;bl = chr2
mul bl ;AL = chr3*chr2 (BL*AL)
mov Ah,0h ;
AAM ;ASCII Adjusment
mov ac,AH ;ac = AH (Acarreo)
mov r2,AL ;r2 = AL (Unidad del resultado)
mov al,chra ;AL = chr4
mov bl,chrx ;BL = chr1
mul bl ;AL = chr1*chr3 (BL*AL)
mov r1,al ;r1 = AL (Decena del resultado)
mov bl,ac ;BL = Acarreo anterior
add r1,bl ;r1 = r1+ac (r1 + Acarreo)
mov ah,00h ;
mov al,r1 ;AL = r1 (Asignaci?n para el ajust)
AAM ;ASCII Adjustment
mov r1,al ;r1 = AL
mov ac,ah ;ac = AH (Acarreo para la Centena del resultado)
mov al,chr3 ;al = chr3
mov bl,chr2 ;bl = chr2
mul bl ;AL = chr3*chr2 (BL*AL)
AAM ;ASCII Adjusment
mov ac2,AH ;ac2 = AH (Acarreo)
mov r4,AL ;r4 = AL (Unidad del resultado)
mov al,chr3 ;AL = chr3
mov bl,chr1 ;BL = chr1
mul bl ;AL = chr1*chr3 (BL*AL)
mov r3,al ;r3 = AL (Decena del resultado)
mov bl,ac2 ;BL = Acarreo anterior
add r3,bl ;r3 = r1+ac (r1 + Acarreo)
mov ah,00h ;
mov al,r3 ;AL = r3(Asignaci?n para el ajust)
AAM ;ASCII Adjustment
mov r3,al ;r3 = AL
mov ac2,ah ;ac2 = AH (Acarreo para la Centena del resultado)
endm
suma macro r1_,r4_,ac_,r3_,ac2_
mov al,r1_;=9 ;99
mov bl,r4_;=1 ;x99
add al,bl ;----------------
aAm ;891
mov r1,al;=00 ;891
mov r4,ah;=01 ;------------------------
; 8901
mov al,ac_;=8
mov bl,r3_;=9
add al,bl
add al,r4
aAm
mov ac,al;=8
mov r3,ah;=1
mov al,ac2_;=8
mov bl,r3;=1
add al,bl
aAm
mov ac2,al;=09
mov r3,ah;=0
endm
imprime macro ac2_,ac_,r1_,r2_
mov ah,02h
mov dl,ac2_
add dl,30h
int 21h ;Mostramos ac (millar)
mov ah,02H
mov dl,ac_
add dl,30h
int 21h ;Mostramos r1 (centena)
mov ah,02H
mov dl,r1_
add dl,30h
int 21h ;Mostramos r2 (decena)
mov ah,02H
mov dl,r2_
add dl,30h
int 21h ;Mostramos r2 (Unidad)
endm
.model small ;Modelo de memoria m?s utilizado
.stack
.data ;definición de datos(variables), donde se almacenara información
chr1 db ?
chr2 db ?
chr3 db ?
chr4 db ?
r1 db ?
r2 db ?
r3 db ?
r4 db ?
ac db 0
ac2 db 0
aca db 0
aca2 db 0
.code
.startup
mov ax,@data ;almacenamos lo que esta en el segento data
mov ds,ax ;movemos ax a ds
mov ah,00h ;Function(Set video mode)
mov al,03 ;Mode 80x25 8x8 16
int 10h ;Interruption Video
mov ah,01h ;Function(character read)
int 21h ;Interruption DOS functions
sub al,30h ;ajustamos valores
mov chr1,al ;[chr1].chr2 * chr3 = ac.r1.r2
mov ah,01h ;Function(character read)
int 21h ;Interruption DOS functions
sub al,30h ;Ajustamos valores
mov chr2,al ;chr1.[chr2] * chr3 = ac.r1.r2
mov ah,02h ;Function(character to send to standard output)
mov dl,'*' ;Character to show
int 21h
mov ah,01h ;Function(Read character)
int 21h ;Interruption DOS Functions
sub al,30h ;Transform(0dec = 30hex)
mov chr3,al ;chr1.chr2 * [chr3] = ac.r1.r2
mov ah,01h ;Function(Read character)
int 21h ;Interruption DOS Functions
sub al,30h ;Transform(0dec = 30hex)
mov chr4,al ;chr1.chr2 * [chr3] = ac.r1.r2
mov ah,02h ;Character to send to standar output
mov dl,'=' ;
int 21h ;Interruption DOS functions
;Realizamos operaci?n
;parte 1 multiplicar
multi chr4,chr2,chr1,chr3,chr2,chr1
;parte 3 Suma de los resultados
suma r1,r4,ac,r3,ac2
;Mostramos resultado
imprime ac2,ac,r1,r2
.exit
end
; The location of this template is c:\emu8086\inc\0_com_template.txt
;Eduardo Pablo Aquino Sanchez
org 100h
multi macro chra,chrb,chrx,chr3,chr2,chr1
mov al,chra ;al = chr4
mov bl,chrb ;bl = chr2
mul bl ;AL = chr3*chr2 (BL*AL)
mov Ah,0h ;
AAM ;ASCII Adjusment
mov ac,AH ;ac = AH (Acarreo)
mov r2,AL ;r2 = AL (Unidad del resultado)
mov al,chra ;AL = chr4
mov bl,chrx ;BL = chr1
mul bl ;AL = chr1*chr3 (BL*AL)
mov r1,al ;r1 = AL (Decena del resultado)
mov bl,ac ;BL = Acarreo anterior
add r1,bl ;r1 = r1+ac (r1 + Acarreo)
mov ah,00h ;
mov al,r1 ;AL = r1 (Asignaci?n para el ajust)
AAM ;ASCII Adjustment
mov r1,al ;r1 = AL
mov ac,ah ;ac = AH (Acarreo para la Centena del resultado)
mov al,chr3 ;al = chr3
mov bl,chr2 ;bl = chr2
mul bl ;AL = chr3*chr2 (BL*AL)
AAM ;ASCII Adjusment
mov ac2,AH ;ac2 = AH (Acarreo)
mov r4,AL ;r4 = AL (Unidad del resultado)
mov al,chr3 ;AL = chr3
mov bl,chr1 ;BL = chr1
mul bl ;AL = chr1*chr3 (BL*AL)
mov r3,al ;r3 = AL (Decena del resultado)
mov bl,ac2 ;BL = Acarreo anterior
add r3,bl ;r3 = r1+ac (r1 + Acarreo)
mov ah,00h ;
mov al,r3 ;AL = r3(Asignaci?n para el ajust)
AAM ;ASCII Adjustment
mov r3,al ;r3 = AL
mov ac2,ah ;ac2 = AH (Acarreo para la Centena del resultado)
endm
suma macro r1_,r4_,ac_,r3_,ac2_
mov al,r1_;=9 ;99
mov bl,r4_;=1 ;x99
add al,bl ;----------------
aAm ;891
mov r1,al;=00 ;891
mov r4,ah;=01 ;------------------------
; 8901
mov al,ac_;=8
mov bl,r3_;=9
add al,bl
add al,r4
aAm
mov ac,al;=8
mov r3,ah;=1
mov al,ac2_;=8
mov bl,r3;=1
add al,bl
aAm
mov ac2,al;=09
mov r3,ah;=0
endm
imprime macro ac2_,ac_,r1_,r2_
mov ah,02h
mov dl,ac2_
add dl,30h
int 21h ;Mostramos ac (millar)
mov ah,02H
mov dl,ac_
add dl,30h
int 21h ;Mostramos r1 (centena)
mov ah,02H
mov dl,r1_
add dl,30h
int 21h ;Mostramos r2 (decena)
mov ah,02H
mov dl,r2_
add dl,30h
int 21h ;Mostramos r2 (Unidad)
endm
.model small ;Modelo de memoria m?s utilizado
.stack
.data ;definición de datos(variables), donde se almacenara información
chr1 db ?
chr2 db ?
chr3 db ?
chr4 db ?
r1 db ?
r2 db ?
r3 db ?
r4 db ?
ac db 0
ac2 db 0
aca db 0
aca2 db 0
.code
.startup
mov ax,@data ;almacenamos lo que esta en el segento data
mov ds,ax ;movemos ax a ds
mov ah,00h ;Function(Set video mode)
mov al,03 ;Mode 80x25 8x8 16
int 10h ;Interruption Video
mov ah,01h ;Function(character read)
int 21h ;Interruption DOS functions
sub al,30h ;ajustamos valores
mov chr1,al ;[chr1].chr2 * chr3 = ac.r1.r2
mov ah,01h ;Function(character read)
int 21h ;Interruption DOS functions
sub al,30h ;Ajustamos valores
mov chr2,al ;chr1.[chr2] * chr3 = ac.r1.r2
mov ah,02h ;Function(character to send to standard output)
mov dl,'*' ;Character to show
int 21h
mov ah,01h ;Function(Read character)
int 21h ;Interruption DOS Functions
sub al,30h ;Transform(0dec = 30hex)
mov chr3,al ;chr1.chr2 * [chr3] = ac.r1.r2
mov ah,01h ;Function(Read character)
int 21h ;Interruption DOS Functions
sub al,30h ;Transform(0dec = 30hex)
mov chr4,al ;chr1.chr2 * [chr3] = ac.r1.r2
mov ah,02h ;Character to send to standar output
mov dl,'=' ;
int 21h ;Interruption DOS functions
;Realizamos operaci?n
;parte 1 multiplicar
multi chr4,chr2,chr1,chr3,chr2,chr1
;parte 3 Suma de los resultados
suma r1,r4,ac,r3,ac2
;Mostramos resultado
imprime ac2,ac,r1,r2
.exit
end
miércoles, 11 de abril de 2018
Ejemplo macros 2-modificado
; You may customize this and other start-up templates;
; The location of this template is c:\emu8086\inc\0_com_template.txt
org 100h
gotoxy macro fila,col ;macro que pone el cursor en la posicion deseada
mov ah,02h ;funcion imprimir caracter
mov dh,fila ;ingresamos la coordenada de x
mov dl,col ;ingresamos la coordenada de y
mov bh,0h ;numero de pagina
int 10h ;interrupcion
endm ;fin del macro
pantalla macro que ;macro que imprime el primer caracter de la palabra escrita
mov ah,02h ;funcion imprimir caracter
mov dl,offset que ;ponemos el mensaje en dl
int 21h ;interrupcion
endm ;fin del macro
imprime macro eztryng ;macro que imprime los mensajes que le enviemos
mov dx,offset eztryng ;ponemos elmensaje en dx
mov ah,9 ;funcion imprimir variable
int 21h ;interrupcion
endm ;fin del macro
.data ;segmento de datos con variables
mensaje DB "INGRESE UN CARACTER: ",13,10,"$"
mensaje2 DB "INGRESE X del 0 al 9: ",13,10,"$"
mensaje3 DB "INGRESE Y del 0 al 9: ",13,10,"$"
mensaje4 DB "Que letra quieres",13,10,"$"
caracter DB ?
varx DB ?
vary DB ?
vaa db 0
vtext db 100 dup('$') ;Declaracion del vector
.code ;segmento de codigo
startup: ;funcion de inicio
mov ax,@data ;almacenamos lo que esta en el segento data
mov ds,ax ;movemos ax a ds
imprime mensaje ;llamamos al macro imprime y le enviamos la variable mensaje
mov si,00h ;limpiamos el registro si
mov caracter,0 ;limpiamos la variable caracter
leer: ;inicio de la funcion leer
mov ax,0000 ;limpiamos ax
mov ah,01h ;fincion de ingreso de caracter con impresion del mismo en pantalla
int 21h ;interrupcion
mov caracter[si],al ;ponemos el caracter tecleado en el arreglo caracter
inc si ;incrementamos si
cmp al,0dh ;comparamos al=salto de linea
ja leer ;de no ser igual repite la funcion leer para ingresar otro caracter
jb leer ;en caso de que al=salto de linea continua el programa
;mov cx,si
mov ah,02h ;funcion imprimir caracter
mov dl,10 ;imprimimos un salto de linea
int 21h ;interrupcion
imprime caracter ;llamamos al macro imprime y le enviamos la variable caracter
mov ah,02h ;funcion imprime caracter
mov dl,10 ;imprimimos un salto de linea
int 21h ;interrupcion
imprime mensaje2 ;llamamos al macro imprime y le enviamos la variable mensaje2
mov ax,0000 ;limpiamos ax
mov ah,01h ;fincion de ingreso de caracter con impresion del mismo en pantalla
int 21h ;interrupcion
sub al,30h ;le restamos 30h al caracter ingresado para transformarlo en un numero
mov bl,al ;ponemos el numero en bl
mov varx,al ;ponemos el numero en varx
imprime mensaje3 ;llamamos al macro imprime y le enviamos la variable mensaje3
mov ah,01h ;fincion de ingreso de caracter con impresion del mismo en pantalla
int 21h ;interrupcion
sub al,30h ;le restamos 30h al caracter ingresado para transformarlo en un numero
mov bl,al ;ponemos el numero en bl
mov vary,al ;ponemos el numero en vary
mov ax,0003h ;funcion que limpia la pantalla
int 10h ;interrupcion
imprime mensaje4
mov ah,01h ;fincion de ingreso de caracter con impresion del mismo en pantalla
int 21h ;interrupcion
sub al,30h ;le restamos 30h al caracter ingresado para transformarlo en un numero
gotoxy vary,varx ;llamamos al macro gotoxy y le enviamos las variables vary y varx
mov ah,00 ;limpiamos la parte alta de ax
mov si,ax ;ingresamos en si la posicion del caracter que deseamos imprimir
;kol:
pantalla caracter[si] ;llamamos al macro pantalla y le enviamos el caracter en la posicion deseada
;inc si
;loop kol
mov ah,01h ;funcion de captura con impresion en pantalla
int 21h ;interrupcion
mov ax,4c00h ;funcion de fin
int 21h ;interrupcion
end startup ;fin
martes, 10 de abril de 2018
jueves, 15 de marzo de 2018
Multiplicacion de numeros de 2 cifras emu8086
; You may customize this and other start-up templates;
; The location of this template is c:\emu8086\inc\0_com_template.txt
;Eduardo Pablo Aquino Sanchez
org 100h
.model small ;Modelo de memoria m?s utilizado
.stack
.data ;definición de datos(variables), donde se almacenara información
.code
chr1 db ?
chr2 db ?
chr3 db ?
chr4 db ?
r1 db ?
r2 db ?
r3 db ?
r4 db ?
ac db 0
ac2 db 0
aca db 0
aca2 db 0
.startup
;cls
mov ah,00h ;Function(Set video mode)
mov al,03 ;Mode 80x25 8x8 16
int 10h ;Interruption Video
mov ah,01h ;Function(character read)
int 21h ;Interruption DOS functions
sub al,30h ;ajustamos valores
mov chr1,al ;[chr1].chr2 * chr3 = ac.r1.r2
mov ah,01h ;Function(character read)
int 21h ;Interruption DOS functions
sub al,30h ;Ajustamos valores
mov chr2,al ;chr1.[chr2] * chr3 = ac.r1.r2
mov ah,02h ;Function(character to send to standard output)
mov dl,'*' ;Character to show
int 21h
mov ah,01h ;Function(Read character)
int 21h ;Interruption DOS Functions
sub al,30h ;Transform(0dec = 30hex)
mov chr3,al ;chr1.chr2 * [chr3] = ac.r1.r2
mov ah,01h ;Function(Read character)
int 21h ;Interruption DOS Functions
sub al,30h ;Transform(0dec = 30hex)
mov chr4,al ;chr1.chr2 * [chr3] = ac.r1.r2
mov ah,02h ;Character to send to standar output
mov dl,'=' ;
int 21h ;Interruption DOS functions
;Realizamos operaci?n
;parte 1 multiplicar el primer digito del segundo numero por todo el primer numero
mov al,chr4 ;al = chr4
mov bl,chr2 ;bl = chr2
mul bl ;AL = chr3*chr2 (BL*AL)
mov Ah,0h ;
AAM ;ASCII Adjusment
mov ac,AH ;ac = AH (Acarreo)
mov r2,AL ;r2 = AL (Unidad del resultado)
mov al,chr4 ;AL = chr4
mov bl,chr1 ;BL = chr1
mul bl ;AL = chr1*chr3 (BL*AL)
mov r1,al ;r1 = AL (Decena del resultado)
mov bl,ac ;BL = Acarreo anterior
add r1,bl ;r1 = r1+ac (r1 + Acarreo)
mov ah,00h ;
mov al,r1 ;AL = r1 (Asignaci?n para el ajust)
AAM ;ASCII Adjustment
mov r1,al ;r1 = AL
mov ac,ah ;ac = AH (Acarreo para la Centena del resultado)
;parte 2 multiplicar el segundo digito de el segundo numero por todo el primer numero
mov al,chr3 ;al = chr3
mov bl,chr2 ;bl = chr2
mul bl ;AL = chr3*chr2 (BL*AL)
AAM ;ASCII Adjusment
mov ac2,AH ;ac2 = AH (Acarreo)
mov r4,AL ;r4 = AL (Unidad del resultado)
mov al,chr3 ;AL = chr3
mov bl,chr1 ;BL = chr1
mul bl ;AL = chr1*chr3 (BL*AL)
mov r3,al ;r3 = AL (Decena del resultado)
mov bl,ac2 ;BL = Acarreo anterior
add r3,bl ;r3 = r1+ac (r1 + Acarreo)
mov ah,00h ;
mov al,r3 ;AL = r3(Asignaci?n para el ajust)
AAM ;ASCII Adjustment
mov r3,al ;r3 = AL
mov ac2,ah ;ac2 = AH (Acarreo para la Centena del resultado)
;parte 3 Suma de los resultados
mov al,r1;=9 ;99
mov bl,r4;=1 ;x99
add al,bl ;----------------
aAm ;891
mov r1,al;=00 ;891
mov r4,ah;=01 ;------------------------
; 8901
mov al,ac;=8
mov bl,r3;=9
add al,bl
add al,r4
aAm
mov ac,al;=8
mov r3,ah;=1
mov al,ac2;=8
mov bl,r3;=1
add al,bl
aAm
mov ac2,al;=09
mov r3,ah;=0
;Mostramos resultado
mov ah,02h
mov dl,ac2
add dl,30h
int 21h ;Mostramos ac (millar)
mov ah,02H
mov dl,ac
add dl,30h
int 21h ;Mostramos r1 (centena)
mov ah,02H
mov dl,r1
add dl,30h
int 21h ;Mostramos r2 (decena)
mov ah,02H
mov dl,r2
add dl,30h
int 21h ;Mostramos r2 (Unidad)
.exit
end
; The location of this template is c:\emu8086\inc\0_com_template.txt
;Eduardo Pablo Aquino Sanchez
org 100h
.model small ;Modelo de memoria m?s utilizado
.stack
.data ;definición de datos(variables), donde se almacenara información
.code
chr1 db ?
chr2 db ?
chr3 db ?
chr4 db ?
r1 db ?
r2 db ?
r3 db ?
r4 db ?
ac db 0
ac2 db 0
aca db 0
aca2 db 0
.startup
;cls
mov ah,00h ;Function(Set video mode)
mov al,03 ;Mode 80x25 8x8 16
int 10h ;Interruption Video
mov ah,01h ;Function(character read)
int 21h ;Interruption DOS functions
sub al,30h ;ajustamos valores
mov chr1,al ;[chr1].chr2 * chr3 = ac.r1.r2
mov ah,01h ;Function(character read)
int 21h ;Interruption DOS functions
sub al,30h ;Ajustamos valores
mov chr2,al ;chr1.[chr2] * chr3 = ac.r1.r2
mov ah,02h ;Function(character to send to standard output)
mov dl,'*' ;Character to show
int 21h
mov ah,01h ;Function(Read character)
int 21h ;Interruption DOS Functions
sub al,30h ;Transform(0dec = 30hex)
mov chr3,al ;chr1.chr2 * [chr3] = ac.r1.r2
mov ah,01h ;Function(Read character)
int 21h ;Interruption DOS Functions
sub al,30h ;Transform(0dec = 30hex)
mov chr4,al ;chr1.chr2 * [chr3] = ac.r1.r2
mov ah,02h ;Character to send to standar output
mov dl,'=' ;
int 21h ;Interruption DOS functions
;Realizamos operaci?n
;parte 1 multiplicar el primer digito del segundo numero por todo el primer numero
mov al,chr4 ;al = chr4
mov bl,chr2 ;bl = chr2
mul bl ;AL = chr3*chr2 (BL*AL)
mov Ah,0h ;
AAM ;ASCII Adjusment
mov ac,AH ;ac = AH (Acarreo)
mov r2,AL ;r2 = AL (Unidad del resultado)
mov al,chr4 ;AL = chr4
mov bl,chr1 ;BL = chr1
mul bl ;AL = chr1*chr3 (BL*AL)
mov r1,al ;r1 = AL (Decena del resultado)
mov bl,ac ;BL = Acarreo anterior
add r1,bl ;r1 = r1+ac (r1 + Acarreo)
mov ah,00h ;
mov al,r1 ;AL = r1 (Asignaci?n para el ajust)
AAM ;ASCII Adjustment
mov r1,al ;r1 = AL
mov ac,ah ;ac = AH (Acarreo para la Centena del resultado)
;parte 2 multiplicar el segundo digito de el segundo numero por todo el primer numero
mov al,chr3 ;al = chr3
mov bl,chr2 ;bl = chr2
mul bl ;AL = chr3*chr2 (BL*AL)
AAM ;ASCII Adjusment
mov ac2,AH ;ac2 = AH (Acarreo)
mov r4,AL ;r4 = AL (Unidad del resultado)
mov al,chr3 ;AL = chr3
mov bl,chr1 ;BL = chr1
mul bl ;AL = chr1*chr3 (BL*AL)
mov r3,al ;r3 = AL (Decena del resultado)
mov bl,ac2 ;BL = Acarreo anterior
add r3,bl ;r3 = r1+ac (r1 + Acarreo)
mov ah,00h ;
mov al,r3 ;AL = r3(Asignaci?n para el ajust)
AAM ;ASCII Adjustment
mov r3,al ;r3 = AL
mov ac2,ah ;ac2 = AH (Acarreo para la Centena del resultado)
;parte 3 Suma de los resultados
mov al,r1;=9 ;99
mov bl,r4;=1 ;x99
add al,bl ;----------------
aAm ;891
mov r1,al;=00 ;891
mov r4,ah;=01 ;------------------------
; 8901
mov al,ac;=8
mov bl,r3;=9
add al,bl
add al,r4
aAm
mov ac,al;=8
mov r3,ah;=1
mov al,ac2;=8
mov bl,r3;=1
add al,bl
aAm
mov ac2,al;=09
mov r3,ah;=0
;Mostramos resultado
mov ah,02h
mov dl,ac2
add dl,30h
int 21h ;Mostramos ac (millar)
mov ah,02H
mov dl,ac
add dl,30h
int 21h ;Mostramos r1 (centena)
mov ah,02H
mov dl,r1
add dl,30h
int 21h ;Mostramos r2 (decena)
mov ah,02H
mov dl,r2
add dl,30h
int 21h ;Mostramos r2 (Unidad)
.exit
end
martes, 13 de marzo de 2018
Resumen de la unidad 2 :Arquitectura de un gestor de bases de datos
ESTRUCTURA DE LA MEMORIA:
Es la estructura de memoria compartida que contienen datos e información de control para una
instancia de una base de datos, cada instancia tiene sus propias estructuras de memoria y se
localiza en la memoria virtual del computador. Las estructuras de memoria se denominan System
Global Area (SGA) la cual es un área compartida por todos los usuarios y se divide en tres partes:
Arear de Memoria rápida (Dtabase buffer cache): mantiene los bloques de datos leídos
directamente de los archivos de datos. Cuando se procesa una consulta, el servidor busca los
bloques de datos requeridos en esta estructura. Si no se encuentra, el proceso servidor lee el
bloque de la memoria secundaria y coloca una copia. Está organizada en dos listas:
– Lista de sucios: bloques que han sufrido modificaciones y no han sido escritos en disco.
– Lista de menos recientemente usados: mantiene los bloques libres, los bloques a los que se
está accediendo actualmente y los bloques sucios que aún no han sido remitidos a la lista
de sucios.
Área de registro de rehacer (Redo log buffer): es un buffer circular que mantiene todos los
cambios que han sido realizados sobre la base de datos por operaciones de insert, update,
delete, create, alter y drop. Las entradas de este buffer contienen toda la información
necesaria para reconstruir los cambios realizados a la base de datos por medio de cualquier
instrucción (el bloque que ha sido cambiado, la posición de cambio y el nuevo valor). El uso es
estrictamente secuencial.
Shared Pool: es una caché que mejora el rendimiento ya que almacena parte del diccionario de datos y el parsing de algunas consultas en SQL.
En esta zona se encuentran las sentencias SQL que han sido analizadas. El análisis sintáctico de las sentencias SQL lleva su tiempo y Oracle mantiene las estructuras asociadas a cada sentencia SQL analizada durante el tiempo que pueda para ver si puede reutilizarlas.
Antes de analizar una sentencia SQL, Oracle mira a ver si encuentra otra sentencia exactamente igual en la zona de SQL compartido. Si es así, no la analiza y pasa directamente a ejecutar la que mantiene en memoria. De esta manera se premia la uniformidad en la programación de las aplicaciones. La igualdad se entiende que es lexicográfica, espacios en blanco y variables incluidas.
La base de datos Oracle asigna memoria a la shared pool cuando una nueva instrucción sql se analiza. El tamaño de esta memoria depende de la complejidad de la instrucción. Si toda la shared pool ya ha sido asignada la base de datos Oracle puede liberar elementos de la shared pool hasta que haya suficiente espacio libre para nuevas sentencias. Al liberar un elemento de la shared pool el sql asociado debe ser recompilado y reasignado a otra área de sql compartida la próxima vez que se ejecute.
El contenido de la zona de SQL compartido es:
Es la estructura de memoria compartida que contienen datos e información de control para una
instancia de una base de datos, cada instancia tiene sus propias estructuras de memoria y se
localiza en la memoria virtual del computador. Las estructuras de memoria se denominan System
Global Area (SGA) la cual es un área compartida por todos los usuarios y se divide en tres partes:
Arear de Memoria rápida (Dtabase buffer cache): mantiene los bloques de datos leídos
directamente de los archivos de datos. Cuando se procesa una consulta, el servidor busca los
bloques de datos requeridos en esta estructura. Si no se encuentra, el proceso servidor lee el
bloque de la memoria secundaria y coloca una copia. Está organizada en dos listas:
– Lista de sucios: bloques que han sufrido modificaciones y no han sido escritos en disco.
– Lista de menos recientemente usados: mantiene los bloques libres, los bloques a los que se
está accediendo actualmente y los bloques sucios que aún no han sido remitidos a la lista
de sucios.
Área de registro de rehacer (Redo log buffer): es un buffer circular que mantiene todos los
cambios que han sido realizados sobre la base de datos por operaciones de insert, update,
delete, create, alter y drop. Las entradas de este buffer contienen toda la información
necesaria para reconstruir los cambios realizados a la base de datos por medio de cualquier
instrucción (el bloque que ha sido cambiado, la posición de cambio y el nuevo valor). El uso es
estrictamente secuencial.
Shared Pool: es una caché que mejora el rendimiento ya que almacena parte del diccionario de datos y el parsing de algunas consultas en SQL.
En esta zona se encuentran las sentencias SQL que han sido analizadas. El análisis sintáctico de las sentencias SQL lleva su tiempo y Oracle mantiene las estructuras asociadas a cada sentencia SQL analizada durante el tiempo que pueda para ver si puede reutilizarlas.
Antes de analizar una sentencia SQL, Oracle mira a ver si encuentra otra sentencia exactamente igual en la zona de SQL compartido. Si es así, no la analiza y pasa directamente a ejecutar la que mantiene en memoria. De esta manera se premia la uniformidad en la programación de las aplicaciones. La igualdad se entiende que es lexicográfica, espacios en blanco y variables incluidas.
La base de datos Oracle asigna memoria a la shared pool cuando una nueva instrucción sql se analiza. El tamaño de esta memoria depende de la complejidad de la instrucción. Si toda la shared pool ya ha sido asignada la base de datos Oracle puede liberar elementos de la shared pool hasta que haya suficiente espacio libre para nuevas sentencias. Al liberar un elemento de la shared pool el sql asociado debe ser recompilado y reasignado a otra área de sql compartida la próxima vez que se ejecute.
El contenido de la zona de SQL compartido es:
-
- Las sentencias SQL y PL/SQL (texto de la sentencia)
- Plan de ejecución de la sentencia SQL.
- Lista de objetos referenciados.
-
- Comprobar si la sentencia se encuentra en el área compartida.
- Comprobar si los objetos referenciados son los mismos.
- Comprobar si el usuario tiene acceso a los objetos referenciados.Si no, la sentencia es nueva, se analiza y los datos de análisis se almacenan en la zona de SQL compartida.
Dividido en:
Library cache
Incluye los espacios comunes de SQL, áreas privadas de SQL (en el caso de una configuración de servidor compartido), los procedimientos PL/SQL y paquetes, y las estructuras de control, tales como bloqueos.
Data Dictionary Cache
También conocido como Dictionary Cache o Row Cache, almacena la información de uso más reciente sobre el diccionario de datos. Es una colección de tablas y vistas que contienen información referente a la base de datos como los nombres y tipos de datos de las columnas de las tablas, usuarios, passwords y privilegios. Durante la fase de compilación, esta información es necesaria para resolver los nombres de los objetos utilizados en un comando SQL y para validar los privilegios de acceso.- Video: https://www.youtube.com/watch?v=fKOnylu4tmA
Large Pool
El administrador de la base de datos puede configurar esta área de memoria opcional, para proveer localidades más amplias de memoria para:-
- Memoria de sesiones.
- Procesos de I/O del servidor
- Backups de la base de datos y operaciones de recuperación.
Java Pool
La memoria java pool es usada en la memoria del servidor para todas las sesiones que utilicen código java y datos en la JVM. Esta memoria es usada de diferentes maneras dependiendo del modo en el que la base de datos esté corriendo.
Streams Pool
Esta memoria es usada exclusivamente por flujos de Oracle. Esta almacena colas de mensajes y provee memoria para que los flujos de Oracle capturen procesos y los apliquen. A menos que se configure específicamente, el tamaño de esta memoria empieza en cero. El tamaño de la streams pool crece dinámicamente como sea necesario cuando los flujos de Oracle son usados. - Video: https://www.youtube.com/watch?v=HJQF2AtpTA4
ARCHIVOS:
Los Archivos de Datos (Datafiles): sirve para el almacenamiento físico de las tablas, índices y
procedimientos, estos son los únicos que contienen los datos de los usuarios de la base de datos.
Archivos de Control (control files): tiene la descripción física y dirección de los archivos para el arranque correcto de la base de datos
Archivos de Rehacer (redo log files): tienen los cambios que se han hecho a la base de datos
para recuperar fallas o para manejar transacciones. Debe esta conformado por dos grupos como
mínimo y cada grupo debe esta en discos separados. El principal propósito de estos archivos es deservir de respaldo de los datos en la memoria RAM.
Archivos fuera de línea (archived files): archivos opcionales donde se pueda guardar
información vieja de los archivos de rehacer, convenientes para respaldos de base de datos
LOS PROCESOS:
Procesos de Base o de Soporte: se encargan de traer datos desde y hacia la estructura de
memoria (SGA), cada uno tiene su propia área de memoria; los procesos de este tipo son los
siguientes:
Database Writer (DBWR): se encarga de copiar los bloques desde el buffer cache hasta la
memoria secundaria.
Log Writer (LGWR): escribe las entradas desde el Log Buffer a disco. La escritura de
bloques del Redo Log Buffer a disco ocurre secuencialmente y bajo las siguientes reglas:
– Cuando el Redo Log está lleno en un 33% o más.
– Cuando oucrre un time-out (cada tres segundos).
– Antes de que el DBWR escriba algún bloque modificado a disco.
– Cuando una transacción se compromete.
Checkpoint (CKPT): encargado de notificar al DBWR para que se escriban en los archivos
de datos todos los bloques contenidos en la lista de sucios. Este proceso es invocado en
intervalos de tiempo determinados. El CKPT es opcional, si no existe las funciones son
realizadas por el LGWR.
System Monitor (SMON): Encargado de realizar un proceso de recuperación rápida cada
vez que una instancia es inicializada. Esta labor incluye limpieza de las estructuras de datos
de soporte a la ejecución de consultas y llevar a la base de datos a un estado estable
previo a la ejecución de aquellas transacciones que no hayan culminado exitosamente.
También se encarga de desfragmentar el espacio físico de almacenamiento uniendo
bloques de datos libres en la memoria secundaria.
Process Monitor (PMON): lleva la pista de los procesos de la base de datos y efectúa
labores de limpieza (liberar recursos y bloques ocupados en los cache’s) si alguno de ellos
termina prematuramente.
Archiver (ARCH): copia las bitácoras activas cuando éstas se encuentran llenas. Este
proceso se encuentra activo sólo cuando el DBMS se encuentra operando en modo
ARCHIVELOG, el único modo que admite recuperación de los datos frente a fallas del
sistema.
Recoverer (RECO): resuelve transacciones distribuidas que se encuentran pendientes
debido a la red o a fallas ocurridas en la base de datos distribuida.
Dispatcher (Dnnn): se crea por cada sesión de trabajo activa; es responsable de enrutar
los requerimientos desde el proceso usuario, al cual se encuentra asociado, hacia los
procesos servidores y retornar la respuesta al proceso de usuario adecuado. Estos
procesos se crean solo cuando se ejecuta con la opción multithreading.
Procesos de Usuario: se encarga de ejecutar el código de aplicación del usuario y manejar el perfil del usuario con sus variables de ambiente. Estos procesos no se pueden comunicar
directamente con la base de datos, por lo que la comunicación la establecen mediante
procesos de servidores.
Procesos de Servidores: estos procesos ejecutan las órdenes SQL de los usuarios y llevan los
datos del buffer caché para que los procesos de usuario puedan tener acceso a los datos.
2.1.3 Requerimientos para instalación de la base de datos.
Antes de instalar cualquier SGBD es necesario conocer los requerimientos de hardware y software, el posible software a desinstalar previamente, verificar el registro de Windows y el entorno del sistema, así como otras características de configuración especializadas como pueden ser la reconfiguración de los servicios TCP/IP y la modificación de los tipos archivos HTML para los diversos navegadores.
Se presenta a continuación una serie de requerimientos mínimos de hardware y software para instalar oracle 11g Express y MySQL estándar versión 5.1. en Windows Seven y Ubuntu 10.
2.1.4 Instalación del software de BD en modo transaccional
Debido al constante crecimiento de datos que generan las empresas hoy en día, se ha vuelto muy necesaria la búsqueda de nuevas plataformas para almacenar y analizar la información, ambientes que consuman menos recursos, que sean más escalables y que provean una alta disponibilidad. La solución consiste en el procesamiento paralelo de los datos de una base de datos.
Una base de datos en modo transaccional significa que la BD será capaz de que las operaciones de inserción y actualización se hagan dentro de una transacción, es un componente que procesa información descomponiéndola de forma unitaria en operaciones indivisibles, llamadas transacciones, esto quiere decir que todas las operaciones se realizan o no, si sucede algún error en la operación se omite todo el proceso de modificación de la base de datos, si no sucede ningún error se hacen toda la operación con éxito.
Una transacción es un conjunto de líneas de un programa que llevan insert o update o delete. Todo aquél software que tiene un log de transacciones (que es la "bitácora" que permite hacer operaciones de commit o rollback), propiamente es un software de BD; aquél que no lo tiene (v.g. D-Base), propiamente no lo es. Todo software de base de datos es transaccional; si el software de la BD no es "transaccional", en realidad NO es un "software" de BD; en todo caso, es un software que emula el funcionamiento de un verdadero software de BD. Cada transacción debe finalizar de forma correcta o incorrecta como una unidad completa. No puede acabar en un estado intermedio.
Se usan las siguientes métodos :
- · Begin TRans para iniciar la transacción
- · CommitTrans para efectuar los cambios con éxito
- · RollbackTrans para deshacer los cambios
Una vez que se sabe la forma de ingresar comandos, es el momento de acceder a una base de datos.
Suponga que en su hogar posee varias mascotas y desea registrar distintos tipos de información sobre ellas. Puede hacerlo si crea tablas para almacenar sus datos e introduce en ellas la información deseada. Entonces, podrá responder una variedad de preguntas acerca de sus mascotas recuperando datos desde las tablas. Los pasos serían:
• Crear una base de datos
• Crear una tabla
• Introducir datos en la tabla
• Recuperar datos desde la tabla de varias maneras
• Emplear múltiples tablas
2.1.5 Variables de Ambiente y archivos importantes para instalación.
Para instalar MySQL como primer instancia el archivo primordial es el que se descarga de la Web de MySQL. El proceso para instalar MySQL desde un archivo ZIP es el siguiente:
1. Extraer el contenido del archivo dentro del directorio de instalación deseado.
2. Crear un archivo de opciones.
3. Elegir un tipo de servidor MySQL
4. Iniciar el servidor MySQL.
5. Establecer la seguridad de las cuentas de usuario por defecto.
2.1.6 Procedimiento general de instalación de un DBMShttps://www.blogger.com/blogger.g?blogID=2605600142034265127#editor/target=post;postID=1936041526765777001;onPublishedMenu=allposts;onClosedMenu=allposts;postNum=22;src=postname2.1.7 Procedimiento para configuración de un DBMS.
Para configurar nuestro DBMS podemos acceder a las siguientes pantallas, para Oracle o MySQL.
El esquema de una base de datos (en inglés, Database Schema) describe la estructura de una Base de datos, en un lenguaje formal soportado por un Sistema administrador de Base de datos (DBMS). En una Base de datos Relacional, el Esquema define sus tablas, sus campos en cada tabla y las relaciones entre cada campo y cada tabla.
Oracle generalmente asocia un 'username' como esquemas en este caso SYSTEM y HR (Recursos humanos).
Como conclusion podemos decir que una base de datoss esta compuesta por elementos que:
1.- Ayudan a manejar la informacion de forma rapida
2.-ayudan a no perder informacion
3.- almacenan informacion
4.- elementos de recuperacion
Suscribirse a:
Entradas (Atom)










