Este programa fue mi primer examen en el ensamblador, consta de 3 módulos, la primer parte era hacer un cuadro de toda la pantalla y pedir a usuario dos cadenas para concatenarlas y formar una sola, la segunda parte es que te pudieras desplazar entre la cadena concatenada y poderle cambiar el color de la letra de acuerdo a un menú mostrado y por ultimo era cambiar le el color del fondo también respecto a un menú. Esta un puco largo por que no lo optimic, el chiste es que salga en los examenes jejej.
;programa que pide dos cadenas y las concatena, tambien cambia el
;color de fondo y el color de la letra seleccionada
;elgame
.model tiny
.data
fila db 0
colu db 0
fini db 7
ffin db 18
cini db 12
cfin db 68
atri db 07h
ms1 db 'Cadena1 $'
ms2 db 'Cadena2 $'
men1 db '3.- azul 4.-verde 5.-cafe 6.- rojo$'
men2 db '7.- azul 8.-rojo 9.-azul-ver 0.- verde$'
con db 0
con1 db 0
cadena db 10 dup (' ')
cadena1 db 10 dup (' ')
cadena2 db 21 dup (' '),'$'
.code
clear macro
mov ah,00h ;limpia la pantalla
mov al,03h
int 10h
endm
gotoxy macro fil,col
mov ah,02h ;posiciona el cursor
mov dh,fil ;fila
mov dl,col ;columna
mov bh,0 ;pagina de video
int 10h
endm
leepos macro
mov ah,03h ;lee la posiscion del cursor
mov bh,0
int 10h
endm
leeatri macro
mov ah,08h ;lee el carac y atribu donde
mov bh,0h ;esta el cursor
int 10h
endm
escriatri macro
mov ah,09h ;escribe el carac y atribu
mov bh,0h ;donde esta el cursor
mov bl,atri
mov cx,1
int 10h
endm
cuadro macro fi,ff,ci,cf
local etiqueta
local etiqueta2
mov cl,ci
etiqueta: ;ciclo para mostrar la fila superior
gotoxy fi,cl ;fila superior
mov ah,02h ;inter. imprimir
mov dl,205 ;movemos a dl
int 21h
gotoxy ff,cl ;fila inferior
mov ah,02h
mov dl,205
int 21h
inc cl
cmp cl,cf
jne etiqueta ;ciclo aumenta + 1
mov cl,fi
etiqueta2:
gotoxy cl,ci ;columna izquierda
mov ah,02h
mov dl,186
int 21h
gotoxy cl,cf ;columna derecha
mov ah,02h
mov dl,186
int 21h
inc cl
cmp cl,ff
jne etiqueta2 ;ciclo aumenta + 1
gotoxy fi,ci ;mostrar el codo superior izq
mov ah,02h
mov dl,201
int 21h
gotoxy fi,cf ;mostrar el codo superior der
mov ah,02h
mov dl,187
int 21h
gotoxy ff,ci ;mostrar el codo inferior izq
mov ah,02h
mov dl,200
int 21h
gotoxy ff,cf ;mostrar el codo inferior der
mov ah,02h
mov dl,188
int 21h
endm
.startup
clear ;limpia pantalla
;fi,ff,ci,cf
cuadro 1,24,0,79 ;dibuja cuadro
gotoxy 2,2
mov ah,09h
lea dx,ms1
int 21h
mov si,0
lee:
mov ah,01h
int 21h
mov cadena[si],al
inc si
cmp si,10
jne lee
gotoxy 3,2
mov ah,09h
lea dx,ms1
int 21h
mov si,0
lee1:
mov ah,01h
int 21h
mov cadena1[si],al
inc si
cmp si,10
jne lee1
mov cx,0
lea di,cadena2
lea si,cadena
repite:
mov al,[si]
mov [di],al
inc si
inc di
inc cx
cmp cx,10
jne repite
mov cx,0
lea si,cadena1
repite1:
mov al,[si]
mov [di],al
inc si
inc di
inc cx
cmp cx,10
jne repite1
gotoxy 20,10
mov ah,09h
lea dx,men1
int 21h
gotoxy 21,10
mov ah,09h
lea dx,men2
int 21h
gotoxy 5,10
mov ah,09h
lea dx,cadena2
int 21h
gotoxy 5,10
mov colu,10
menu1:
mov ah,08h
int 21h
cmp al,31h
je izquierda
cmp al,32h
je derecha
cmp al,33h
je color1
cmp al,34h
je color2
cmp al,35h
je color3
cmp al,36h
je color4
cmp al,37h
je fondo1
cmp al,38h
je fondo2
cmp al,39h
je fondo3
cmp al,30h
je fondo4
cmp al,13
jne menu1
jmp salir
izquierda:
cmp colu,10
je menu1
dec colu ;decremento la columna
gotoxy 5,colu ;posiciono el cursor
jmp menu1
derecha:
cmp colu,29
je menu1
inc colu
gotoxy 5,colu ;posiciono el cursor
jmp menu1
color1: ;azul
leeatri ;lee el atributo
mov atri,01h
escriatri ;escribe el atributo
jmp menu1
color2: ;verde
leeatri ;lee el atributo
mov atri,02h
escriatri ;escribe el atributo
jmp menu1
color3: ;cafe
leeatri ;lee el atributo
mov atri,06h
escriatri ;escribe el atributo
jmp menu1
color4: ;rojo
leeatri ;lee el atributo
mov atri,04h
escriatri ;escribe el atributo
jmp menu1
fondo1: ;rojo
mov con,0
foon:
mov con1,0
foon1:
gotoxy con,con1
leeatri ;lee el atributo
mov atri,17h
escriatri ;escribe el atributo
inc con1
cmp con1,80
jne foon1
inc con
cmp con,24
jne foon
jmp menu1
fondo2: ;rojo
mov con,0
fooon:
mov con1,0
fooon1:
gotoxy con,con1
leeatri ;lee el atributo
mov atri,47h
escriatri ;escribe el atributo
inc con1
cmp con1,80
jne fooon1
inc con
cmp con,24
jne fooon
jmp menu1
fondo3: ;rojo
mov con,0
fonn:
mov con1,0
fonn1:
gotoxy con,con1
leeatri ;lee el atributo
mov atri,37h
escriatri ;escribe el atributo
inc con1
cmp con1,80
jne fonn1
inc con
cmp con,24
jne fonn
jmp menu1
fondo4: ;rojo
mov con,0
fon:
mov con1,0
fon1:
gotoxy con,con1
leeatri ;lee el atributo
mov atri,27h
escriatri ;escribe el atributo
inc con1
cmp con1,80
jne fon1
inc con
cmp con,24
jne fon
jmp menu1
izq:
cmp colu,5
je menu1
leeatri ;lee el atributo
mov al,' '
escriatri ;escribe el atributo
dec colu ;decremento la columna
gotoxy fila,colu ;posiciono el cursor
mov al,'*'
escriatri ;escribe el atributo
jmp menu1
salir:
.exit
end
Descargar