PROGRAMACION ENSAMBLADOREL UTILITARIO DEBUGIng. Fernando MonrroyUAGRM enero de 2011
Inicie aquí (o escriba cmd en ejecutar)
Microsoft Windows [Versión 6.0.6000]Copyright (c) 2006 Microsoft Corporation.  Reservados todos los derechos.C:\Users\Fernando>d:D:\>md inf221D:\>cd inf221D:\inf221>debug-Para cambiar a la unidad  DPara  crear carpeta INF221Para cambiar a  la carpeta INF221Iniciar DebugPrompt de DEBUG
-?assemble      A [address]compare      C range addressdump           D [range]enter           E address [list]fill               F range listgo               G [=address] [addresses]hex             H value1 value2input           I portload            L [address] [drive] [firstsector] [number]move          M range addressname          N [pathname] [arglist]Ayuda de DEBUG
output       O port byteproceed      P [=address] [number]quit            Qregister      R [register]search        S rangelisttrace          T [=address] [value]unassemble   U [range]write          W [address] [drive] [firstsector] [number]allocateexpandedmemory          XA [#pages]deallocateexpandedmemory      XD [handle]mapexpandedmemorypages      XM [Lpage] [Ppage]displayexpandedmemory status  XS-Ayuda de DEBUG
-rAX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000DS=179D  ES=179D  SS=179D  CS=179D  IP=0100   NV UP EI PL NZ NA PO NC179D:0100 0000          ADD     [BX+SI],AL                         DS:0000=CD-El comando r, por si solo despliega el contenido de los registros del procesadorDe propósito generalPunteros e ÍndicesBanderasPuntero de InstruccionesDe Segmento
-r axAX 0000:1234-r bxBX 0000:89ab-rAX=1234  BX=89AB  CX=0000  DX=0000  SPDS=179D  ES=179D  SS=179D  CS=179D  IP179D:0100 0000          ADD     [BX+SI-Seguido del nombre de un registro, permite modificar su contenido
El comando  d (dump) despliega el contenido de una porción de la memoria. Sin ningún argumento  en grupos de 128 bytes por vez-d1000:0200  42 32 00 00 C7 00 00 00-47 12 00 00 C7 00 00 00   B2......G.......1000:0210  4C 12 00 00 C7 00 00 00-51 12 00 00 C7 00 00 00   L.......Q.......1000:0220  56 12 00 00 C7 00 00 00-5B 12 00 00 C7 00 00 00   V.......[.......1000:0230  60 12 00 00 C7 00 00 00-65 12 00 00 C7 00 00 00   `.......e.......1000:0240  6A 12 00 00 C7 00 00 00-6F 12 00 00 C7 00 00 00   j.......o.......1000:0250  74 12 00 00 C7 00 00 00-79 12 00 00 C7 00 00 00   t.......y.......1000:0260  7E 12 00 00 C7 00 00 00-83 12 00 00 C7 00 00 00   ~...............1000:0270  88 12 00 00 C7 00 00 00-8D 12 00 00 C7 00 00 00   ................-DirecciónEn ASCII, si correspondeContenido hexadecimal
El comando  d (dump) despliega el contenido de una porción de la memoria entre las direcciones señaladas-d 500 5351785:0500  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................1785:0510  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................1785:0520  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................1785:0530  00 00 00 00 00 00                                 ......-d 1234:0abc1234:0AB0                                      CD 21 2E 89               .!..1234:0AC0  1E 8F 4A 2E 89 1E 19 4A-2E 89 1E 1B 4A 8E C3 26   ..J....J....J..&1234:0AD0  C7 06 0A 00 4F 03 26 8C-0E 0C 00 2E C4 3E A9 4A   ....O.&......>.J1234:0AE0  2E 8C 06 1F 4A 2E 89 3E-21 4A 2E 8C 06 85 56 2E   ....J..>!J....V.1234:0AF0  89 3E 83 56 2E 8C 06 81-56 2E 89 3E 7F 56 2E 8C   .>.V....V..>.V..1234:0B00  06 8F 56 2E 89 3E 8D 56-8C DB B4 50 CD 21 2E C4   ..V..>.V...P.!..1234:0B10  3E A5 4A 26 8B 05 47 47-2E A3 09 4A 2E 8C 06 1D   >.J&..GG...J....1234:0B20  4A 2E 89 3E 11 4A C3 0E-1F BA 0A 4B 3D 02 00 74   J..>.J.....K=..t1234:0B30  1B BA BE 4B 3D 05 00 74-13 BA 5E 4B               ...K=..t..^K-O a partir de la dirección indicada
El comando e (enter) permite escribir en la memoriaUn byte-e 200 37-e 210 45 46 47-e 220 ‘hola mundo’-Un grupo de bytesUna cadena asciiY si ahora desplegamos el contenido …-d2001785:0200  37 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   7...............1785:0210  45 46 47 00 00 00 00 00-00 00 00 00 00 00 00 00   EFG.............1785:0220  68 6F 6C 61 20 6D 75 6E-64 6F 00 00 00 00 00 00   hola mundo......1785:0230  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
El comando a (assemble) habilita el ensamblador , permitiendo ingresar instrucciones en lenguaje ensamblador, al tiempo que las ensambla (traduce a lenguaje de máquina) en memoria-a 1001785:0100 mov al,551785:0102 mov bh,bb1785:0104 add al,bh1785:0106 sub cx,bx1785:0108-
El comando u (unassemble) desensambla (traduce del lenguaje de máquina al lenguaje ensamblador) una porción de memoria-u 1001785:0100 B055          MOV     AL,551785:0102 B7BB          MOV     BH,BB1785:0104 00F8          ADD     AL,BH1785:0106 29D9          SUB     CX,BX Equivalente en lenguaje ensambladorDirecciónContenido hexadecimal
El comando t (trace)  ejecuta una instrucción a la vez-rAX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000DS=1785  ES=1785  SS=1785  CS=1785  IP=0100   NV UP EI PL NZ NA PO NC1785:0100 B055          MOV     AL,55-tAX=0055  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000DS=1785  ES=1785  SS=1785  CS=1785  IP=0102   NV UP EI PL NZ NA PO NC1785:0102 B7BB          MOV     BH,BBLa instrucción MOV AL,55 (mover el dato inmediato 55 al registro AL) transfiere a la mitad inferior del acumulador el dato inmediato 55
… ahora transfiere el dato inmediato BB a la mitad superior de BXAX=0055  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000DS=1785  ES=1785  SS=1785  CS=1785  IP=0102   NV UP EI PL NZ NA PO NC1785:0102 B7BB          MOV     BH,BB-tAX=0055  BX=BB00  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000DS=1785  ES=1785  SS=1785  CS=1785  IP=0104   NV UP EI PL NZ NA PO NC1785:0104 00F8          ADD     AL,BH
… la instrucción ADD AL,BH suma los contenidos de AL y BH y deposita el resultado en AL … además modifica las banderasAX=0055  BX=BB00  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000DS=1785  ES=1785  SS=1785  CS=1785  IP=0104   NV UP EI PL NZ NA PO NC1785:0104 00F8          ADD     AL,BH-tAX=0010  BX=BB00  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000DS=1785  ES=1785  SS=1785  CS=1785  IP=0106   NV UP EI PL NZ AC PO CY1785:0106 29D9          SUB     CX,BX55h+BBh = 110hNo hay desbordamientoPorque produjo acarreoEs positivoNo es ceroTambién acarreo auxiliar
… la instrucción SUB CX,BX resta los contenidos de CX y BX y deposita el resultado en CX … además modifica las banderasAX=0010  BX=BB00  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000DS=1785  ES=1785  SS=1785  CS=1785  IP=0106   NV UP EI PL NZ AC PO CY1785:0106 29D9          SUB     CX,BX-tAX=0010  BX=BB00  CX=4500  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000DS=1785  ES=1785  SS=1785  CS=1785  IP=0108   NV UP EI PL NZ NA PE CY0000h-BB00h = 4500hNo hay desbordamientoPorque produjo acarreoEs negativoNo es ceroNo hay acarreo auxiliar
Probemos ahora el siguiente programa            MOV AH,9            MOV DX,120            INT 21            MOV AH,1            INT 21            MOV AH , 4C            INT 21Además escribiremos en memoria, a partir de la dirección 120 la cadena ascii “Hola mundo que hay de nuevo?Luego ejecutamos instrucción por instrucción  con el comando t, tenga cuidado de usar p en lugar de t  para ejecutar la instrucción  INT 21
-A1001785:0100 MOV AH,91785:0102 MOV DX,1201785:0105 INT 211785:0107 MOV AH,11785:0109 INT 211785:010B MOV AH,4C1785:010D INT 211785:010F-E120 'Hola Mundo',0A,0D,'Que hay de nuevo?',0A,0D,'$'-r ipIP 0108:100-rAX=0010  BX=BB00  CX=4500  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000DS=1785  ES=1785  SS=1785  CS=1785  IP=0100   NV UP EI PL NZ NA PE CY1785:0100 B409          MOV     AH,09-Para que el puntero de instrucciones apunte a 100 (dirección de la primera instrucción )
AX=0010  BX=BB00  CX=4500  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000DS=1785  ES=1785  SS=1785  CS=1785  IP=0100   NV UP EI PL NZ NA PE CY1785:0100 B409          MOV     AH,09-tAX=0910  BX=BB00  CX=4500  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000DS=1785  ES=1785  SS=1785  CS=1785  IP=0102   NV UP EI PL NZ NA PE CY1785:0102 BA2001        MOV     DX,0120-tAX=0910  BX=BB00  CX=4500  DX=0120  SP=FFEE  BP=0000  SI=0000  DI=0000DS=1785  ES=1785  SS=1785  CS=1785  IP=0105   NV UP EI PL NZ NA PE CY1785:0105 CD21          INT     21-pHola MundoQue hay de nuevo?AX=0924  BX=BB00  CX=4500  DX=0120  SP=FFEE  BP=0000  SI=0000  DI=0000DS=1785  ES=1785  SS=1785  CS=1785  IP=0107   NV UP EI PL NZ NA PE CY1785:0107 B401          MOV     AH,01-
AX=0924  BX=0000  CX=0000  DX=0120  SP=FFEE  BP=0000  SI=0000  DI=0000DS=1785  ES=1785  SS=1785  CS=1785  IP=0107   NV UP EI PL NZ NA PO NC1785:0107 B401          MOV     AH,01-tAX=0124  BX=0000  CX=0000  DX=0120  SP=FFEE  BP=0000  SI=0000  DI=0000DS=1785  ES=1785  SS=1785  CS=1785  IP=0109   NV UP EI PL NZ NA PO NC1785:0109 CD21          INT     21-pfAX=0166  BX=0000  CX=0000  DX=0120  SP=FFEE  BP=0000  SI=0000  DI=0000DS=1785  ES=1785  SS=1785  CS=1785  IP=010B   NV UP EI PL NZ NA PO NC1785:010B B44C          MOV     AH,4C-tAX=4C66  BX=0000  CX=0000  DX=0120  SP=FFEE  BP=0000  SI=0000  DI=0000DS=1785  ES=1785  SS=1785  CS=1785  IP=010D   NV UP EI PL NZ NA PO NC1785:010D CD21          INT     21-CUIDADO!! No ejecute esta instrucción (la función 4c cierra el programa)Aquí presione cualquier tecla
DEBUG tiene control sobre todo el sistema, lo que haremos a continuación es transferir el programa al disco.Para esto lo primero es dotar al programa de un nombre (que no pase de 8 caracteres y no incluya signos) y extensión .COM (señal de que es ejecutable (bajo DOS), con ayuda del comando nA continuación  señalamos la cantidad de bytes del programa en el registro  contador  (CX) y aseguramos que BX sea 0Finalmente para escribir el programa hacemos uso del comando W-n D:\inf221\hola.com-r cxCX 0000:50-rbxBX 0000:0-wWriting 00050 bytes-
Observe ahora la carpeta INF221 de la unidad D
Haciendo doble click sobre el ícono Hola se ejecuta el programa, y podrá ver …
También puede ejecutarse desde la línea de comandos de DOS, con solo escribir el nombre del programa q  para abandonar DEBUGWriting 00050 bytes-qD:\INF221>dir El volumen de la unidad D es respaldo El número de serie del volumen es: 9454-5398 Directorio de D:\INF22123/01/2011  10:13 p.m.    <DIR>          .23/01/2011  10:13 p.m.    <DIR>          ..23/01/2011  11:10 p.m.                80 HOLA.COM               1 archivos             80 bytes               2 dirs  14.427.561.984 bytes libresD:\INF221>holaHola MundoQue hay de nuevo?D:\INF221>El comando dir despliega el contenido de la carpeta desde donde se lo solicita
Este es un buen momento para experimentar.Atrévase:Elabore, con ayuda de DEBUG, un programa ejecutable que despliegue en pantalla tres líneas de texto; en la primera un saludo, en la segunda su nombre y apellido y en la tercera una expresión de contento por haberlo logrado.Hasta la próxima ….

Más contenido relacionado

DOCX
Cambio de base
PDF
02 cap02-13-mathematica
PPTX
GRUPO 4 Elementos a traves de los lenguajes de programacion, lenguaje de maqu...
PDF
Programacion ensamblador-procesadoresk
PPT
Software
PDF
Curso básico de ensamblador
PDF
Lenguaje ensamblador
PPTX
Manipulacion de la pila!!
Cambio de base
02 cap02-13-mathematica
GRUPO 4 Elementos a traves de los lenguajes de programacion, lenguaje de maqu...
Programacion ensamblador-procesadoresk
Software
Curso básico de ensamblador
Lenguaje ensamblador
Manipulacion de la pila!!

Similar a Debug utilitario dos (20)

PPT
MSX88 simulador assembly programación arquitectura de software.ppt
PDF
002 quick s7200-esp
PPTX
Saltos.pptx Organizacion de computadoras
PDF
Aritmetica binaria
PDF
Tabla de instrucciones asembler
PDF
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
DOCX
Micp mejoramiento-sept2011solucion
PPT
Glosario de q baisic
PPT
trabajo de Q basic
PPT
Presentación1
PDF
Intrucciones 16 bits.pdf
DOCX
Metodo modi-ejercicios
PDF
Fundamentos de Programación LOGO. Carlos Guerrero. ESPOL
PDF
Ejercicio multicomponente
PDF
282655363 ejercicios-resueltos-de-productividad
PPT
Curso Micro Tema 2
PDF
Representacion interna de datos1 2014
DOCX
Diseño de pantallas en as400
DOC
Micc final feb04_2010_soluc
DOC
Micc final feb04_2010_soluc
MSX88 simulador assembly programación arquitectura de software.ppt
002 quick s7200-esp
Saltos.pptx Organizacion de computadoras
Aritmetica binaria
Tabla de instrucciones asembler
Técnicas de programación en ensamblador pic16f877a repertorio 35 instrucciones
Micp mejoramiento-sept2011solucion
Glosario de q baisic
trabajo de Q basic
Presentación1
Intrucciones 16 bits.pdf
Metodo modi-ejercicios
Fundamentos de Programación LOGO. Carlos Guerrero. ESPOL
Ejercicio multicomponente
282655363 ejercicios-resueltos-de-productividad
Curso Micro Tema 2
Representacion interna de datos1 2014
Diseño de pantallas en as400
Micc final feb04_2010_soluc
Micc final feb04_2010_soluc
Publicidad

Más de Victor Fernando Monroy Dipp (8)

PPSX
Aplicaciones con el pic 16f84
PPTX
Ejmplo anls p spice
PPSX
PPTX
Capa de enlace de datos
PPSX
Capa fisica medios 1
PPSX
Aplicaciones con el pic 16f84
PPS
Rectificador filtro c
PPSX
El microcontrolador pic
Aplicaciones con el pic 16f84
Ejmplo anls p spice
Capa de enlace de datos
Capa fisica medios 1
Aplicaciones con el pic 16f84
Rectificador filtro c
El microcontrolador pic
Publicidad

Debug utilitario dos

  • 1. PROGRAMACION ENSAMBLADOREL UTILITARIO DEBUGIng. Fernando MonrroyUAGRM enero de 2011
  • 2. Inicie aquí (o escriba cmd en ejecutar)
  • 3. Microsoft Windows [Versión 6.0.6000]Copyright (c) 2006 Microsoft Corporation. Reservados todos los derechos.C:\Users\Fernando>d:D:\>md inf221D:\>cd inf221D:\inf221>debug-Para cambiar a la unidad DPara crear carpeta INF221Para cambiar a la carpeta INF221Iniciar DebugPrompt de DEBUG
  • 4. -?assemble A [address]compare C range addressdump D [range]enter E address [list]fill F range listgo G [=address] [addresses]hex H value1 value2input I portload L [address] [drive] [firstsector] [number]move M range addressname N [pathname] [arglist]Ayuda de DEBUG
  • 5. output O port byteproceed P [=address] [number]quit Qregister R [register]search S rangelisttrace T [=address] [value]unassemble U [range]write W [address] [drive] [firstsector] [number]allocateexpandedmemory XA [#pages]deallocateexpandedmemory XD [handle]mapexpandedmemorypages XM [Lpage] [Ppage]displayexpandedmemory status XS-Ayuda de DEBUG
  • 6. -rAX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=179D ES=179D SS=179D CS=179D IP=0100 NV UP EI PL NZ NA PO NC179D:0100 0000 ADD [BX+SI],AL DS:0000=CD-El comando r, por si solo despliega el contenido de los registros del procesadorDe propósito generalPunteros e ÍndicesBanderasPuntero de InstruccionesDe Segmento
  • 7. -r axAX 0000:1234-r bxBX 0000:89ab-rAX=1234 BX=89AB CX=0000 DX=0000 SPDS=179D ES=179D SS=179D CS=179D IP179D:0100 0000 ADD [BX+SI-Seguido del nombre de un registro, permite modificar su contenido
  • 8. El comando d (dump) despliega el contenido de una porción de la memoria. Sin ningún argumento en grupos de 128 bytes por vez-d1000:0200 42 32 00 00 C7 00 00 00-47 12 00 00 C7 00 00 00 B2......G.......1000:0210 4C 12 00 00 C7 00 00 00-51 12 00 00 C7 00 00 00 L.......Q.......1000:0220 56 12 00 00 C7 00 00 00-5B 12 00 00 C7 00 00 00 V.......[.......1000:0230 60 12 00 00 C7 00 00 00-65 12 00 00 C7 00 00 00 `.......e.......1000:0240 6A 12 00 00 C7 00 00 00-6F 12 00 00 C7 00 00 00 j.......o.......1000:0250 74 12 00 00 C7 00 00 00-79 12 00 00 C7 00 00 00 t.......y.......1000:0260 7E 12 00 00 C7 00 00 00-83 12 00 00 C7 00 00 00 ~...............1000:0270 88 12 00 00 C7 00 00 00-8D 12 00 00 C7 00 00 00 ................-DirecciónEn ASCII, si correspondeContenido hexadecimal
  • 9. El comando d (dump) despliega el contenido de una porción de la memoria entre las direcciones señaladas-d 500 5351785:0500 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................1785:0510 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................1785:0520 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................1785:0530 00 00 00 00 00 00 ......-d 1234:0abc1234:0AB0 CD 21 2E 89 .!..1234:0AC0 1E 8F 4A 2E 89 1E 19 4A-2E 89 1E 1B 4A 8E C3 26 ..J....J....J..&1234:0AD0 C7 06 0A 00 4F 03 26 8C-0E 0C 00 2E C4 3E A9 4A ....O.&......>.J1234:0AE0 2E 8C 06 1F 4A 2E 89 3E-21 4A 2E 8C 06 85 56 2E ....J..>!J....V.1234:0AF0 89 3E 83 56 2E 8C 06 81-56 2E 89 3E 7F 56 2E 8C .>.V....V..>.V..1234:0B00 06 8F 56 2E 89 3E 8D 56-8C DB B4 50 CD 21 2E C4 ..V..>.V...P.!..1234:0B10 3E A5 4A 26 8B 05 47 47-2E A3 09 4A 2E 8C 06 1D >.J&..GG...J....1234:0B20 4A 2E 89 3E 11 4A C3 0E-1F BA 0A 4B 3D 02 00 74 J..>.J.....K=..t1234:0B30 1B BA BE 4B 3D 05 00 74-13 BA 5E 4B ...K=..t..^K-O a partir de la dirección indicada
  • 10. El comando e (enter) permite escribir en la memoriaUn byte-e 200 37-e 210 45 46 47-e 220 ‘hola mundo’-Un grupo de bytesUna cadena asciiY si ahora desplegamos el contenido …-d2001785:0200 37 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 7...............1785:0210 45 46 47 00 00 00 00 00-00 00 00 00 00 00 00 00 EFG.............1785:0220 68 6F 6C 61 20 6D 75 6E-64 6F 00 00 00 00 00 00 hola mundo......1785:0230 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
  • 11. El comando a (assemble) habilita el ensamblador , permitiendo ingresar instrucciones en lenguaje ensamblador, al tiempo que las ensambla (traduce a lenguaje de máquina) en memoria-a 1001785:0100 mov al,551785:0102 mov bh,bb1785:0104 add al,bh1785:0106 sub cx,bx1785:0108-
  • 12. El comando u (unassemble) desensambla (traduce del lenguaje de máquina al lenguaje ensamblador) una porción de memoria-u 1001785:0100 B055 MOV AL,551785:0102 B7BB MOV BH,BB1785:0104 00F8 ADD AL,BH1785:0106 29D9 SUB CX,BX Equivalente en lenguaje ensambladorDirecciónContenido hexadecimal
  • 13. El comando t (trace) ejecuta una instrucción a la vez-rAX=0000 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1785 ES=1785 SS=1785 CS=1785 IP=0100 NV UP EI PL NZ NA PO NC1785:0100 B055 MOV AL,55-tAX=0055 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1785 ES=1785 SS=1785 CS=1785 IP=0102 NV UP EI PL NZ NA PO NC1785:0102 B7BB MOV BH,BBLa instrucción MOV AL,55 (mover el dato inmediato 55 al registro AL) transfiere a la mitad inferior del acumulador el dato inmediato 55
  • 14. … ahora transfiere el dato inmediato BB a la mitad superior de BXAX=0055 BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1785 ES=1785 SS=1785 CS=1785 IP=0102 NV UP EI PL NZ NA PO NC1785:0102 B7BB MOV BH,BB-tAX=0055 BX=BB00 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1785 ES=1785 SS=1785 CS=1785 IP=0104 NV UP EI PL NZ NA PO NC1785:0104 00F8 ADD AL,BH
  • 15. … la instrucción ADD AL,BH suma los contenidos de AL y BH y deposita el resultado en AL … además modifica las banderasAX=0055 BX=BB00 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1785 ES=1785 SS=1785 CS=1785 IP=0104 NV UP EI PL NZ NA PO NC1785:0104 00F8 ADD AL,BH-tAX=0010 BX=BB00 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1785 ES=1785 SS=1785 CS=1785 IP=0106 NV UP EI PL NZ AC PO CY1785:0106 29D9 SUB CX,BX55h+BBh = 110hNo hay desbordamientoPorque produjo acarreoEs positivoNo es ceroTambién acarreo auxiliar
  • 16. … la instrucción SUB CX,BX resta los contenidos de CX y BX y deposita el resultado en CX … además modifica las banderasAX=0010 BX=BB00 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1785 ES=1785 SS=1785 CS=1785 IP=0106 NV UP EI PL NZ AC PO CY1785:0106 29D9 SUB CX,BX-tAX=0010 BX=BB00 CX=4500 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1785 ES=1785 SS=1785 CS=1785 IP=0108 NV UP EI PL NZ NA PE CY0000h-BB00h = 4500hNo hay desbordamientoPorque produjo acarreoEs negativoNo es ceroNo hay acarreo auxiliar
  • 17. Probemos ahora el siguiente programa MOV AH,9 MOV DX,120 INT 21 MOV AH,1 INT 21 MOV AH , 4C INT 21Además escribiremos en memoria, a partir de la dirección 120 la cadena ascii “Hola mundo que hay de nuevo?Luego ejecutamos instrucción por instrucción con el comando t, tenga cuidado de usar p en lugar de t para ejecutar la instrucción INT 21
  • 18. -A1001785:0100 MOV AH,91785:0102 MOV DX,1201785:0105 INT 211785:0107 MOV AH,11785:0109 INT 211785:010B MOV AH,4C1785:010D INT 211785:010F-E120 'Hola Mundo',0A,0D,'Que hay de nuevo?',0A,0D,'$'-r ipIP 0108:100-rAX=0010 BX=BB00 CX=4500 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1785 ES=1785 SS=1785 CS=1785 IP=0100 NV UP EI PL NZ NA PE CY1785:0100 B409 MOV AH,09-Para que el puntero de instrucciones apunte a 100 (dirección de la primera instrucción )
  • 19. AX=0010 BX=BB00 CX=4500 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1785 ES=1785 SS=1785 CS=1785 IP=0100 NV UP EI PL NZ NA PE CY1785:0100 B409 MOV AH,09-tAX=0910 BX=BB00 CX=4500 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000DS=1785 ES=1785 SS=1785 CS=1785 IP=0102 NV UP EI PL NZ NA PE CY1785:0102 BA2001 MOV DX,0120-tAX=0910 BX=BB00 CX=4500 DX=0120 SP=FFEE BP=0000 SI=0000 DI=0000DS=1785 ES=1785 SS=1785 CS=1785 IP=0105 NV UP EI PL NZ NA PE CY1785:0105 CD21 INT 21-pHola MundoQue hay de nuevo?AX=0924 BX=BB00 CX=4500 DX=0120 SP=FFEE BP=0000 SI=0000 DI=0000DS=1785 ES=1785 SS=1785 CS=1785 IP=0107 NV UP EI PL NZ NA PE CY1785:0107 B401 MOV AH,01-
  • 20. AX=0924 BX=0000 CX=0000 DX=0120 SP=FFEE BP=0000 SI=0000 DI=0000DS=1785 ES=1785 SS=1785 CS=1785 IP=0107 NV UP EI PL NZ NA PO NC1785:0107 B401 MOV AH,01-tAX=0124 BX=0000 CX=0000 DX=0120 SP=FFEE BP=0000 SI=0000 DI=0000DS=1785 ES=1785 SS=1785 CS=1785 IP=0109 NV UP EI PL NZ NA PO NC1785:0109 CD21 INT 21-pfAX=0166 BX=0000 CX=0000 DX=0120 SP=FFEE BP=0000 SI=0000 DI=0000DS=1785 ES=1785 SS=1785 CS=1785 IP=010B NV UP EI PL NZ NA PO NC1785:010B B44C MOV AH,4C-tAX=4C66 BX=0000 CX=0000 DX=0120 SP=FFEE BP=0000 SI=0000 DI=0000DS=1785 ES=1785 SS=1785 CS=1785 IP=010D NV UP EI PL NZ NA PO NC1785:010D CD21 INT 21-CUIDADO!! No ejecute esta instrucción (la función 4c cierra el programa)Aquí presione cualquier tecla
  • 21. DEBUG tiene control sobre todo el sistema, lo que haremos a continuación es transferir el programa al disco.Para esto lo primero es dotar al programa de un nombre (que no pase de 8 caracteres y no incluya signos) y extensión .COM (señal de que es ejecutable (bajo DOS), con ayuda del comando nA continuación señalamos la cantidad de bytes del programa en el registro contador (CX) y aseguramos que BX sea 0Finalmente para escribir el programa hacemos uso del comando W-n D:\inf221\hola.com-r cxCX 0000:50-rbxBX 0000:0-wWriting 00050 bytes-
  • 22. Observe ahora la carpeta INF221 de la unidad D
  • 23. Haciendo doble click sobre el ícono Hola se ejecuta el programa, y podrá ver …
  • 24. También puede ejecutarse desde la línea de comandos de DOS, con solo escribir el nombre del programa q para abandonar DEBUGWriting 00050 bytes-qD:\INF221>dir El volumen de la unidad D es respaldo El número de serie del volumen es: 9454-5398 Directorio de D:\INF22123/01/2011 10:13 p.m. <DIR> .23/01/2011 10:13 p.m. <DIR> ..23/01/2011 11:10 p.m. 80 HOLA.COM 1 archivos 80 bytes 2 dirs 14.427.561.984 bytes libresD:\INF221>holaHola MundoQue hay de nuevo?D:\INF221>El comando dir despliega el contenido de la carpeta desde donde se lo solicita
  • 25. Este es un buen momento para experimentar.Atrévase:Elabore, con ayuda de DEBUG, un programa ejecutable que despliegue en pantalla tres líneas de texto; en la primera un saludo, en la segunda su nombre y apellido y en la tercera una expresión de contento por haberlo logrado.Hasta la próxima ….