1 Introducción al lenguaje ensambladorLenguaje de maquina Unidad I Introducción al lenguaje ensamblador Tema: Técnicas de direccionamiento y aspecto de un programa ensamblador.
2 Objetivo General Adquirir una sólida comprensión del funcionamiento interno de los microprocesadores. Conocer y emplear eficientemente el entorno de programación del Lenguaje Ensamblador. Elaborar programas a nivel avanzado que permiten manejar eficientemente los recursos del microprocesador
3 Objetivo Terminal Conocer los registros internos y la forma como operan en un microprocesador.
4 Objetivo InstruccionalConocer y comprender las técnicas de direccionamiento y estructura de un programa ensamblador.
5 SEMANA 03_1
6 EJECUCION DE INSTRUCCIONES: EL PROGRAMA DEBUGLenguaje de maquina EL DOS VIENE CON UN PROGRAMA LLAMADO DEBUG QUE ES UTILIZADO PARA PROBAR Y DEPURAR PROGRAMAS EJECUTABLES. DEBUG PERMITE EJECUTAR UN PROGRAMA EN MODO DE PASO SENCILLO (UN PASO A LA VEZ), DE MANERA QUE SE PUEDA VER EL EFECTO DE CADA INSTRUCCIÓN SOBRE LAS LOCALIDADES DE MEMORIA Y LOS REGISTROS. DEBUG PROPORCIONA UN CONJUNTO DE COMANDOS QUE PERMITEN REALIZAR DIFERENTES OPERACIONES UTILES.
7 A Ensamblar instrucciones simbólicas y pasarlas a código de maquina EJECUCION DE INSTRUCCIONES: EL PROGRAMA DEBUG Lenguaje de maquina COMANDOS DE DEBUG. A Ensamblar instrucciones simbólicas y pasarlas a código de maquina D Mostrar el contenido de un área de memoria E Introducir datos en memoria, iniciando en una localidad especifica G Correr el programa ejecutable que se encuentra en memoria N Nombrar un programa P Proceder a ejecutar un conjunto de instrucciones relacionadas Q Salir de la sesión con DEBUG
8 R Mostrar el contenido de uno o mas registros EJECUCION DE INSTRUCCIONES: EL PROGRAMA DEBUG Lenguaje de maquina COMANDOS DE DEBUG. R Mostrar el contenido de uno o mas registros T Rastrear la ejecución de una instrucción U “Desensamblar” codigo de maquina y pasarlo a codigo simbolico. W Escribir o grabar un programa en disco.
9 REGLAS DE LOS COMANDOS DE DEBUGLenguaje de maquina PARA SUS PROPOSITOS, DEBUG NO DISTINGUE ENTRE MAYUSCULAS Y MINUSCULAS. TAMBIEN SE INTRODUCE UN ESPACIO SOLO DONDE SEA NECESARIO SEPARAR PARAMETROS EN UN COMANDO. LOS TRES EJEMPLOS SIGUIENTES SON EQUIVALENTES: D DS:200 DDS:200 dds:200
10 EL DESPLIEGUE DE DEBUG CONSISTE EN TRES PARTES.Lenguaje de maquina EL DESPLIEGUE DE DEBUG CONSISTE EN TRES PARTES. A LA IZQUIERDA ESTA LA DIRECCION HEXADECIMAL DEL ULTIMO BYTE DE LA IZQUIERDA QUE SE DESPLIEGA EN LA FORMA DE SEGMENTO:DESPLAZAMIENTO EL AREA AMPLIA DEL CENTRO ES LA REPRESENTACION HEXADECIMAL DEL AREA DESPLEGADA A LA DERECHA ESTA LA REPRESENTACION EN ASCII DE LOS BYTES QUE CONTIENEN LOS CARACTERES DESPLEGABLES.
11 DIRECCION |-REPRESENTACION- HEX -|--ASCII--| EL DESPLIEGUE DE DEBUG Lenguaje de maquina DIRECCION |-REPRESENTACION- HEX -|--ASCII--| xxxx.xx xx..……….xx-xx……..……xx x……….x xxxx.xx xx…………xx-xx……………xx x……….x xxxx.xx xx…………xx-xx……………xx x……….x CADA LINEA DESPLIEGA 16 BYTES DE MEMORIA. LA DIRECCION DE LA IZQUIERDA SOLO SE REFIERE AL ULTIMO BYTE DE LA DERECHA. INICIO CON DEBUG: TECLEAR DEBUG [ENTER]
12 D 40:10 [y presione la tecla enter]VISUALIZACION DE LAS LOCALIDADES DE MEMORIA Lenguaje de maquina EL COMANDO D (DISPLAY), LISTA 8 LINEAS DE 16 BYTES CADA UNA. VERIFICACION DE DATOS DEL SISTEMA: UNA PALABRA DE ESTADO DEL EQUIPO EN EL AREA DE DATOS DEL BIOS, OFRECE UNA INDICACION RUDIMENTARIA DE LOS DISPOSITIVOS INSTALADOS. ESTA PALABRA ESTA EN LAS LOCALIDADES 410H-411H, QUE PUEDE VER DESDE DEBUG POR MEDIO DE UNA DIRECCION DE DOS PARES: 40 PARA LA DIRECCION DEL SEGMENTO Y 10 PARA EL DESPLAZAMIENTO DESDE LA DIRECCION DEL SEGMENTO. D 40:10 [y presione la tecla enter]
13 D 40:10 [y presione la tecla enter]VISUALIZACION DE LAS LOCALIDADES DE MEMORIA Lenguaje de maquina D 40:10 [y presione la tecla enter] EL DESPLIEGUE DEBE EMPEZAR CON ALGO COMO ESTO: 0040: EN ESTE EJEMPLO, LOS DOS BYTES EN LA PALABRA DEL ESTADO DEL EQUIPO CONTIENEN LOS VALORES HEXADECIMALES 63 Y 44. INVIERTA LOS BYTE (44 63) Y CONVIERTA A BINARIO.
14 1 BITS DISPOSITIVO VISUALIZACION DE LAS LOCALIDADES DE MEMORIA 15 14Lenguaje de maquina 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 1 BITS DISPOSITIVO Nº DE PUERTOS PARALELO PARA IMPRESORA CONECTADOS = 1 (BIN 01) Nº DE PUERTOS SERIE CONECTADOS = 2 (BIN 010) Nº DE DISPOSITIVOS DE DISCO FLEXIBLE = 2 (00=1, 01=2, 10=3, 11=4) MODO INICIAL DE VIDEO = 10 (01=40x25 COLOR, 10=80x12 25 EN COLOR) = COPROCESADOR MATEMATICO PRESENTE = UNIDAD DE DISCO FLEXIBLE ESTA PRESENTE
15 D 40:13 [y presione la tecla enter]VISUALIZACION DE LAS LOCALIDADES DE MEMORIA Lenguaje de maquina VERIFICACION DEL TAMAÑO DE LA MEMORIA EL AREA DEL BIOS QUE REGISTRA LA CANTIDAD DE MEMORIA INSTALADA SON LAS 413H Y 414H. D 40:13 [y presione la tecla enter] EL DESPLIEGUE DEBE EMPEZAR CON ALGO COMO ESTO: 0040: HEX INVERSO HEX CORREGIDO DECIMAL (K)
16 D FE00:0 [y presione la tecla enter]VISUALIZACION DE LAS LOCALIDADES DE MEMORIA Lenguaje de maquina VERIFICACION DEL Nº DE SERIE Y DE LA NOTA DE DERECHOS RESERVADOS EL Nº DE SERIE DE LA COMPUTADORA ESTA ALOJADO EN EL ROM D BIOS EN LA LOCALIDAD FE000H. D FE00:0 [y presione la tecla enter] LA PANTALLA DEBE MOSTRAR UN NUMERO DE SERIE DE SIETE DIGITOS SEGUIDO, EN MAQUINAS CONVENCIONALES DE UNA NOTA DE DERECHOS RESERVADOS
17 D FFFF:5 [y presione la tecla enter]VISUALIZACION DE LAS LOCALIDADES DE MEMORIA Lenguaje de maquina VERIFICACION DE LA FECHA EN EL ROM BIOS LA FECHA ESTA EN LA LOCALIDAD FFFF5H. D FFFF:5 [y presione la tecla enter]
18 D FFFF:E [y presione la tecla enter]VISUALIZACION DE LAS LOCALIDADES DE MEMORIA Lenguaje de maquina VERIFICACION DE LA IDENTIFICACION DEL MODELO LA IDENTIFICACION ESTA EN LA LOCALIDAD FFFFEH. D FFFF:E [y presione la tecla enter] CODIGO MODELO F PS/2 MODELOS 70 Y 80 F PX COMPATIBLE FA PS/2 MODELO 30 FB PC-XT (1986) FC PC-AT (1984), PC-XT MODELO 286, PS/2 MODELOS 50 Y 60, ETC FE PC-XT (1982), PORTATIL (1982) FF PRIMERA IBM PC
19 EJEMPLO I DE LENGUAJE DE MAQUINA: DATOS INMEDIATOSESTE PROGRAMA EJEMPLO UTILIZA DATOS INMEDIATOS, DATOS DEFINIDOS COMO PARTE DE UNA INSTRUCCIÓN. INSTRUCCIÓN CODIGO EXPLICACION MAQUINA SIMBOLICO B MOV AX,0123H MOVER EL VALOR 0123H A AX ADD AX, SUMAR EL VALOR 0025H A AX 8BD MOV BX,AX MOVER EL CONTENIDO AX A BX 03D ADD BX,AX SUMAR CONTENIDO AX A BX 8BCB MOV CX,BX MOVER CONTENIDO CX, BX 2BC SUB CX,AX RESTAR CONTENIDO AX DE CX 2BC SUB AX,AX RESTAR AX DE AX NOP NO OPERACIÓN (NO HACE NADA)
20 EJEMPLO I DE LENGUAJE DE MAQUINA: DATOS INMEDIATOSINICIAR SESION CON DEBUG. (INGRESAR ENTER AL FINAL DE CADA LINEA) -D CS:100 -E CS:100 B -E CS:106 8B D8 03 D8 8B CB -E CS:10C 2B C8 2B C0 90 -R -T -Q
21 DESPLAZAMIENTO DS CONTENIDO HEXADECIMAL 0200H 2301H 0202H 2500H EJEMPLO II DE LENGUAJE DE MAQUINA: DATOS DEFINIDOS Lenguaje de maquina ESTE PROGRAMA EJEMPLO UTILIZA DATOS COMO ELEMENTOS DENTRO DEL PROGRAMA. DESPLAZAMIENTO DS CONTENIDO HEXADECIMAL 0200H H 0202H H 0204H H 0206H A2A2A2AH INSTRUCCIÓN EXPLICACION A MOVER LA PALABRA QUE INICIA EN DS CON EL DESPLAZAMIENTO 0200H AL REGISTRO AX SUMAR EL CONTENIDO DE LA PALABRA QUE INICIA EN DS CON DESPLAZAMIENTO 0202H AL REGISTRO AX A MOVER EL CONTENIDO DEL REGISTRO AX A LA PALABRA QUE INICIA EN DS CON DESPLAZAMIENTO NO OPERACIÓN
22 INICIAR SESION CON DEBUG.EJEMPLO II DE LENGUAJE DE MAQUINA: DATOS DEFINIDOS Lenguaje de maquina INICIAR SESION CON DEBUG. (INGRESAR ENTER AL FINAL DE CADA LINEA) -D DS:200 -E DS: -E DS:206 2A 2A 2A -E CS:100 A -E CS:107 A -D DS:200,208 -D CS:100,10A -R -T -D DS:0200,0208 -Q
23 EL COMANDO A. (ensamblar) COMO INTRODUCIR UN PROGRAMA SIMBOLICO EN ENSAMBLADOR Lenguaje de maquina EL COMANDO A. (ensamblar) ESTE COMANDO LE DICE A DEBUG QUE ACEPTE INSTRUCCIONES SIMBOLICAS EN ENSAMBLADOR Y LAS CONVIERTA EN LENGUAJE DE MAQUINA. INICIALICE LA DIRECCION DE INICIO EN EL SEGMENTO DE CODIGO CON DESPLAZAMIENTO 100H PARA SUS INSTRUCCIONES COMO: A [ENTER] MOV AL,25 [ENTER] MOV BL,32 [ENTER] ADD AL,BL [ENTER] NOP [ENTER, ENTER]
24 EL COMANDO U. (desensamblar) COMO INTRODUCIR UN PROGRAMA SIMBOLICO EN ENSAMBLADOR Lenguaje de maquina EL COMANDO U. (desensamblar) ESTE COMANDO MUESTRA EL CODIGO DE MAQUINA PARA SUS INSTRUCCIONES EN LENGUAJE ENSAMBLADOR. U 100,106 [ENTER] LA PANTALLA DEBE MOSTRAR PARA LA LOCALIDAD, EL CODIGO DE MAQUINA Y EL CODIGO SIMBOLICO.
25 EL COMANDO P. (proceder) COMO INTRODUCIR UN PROGRAMA SIMBOLICO EN ENSAMBLADOR Lenguaje de maquina EL COMANDO P. (proceder) EJECUTA TODA UNA RUTINA DE INTERRUPCION DEL DOS. -A 100 [ENTER] MOV AH,30 [ENTER] INT 21 [ENTER] NOP [ENTER,ENTER] -R [ENTER] -T [ENTER] -P [ENTER] EN AL MUESTRA EL NUMERO PRINCIPAL DE LA VERSION DEL DOS Y EN AH EL NUMERO SECUNDARIO DE LA VERSION
26 COMO OBTENER LA FECHA ACTUAL -A 100 [ENTER] INT 21 [ENTER] LA INSTRUCCIÓN INT Lenguaje de maquina COMO OBTENER LA FECHA ACTUAL -A 100 [ENTER] MOV AH,2A [ENTER] INT 21 [ENTER] NOP [ENTER,ENTER] -R [ENTER] -T [ENTER] -P [ENTER] LOS REGISTROS MUESTRAN ESTA INFORMACION AL: DIA DE LA SEMANA (0=DOMINGO) CX: AÑO (EN HEXADECIMAL) DH: MES (01 A 12) DL: DIA DEL MES (01 A 31)
27 COMO GUARDAR UN PROGRAMA DESDE DEBUGLenguaje de maquina PUEDE UTILIZAR EL DEBUG PARA GUARDAR UN PROGRAMA EN DISCO BAJO DOS CIRCUNSTANCIAS: PARA LEER EL PROGRAMA, MODIFICARLO Y DESPUES GUARDARLO, SIGA ESTOS PASOS: LEA EL PROGRAMA BAJO SU NOMBRE: DEBUG n:nombrearchivo UTILICE EL COMANDO D PARA VER EL PROGRAMA EN LENGUAJE DE MAQUINA Y USE E PARA INGRESAR LOS CAMBIOS UTILICE EL COMANDO W PARA GRABAR EL PROGRAMA REVISADO
28 COMO GUARDAR UN PROGRAMA DESDE DEBUGLenguaje de maquina 2. USAR DEBUG PARA ESCRIBIR UN PEQUEÑO PROGRAMA EN LENGUAJE DE MAQUINA QUE AHORA QUIERA GUARDAR: SIGA ESTOS PASOS: SOLICITE EL PROGRAMA DEBUG UTILICE EL COMANDO A (ENSAMBLAR) Y E (INGRESAR) PARA CREAR EL PROGRAMA PONGA NOMBRE AL PROGRAMA: N nombrearchivo.com. LA EXTENSION DEL PROGRAMA DEBE SER .COM YA QUE SOLO USTED. SABE DONDE TERMINA EN REALIDAD EL PROGRAMA, INDIQUE A DEBUG EL TAMAÑO DEL PROGRAMA EN BYTES. EXAMINE ESTE EJEMPLO: xxxx:0100 MOV AL,25 xxxx:0102 MOV BL, 32 xxxx:0104 ADD AL,BL xxxx:0106 NOP PUESTO QUE LA ULTIMA INSTRUCCIÓN NOP, ES DE UN BYTE, EL TAMANO DEL PROGRAMA ES DE 7 BYTES, DESDE 100H HASTA 106H, INCLUSIVE.
29 COMO GUARDAR UN PROGRAMA DESDE DEBUGLenguaje de maquina 2. USAR DEBUG PARA ESCRIBIR UN PEQUEÑO PROGRAMA EN LENGUAJE DE MAQUINA QUE AHORA QUIERA GUARDAR: SIGA ESTOS PASOS: PRIMERO UTILICE R BX PARA MOSTRAR EL BX, E INGRESE 0 PARA LIMPIARLO AHORA USE R CX PARA MOSTRAR EL REGISTRO CX. DEBUG RESPONDE CX:0000 (VALOR CERO) Y USTED CONTESTA CON EL TAMANO DEL PROGRAMA, 7. GRABE EL PROGRAMA REVISADO: W [ENTER]
30 COMO GUARDAR UN PROGRAMA DESDE DEBUGLenguaje de maquina EJEMPLO: DEBUG -N LUIS.COM -A 100 MOV AL,25 MOV BL,32 ADD AL,BL NOP -R BX -R CX 7 -W -Q LA RAZON PARA LIMPIAR EL BX ES PORQUE LA LONGITUD DEL PROGRAMA ESTA EN LA PAREJA BX:CX
31 100 MOV AX, [11A] 103 ADD AX , [11C] 107 ADD AX , 25 10A MOV [11E], AXEJEMPLO DE LENGUAJE ENSAMBLADOR: EL OPERADOR PTR Lenguaje de maquina MOV AX, [11A] ADD AX , [11C] ADD AX , 25 10A MOV [11E], AX 10D MOV WORD PTR [120] , 25 MOV BYTE PTR [122] , 30 NOP NOP 11A DB 11C DB 11E DB DB PARA EJECUTAR ESTE PROGRAMA, PRIMERO TECLEE A 100 [ENTER] Y LUEGO INGRESE LAS INSTRUCCIONES. AL SALIR INTRODUZCA R PARA MOSTRAR LOS REGISTROS, DESPUES EN FORMA SUCESIVA T. SALGA DE LA EJECUCION CUANDO LLEGUE A NOP EN 118 , TECLEE D 110 PARA MOSTRAR LOS REGISTROS CAMBIADOS DE AX Y DE LAS LOCALIDADES.
32 EJEMPLO 4