Documentos de Académico
Documentos de Profesional
Documentos de Cultura
DEBUG.EXE es un ejecutable que, hasta 2001, acompañó a todas las versiones de MS-DOS, a partir
de la 2.0, y de Windows. Es sin duda un programa antiguo, pero de enorme potencial didáctico
para el principiante.
Se trata de una utilidad interactiva de exploración de bajo nivel, pero que también puede utilizarse
para ciertas funciones. Por ejemplo, como un tosco traductor de sentencias ensamblador a
lenguaje máquina. Como todos los programas de su tipo, debe utilizarse con cierto cuidado. En
especial si utiliza el comando W (se puede borrar todo un disco duro con un simple comando
erróneo). Para utilizarlo basta invocarlo desde MS-DOS o desde una ventana DOS de Windows.
Aunque en este último caso algunas de sus funcionalidades más interesantes nos estarán vetadas.
EMU8086
El emu8086 es un emulador del microprocesador 8086 (Intel o AMD compatible) con assembler
integrado.
Dado que en un entorno emulado de microprocesador no es posible implementar una interfaz real
de entrada/salida, el emu8086 permite interfacear con dispositivos virtuales y emular una
comunicación con el espacio de E/S. Para esto, el emu8086 cuenta con una serie de dispositivos
virtuales preexistentes en el software base, listos para ser utilizados, entre los que se encuentran
una impresora, un cruce de calles con semáforos, un termómetro, un motor paso a paso, etc.
Grupos de instrucciones
Transferencia de datos
Instrucciones aritméticas
AAA, AAD, AAM, AAS ajuste ASCII para suma, división, producto y resta
AND Y lógica
OR O lógica
XOR O exclusivo
Cadenas
Transferencia de programa
INT 3 interrupción 3
JA, JAE, JB, JBE saltar si mayor, mayor o igual, menor, menor o igual
JE/JZ saltar si es cero o igual
JG, JGE, JL, JLE saltar si mayor, mayor o igual, menor, menor o igual
JCXZ saltar si CX es 0
NOP no operación
EJEMPLOS DE PROGRAMAS
.data
suma db 2 dup (?)
.code
Sumas proc
print " "
print "Introduce el primer numero ===> "
call scan_num
mov suma[0],cl
printn " "
print "Introduce el segundo numero ===> "
call scan_num
mov suma[1],cl
printn " "
xor ax,ax
add al,suma[0]
add al,suma[1]
printn " "
print "La suma es: "
call print_num
Sumas endp
exit:
printn " "
printn " "
print "Presiona enter para salir... "
mov ah,0
int 16h
ret
define_print_string
define_print_num
define_print_num_uns
define_scan_num
end
Promedio de 3 números
include "emu8086.inc"
org 100h
.data
pro db 4 dup (?)
.code
promedio proc
printn ""
print "introduce una calificacion: "
call scan_num
mov pro[0],cl
printn ""
print "introduce la 2da calificacion: "
call scan_num
mov pro[1],cl
printn ""
print "introduce la 3ra calificacion: "
call scan_num
mov pro[2],cl
printn ""
print "numero de materias: "
call scan_num
mov pro[3],cl
xor ax,ax
add al,pro[0]
add al,pro[1]
add al,pro[2]
div pro[3]
printn ""
print "promedio es= "
call print_num
promedio endp
exit:
printn ""
printn ""
print "presione para salir..."
mov ah,0
int 16h
ret
define_print_string
define_print_num
define_print_num_uns
define_scan_num
end
ORDENAMIENTO 5 NÚMEROS
SIMULACIÓN DEBUG
El programa al iniciarse nos pedirá que ingresemos cinco números, luego e ste los ordenara y nos
retornara los números de menor a mayor.