Ejemplo de Código en Lenguaje Ensamblador x86 con Menú y Captura de Datos
Clasificado en Física
Escrito el en
español con un tamaño de 3,14 KB
Estructura del Programa en Lenguaje Ensamblador
A continuación se presenta el código fuente estructurado y optimizado para arquitecturas x86 bajo MS-DOS, utilizando directivas de ensamblador estándar.
Declaración de Datos y Segmento de Pila
.MODEL SMALL
.STACK
.DATA
msjSNombre db 'Tu nombre es: '
nombre db 50,0,51 dup(?),10,13
msjSFecha db 'Tu fecha de nacimiento es: '
fechaNaci db 20,0,21 dup(?),10,13
msjSDomici db 'Tu domicilio es: '
domicilio db 50,0,51 dup(?)
msjnombre db 'Ingresar tu Nombre completo: $',10,13
msjfecha db 10,13,'Ingrese su fecha de nacimiento: $',10,13
msjDomici db 10,13,'Ingrese su domicilio: $',10,13
msjMenu db ' --- MENÚ --- $'
mjsOp1 db '1.- Captura $'
mjsOp2 db '2.- Salir $'
opcion db 0Segmento de Código e Inicialización
.CODE
INICIO: MOV AX,@DATA
MOV DS,AX
MOV ES,AXMenú Principal e Interfaz de Usuario
MENU:
MOV AH,2 ;CURSOR
MOV DH,6 ;RENGLON
MOV DL,30 ;COLUMNA
MOV BH,0 ;PAG
INT 10H
MOV AH,9
LEA DX,msjMenu
INT 21H
MOV AH,2 ;CURSOR
MOV DH,8 ;RENGLON
MOV DL,30 ;COLUMNA
MOV BH,0 ;PAG
INT 10H
MOV AH,9
LEA DX,mjsOp1
INT 21HLectura de Teclado y Validación de Opciones
MOV AH,2 ;CURSOR
MOV DH,10 ;RENGLON
MOV DL,30 ;COLUMNA
MOV BH,0 ;PAG
INT 10H
MOV AH,9
LEA DX,mjsOp2
INT 21H
TECLA:
MOV AH,2
MOV DH,18
MOV DL,39
MOV BH,0
INT 10H
MOV AH,1 ;CARACTER
INT 21H
MOV opcion,AL;RECUPERAR
COMPARAR:
CMP opcion,'1'
JE CAPTURAR
CMP opcion,'2'
JE FIN
JMP TECLA;CICLORutina de Captura de Datos
CAPTURAR:
MOV AH,2
MOV DH,20
MOV DL,0
MOV BH,0
INT 10H
MOV AH,9 ;IMPRIMIR
LEA DX,msjnombre
INT 21H
MOV AH,10 ;ENTRADA CADENA
LEA DX,nombre
INT 21H
MOV AH,9 ;IMPRIMIR
LEA DX,msjfecha
INT 21H
MOV AH,10 ;ENTRADA CADENA
LEA DX,fechaNaci
INT 21H
MOV AH,9 ;IMPRIMIR
LEA DX,msjDomici
INT 21H
MOV AH,10 ;ENTRADA CADENA
LEA DX,domicilio
INT 21HProcesamiento y Salida del Programa
MOV CX,187
MOV SI,OFFSET msjSNombre ;LEA
MOV AH,5
MOV DL,12 ;NEW PAG
INT 21H
MOV SI,0
CICLO:
PUSH CX
MOV AH,5
MOV DL,[SI]
INT 21H
INC SI
POP CX
LOOP CICLO
JMP MENU ;BREAK
FIN:
MOV AX,400CH
INT 21H
END