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 0

Segmento de Código e Inicialización

.CODE
INICIO: MOV AX,@DATA
        MOV DS,AX
        MOV ES,AX

Menú 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 21H

Lectura 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;CICLO

Rutina 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 21H

Procesamiento 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

Entradas relacionadas: