Ensamblador ej01ca07

Solo disponible en BuenasTareas
  • Páginas : 2 (325 palabras )
  • Descarga(s) : 4
  • Publicado : 10 de mayo de 2010
Leer documento completo
Vista previa del texto
CODIGO DE MACRO BIB

Borra_Pantalla MACRO
Mov AH, 0Fh
Int 10h
Mov AH, 0
Int 10h
ENDM

Despliega_Mens MACRO Mensaje
Push AX
Push DX
Mov DX, OFFSET Mensaje
Mov AH, 09h
INT 21h
Pop DXPop AX
ENDM

Pon_Cursor MACRO Fila, Columna
Push AX
Push BX
Push DX
Mov AH, 02h
Mov DH, Fila
Mov DL, Columna
Mov BH, 0
INT 10h
Pop DX
Pop BX
Pop AX
ENDM

Copia_Buffer MACRO De, Hacia,Cantidad
Push SI
Push DI
Push CX
Mov SI, OFFSET De+2
Mov DI, OFFSET Hacia
Mov CX, Cantidad
REP MOVSB
Pop CX
Pop DI
Pop SI
ENDM

CODIGO DE PROGRAMA

INCLUDE MACROBIB.BIB
.model small.Data
Nombre DB 40,0,40 DUP(?)
Buffer DB 40 DUP(?)
Mensaje DB "Bienvenidos a EJ01CA07, programa que le permite capturar"
DB "Una cadena de caracteres (su nombre) y desplegarla. El"DB "proposito es usar el uso de MACROS",13,10
DB "Para finalizar digite FIN en mayusculas.",13,10
DB 13,10,"$"
Error DB 7,7,7, "ERROR: Cadena no puede ser NULA. Oprimacualquier"
DB "TECLA !$"
BorraL DB "$"
Final DB "FIN"
CadUnoM DB "Digite su NOMBRE: $"
CadUnoD DB "Nombre capturado: $"

.CODE
Empieza:

mov Ax, @Data
mov Ds, Ax
Push Ds
Pop EsBorra_Pantalla
Pon_Cursor 1,1
Despliega_Mens Mensaje

CAPNOM01:

Pon_Cursor 10,1
Despliega_Mens CadUnoM
Pon_Cursor 10,19
Despliega_Mens BorraL
Pon_Cursor 10,19
Mov DX, OFFSET Nombre
Mov Ah,0Ah
Int 21h
Inc DX

Mov Si, Dx
Xor Bh, Bh
Mov Bl, Byte Ptr [Si]
Cmp Bl, 0
Push Bx
Jnz CAPNOM02
Pon_Cursor 20,1
Despliega_Mens Error
Mov Ah, 0
Int 16h
Pop BX
Pon_Cursor 20,1Despliega_Mens BorraL
Jmp CAPNOM01

CAPNOM02:
Pop Bx
Inc Dx
Mov Cx, 3
Mov Si, Dx
Mov Di, Offset Final
Repe Cmpsb
Jcxz TERMINA
Copia_Buffer Nombre, Buffer, Bx
Mov Buffer[Bx], 024h
Pon_Cursor 20,1Despliega_Mens CadUnoD
Pon_Cursor 20,19
Despliega_Mens BorraL
Pon_Cursor 20,19
Despliega_Mens Buffer
Jmp CAPNOM01

Termina:
Borra_pantalla
Mov Ax, 4C00H
Int 21h
.STACK
End Empieza
tracking img