Scripts de ensamblador

« 1/2 2 »
Con este programita en ensamblador puedes obtener el directorio en donde se encuentre actualmente el ms-dos.
.model tiny
.stack
.data
cad db 'Estas en $'
unidad db 'ABCDEFGH'
ruta db 30 dup(' '),'$'
 
.code
.startup
mov ah,19h ;Me fijo en que Unidad estas
int 21h
push ax
mov ah,09h
lea dx,cad ;Posiciono la direccion de la cadena
int 21h
pop ax
mov bl,al
mov dl,unidad[BX] ;posiciono la direccion en la cadena,
;en la letra donde estoy
mov ah,02h
int 21h
 
mov ah,47h ;Optener la carpta en que estoy
mov dl,03h ;Unidad donde quiero conocer el directorio
lea si,ruta ;En ruta guarde el nombre de directorio en el
;que estoy
int 21h
 
mov ah,09h
LEA DX, ruta
int 21h
 
.exit
end

 

Autor: elgame

En este programa se muestra como leer u obtener el directorio en donde te encuentras actualmente, asi como poder cambiarte de directorio y de unidad.

;porgrama que cambia de direcctorio y de unidad como
;el ms-dos www.pro-gramas.com
.model tiny
.data
opc1 db '1.- Cambiar unidad$'
opc2 db '2.- Cambiar directorio$'
opc3 db 'Salir [enter] -> $'
ms1 db 'Url -> $'
ms2 db 'Unidad -> $'
ms3 db 'Directorio (\) -> $'
unidad db 'ABCDEFGH'
ruta db 30 dup(' ')
dir db 30 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
 
write macro ;escribe una cadena
mov ah,09h
int 21h
endm
 
writec macro ;escribe un caracter
mov ah,02h
int 21h
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
 
pactual macro
local repite
local repite1
 
mov cx,29
mov di,0
repite:
mov ruta[di],' '
inc di
loop repite
 
gotoxy 2,10
 
lea dx,ms1 ;Posiciono la direccion de la cadena
write ;escribe una cadena
 
mov ah,19h ;Me fijo en que Unidad estas
int 21h
 
push ax
 
mov bl,al
mov dl,unidad[BX] ;posiciono la direccion en la cadena, en la letra donde estoy
mov dir[0],dl
mov dir[1],':'
mov dir[2],'\'
 
pop ax
inc al
mov ah,47h ;Optener la carpta en que estoy
mov dl,al ;Unidad donde quiero conocer el directorio
lea si,ruta ;En ruta guarde el nombre de directorio en el que estoy
int 21h
 
mov cx,0
lea di,dir
add di,3
lea si,ruta
repite1:
mov al,[si]
mov [di],al
inc si
inc di
inc cx
cmp cx,29
jne repite1
 
mov dir[30],'$'
lea dx,dir
write
endm
 
;cuenta cuantos caracteres tiene una cadena
countc macro car,count
mov al,car
mov cx,count ;cuantas repeticiones
repne scasb ;compara la cadena con al
 
add cx,2
mov dh,0
mov dl,count
sub dx,cx
endm
.startup
 
repite:
clear ;limpia pantalla
;fi,ff,ci,cf
cuadro 1,24,0,79 ;dibuja cuadro
pactual ;posicion actual de url
gotoxy 10,10
lea dx,opc1
write
gotoxy 11,10
lea dx,opc2
write
gotoxy 12,10
lea dx,opc3
write
 
mov ah,08h
int 21h
 
cmp al,31h
je unida
 
cmp al,32h
je directorio
 
cmp al,13
jne repite
 
jmp salir
 
unida:
gotoxy 10,45
lea dx,ms2
write
 
mov ah,01h ;leo unidad
int 21h
sub al,30h
 
mov ah,0eh ;selecciona la unidad
mov dl,al
int 21h
jmp repite
 
directorio:
gotoxy 10,45
lea dx,ms3
write
 
lea di,dir
countc ' ',30
 
mov si,dx ;muevo a si el contador
repite3: ;concateno en dir la carpeta
mov ah,08h
int 21h
 
cmp al,13
je conti
 
mov ah,02h
mov dl,al
int 21h
mov dir[si],al
inc si
 
conti:
cmp al,13
jne repite3
 
inc si
mov dir[si],00h
 
mov ah,3bh ;cambia de directorio
lea dx,dir
int 21h
jmp repite
 
salir:
 
.exit
end
Autor: elgame

Este programa pide una cadena y dos caracteres, el primero es el carácter a buscar en la cadena y el segundo es el carácter a remplazar, con las instrucciones rep y scas se realiza la búsqueda si encuentra un carácter igual lo remplaza con stos.

;programa que pide una cadena y dos caracteres,en ella
;se realiza una busqueda con el primer caracter y al
;encontrar una ocurrencia lo remplaza por el segundo.
;utiliza las instrucciones stos y scas.
.model tiny
.data
cadena db 10 dup (' '),'$'
carb db 1
carr db 1
ms1 db 10,13,'Cadena => $'
ms2 db 10,13,'Caracter buscar => $'
ms3 db 10,13,'Caracter remplazar => $'
.code
mensaje macro
mov ah,09h ;mostramos la cadena
int 21h
endm
.startup
lea dx,ms1
mensaje
mov cx,10
lea di,cadena
repite:
mov ah,01h
int 21h ;lee un caracter
stosb ;pasa lo que ahy en al a la cadena
loop repite
 
lea dx,ms2
mensaje
mov ah,01h
int 21h ;lee el caracter a buscar
mov carb,al
 
lea dx,ms3
mensaje
mov ah,01h
int 21h ;lee el caracter a remplazar
mov carr,al
 
mov cx,10
lea di,cadena
repite1:
mov al,carb ;caracter a buscar
repne scasb ;repite si es distinto
dec di
mov al,carr ;caracter a remplazar
stosb ;lo cambia
cmp cx,0
jne repite1
 
lea dx,ms1
mensaje
mov ah,09h ;mostramos la cadena
lea dx,cadena
int 21h
.exit
end
Autor: elgame

Programa que le dos cadenas y usando las instrucciones stos y cmps compara las cadenas y determina si son iguales o no.

;programa que le dos cadenas con stos y las compara con cmps
;y dise si son iguales o no
;stos: almacena el contenido de los registros al, ax y eax
;en memoria (inc di)
;cmps: compara localidades de memoria de un byte, palabra o
;palabra doble
.model tiny
.data
cadena db 10 dup (' '),'$'
 
cad2 db 10 dup (' '),'$'
ms1 db 'Si son iguales$'
ms2 db 'No son iguales$'
.code
.startup
mov cx,10
lea di,cadena
repite:
mov ah,01h
int 21h
stosb
loop repite
 
mov cx,10
lea di,cad2
repite1:
mov ah,01h
int 21h
stosb
loop repite1
 
mov ax,ds ;muevo el segmento dato
mov es,ax ;al segmento extra
mov cx,10 ;cuantas repeticiones
lea di,cad2 ;cadena dos
lea si,cadena ;cadena uno
repe cmpsb ;compara las dos cadenas
je iguales
 
lea dx,ms2
jmp salir
 
iguales:
lea dx,ms1
 
salir:
mov ah,09h
int 21h
.exit
end

 

Autor: elgame

Programa que pide una cadena y un carácter, utilizando la instrucción scas y rep realizamos una búsqueda y contamos cuantas bese se repite el carácter en la cadena.

;programa que le una cadena y un caracter, y cuenta cuantas
;veses se repite el caracter
;scas(busqueda en cadenas): compara el contenido de al, ax o
;eax con el contenido de localidades de memoria (inc di)
.model tiny
.data
eti label byte
max db 20
count db ?
cadena db 20 dup (' '),'$'
.code
.startup
mov ah,0ah
lea dx,eti
int 21h
 
mov ah,01h
int 21h
 
mov bx,ds ;muevo el segmento dato
mov es,bx ;al segmento extra
mov ch,0
mov cl,count ;cuantas repeticiones
mov dl,0 ;contador del caracter
lea di,cadena ;cadena
repite:
repne scasb ;compara la cadena con al
inc dl ;incrementa el contador de car
cmp cx,0
jne repite
 
mov ah,02h
add dl,30h
int 21h
.exit
end

 

Autor: elgame

Programa que pide una cadena y con la instrucción movs copia la cadena a otra moviendo los caracteres directamente a direcciones de memoria.

;programa que mueve caracteres de una direccion de memoria
;a otra utilizanda la instruccion movs
;movs: mueve un byte, palabra o palabra doble desde una
;localidad en memoria a otra.
.model tiny
.data
eti label byte
max db 10
count db ?
cadena db 10 dup (' '),'$'
 
cad2 db 10 dup (' '),'$'
.code
.startup
mov ah,0ah
lea dx,eti
int 21h
 
mov ax,ds ;muevo el segmento dato
mov es,ax ;al segmento extra
mov cx,5 ;cuantas repeticiones
lea di,cad2 ;cadena destino
lea si,cadena ;cadena fuente
rep movsb ;mueve 5 caracteres
 
mov ah,09h
lea dx,cad2
int 21h
.exit
end
Autor: elgame

Este programa pide una cadena, y utilizando instrucciones para el manejo de cadenas (en este caso lods) la cadena original la voltea.

;programa que boltea una cadena utilizando la instruccion
;lodsb
;lods: carga desde memoria un byte, palabra o palabra doble
;en los registros al, ax, eax respectivamente (inc si)
.model tiny
.data
eti label byte
max db 10
count db ?
cadena db 10 dup (' '),'$'
 
cad2 db 10 dup (' '),'$'
.code
.startup
mov ah,0ah
lea dx,eti
int 21h
 
mov ax,ds ;muevo el segmento dato
mov es,ax ;al segmento extra
mov cx,10 ;cuantas repeticiones
lea di,cad2+9 ;cadena destino
lea si,cadena ;cadena fuente
repite:
lodsb ;pone en al un caracter
mov [di],al ;lo pasa a cad2
dec di ;resto 1 a cad2
loop repite
 
mov ah,09h
lea dx,cad2
int 21h
.exit
end
Autor: elgame

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

 

Autor: elgame

Este programa permite mover un punto dentro de un cuadro o aria especificada, el pinto se puede mover hacia arriba, abajo, derecha e izquierda. Ilustra el manejo de pantalla con macros.

;programa que mueve un punto "*" en toda la pantalla
;la tecla 1 = mueve a la izquierda, 2 = a la derecha
;3 = mueve arriba y el 4 = mueve abajo
.model tiny
.data
fila db 0
colu db 0
fini db 7
ffin db 18
cini db 12
cfin db 68
 
con db 0
con1 db 0
.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,70h ;color de atributo
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 5,20,10,70 ;dibuja cuadro
cuadro fini,ffin,cini,cfin ;dibuja cuadro
 
mov con,8 ;pinta el cuadro
pinta:
mov con1,13
pinta1:
gotoxy con,con1
mov al,' '
escriatri
inc con1
cmp con1,68
jne pinta1
inc con
cmp con,18
jne pinta
 
inc fini
inc cini
 
mov al,fini
mov fila,al
mov al,cini
mov colu,al
 
gotoxy fini,cini ;posiciona
 
mov ah,02h
mov dl,'*'
int 21h
 
gotoxy fini,cini
 
repite:
mov ah,08h
int 21h
 
cmp al,49
je izquierda
 
cmp al,50
je derecha
 
cmp al,51
je arriba
 
cmp al,52
je abajo
cmp al,13
jne repite
 
jmp salir
 
izquierda:
cmp colu,13 ;columna inicio + 1
je repite
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 repite
 
derecha:
cmp colu,67 ;columna fin - 1
je repite
leeatri ;lee el atributo
mov al,' '
escriatri ;escribe el atributo
inc colu ;incrementa la columna
gotoxy fila,colu ;posiciono el cursor
mov al,'*'
escriatri ;escribe el atributo
jmp repite
 
arriba:
cmp fila,8 ;fila inicio + 1
je repite
leeatri ;lee el atributo
mov al,' '
escriatri ;escribe el atributo
dec fila ;decremento la fila
gotoxy fila,colu ;posiciono el cursor
mov al,'*'
escriatri ;escribe el atributo
jmp repite
 
abajo:
cmp fila,17 ;fila fin - 1
je repite
leeatri ;lee el atributo
mov al,' '
escriatri ;escribe el atributo
inc fila ;incrementa la fila
gotoxy fila,colu ;posiciono el cursor
mov al,'*'
escriatri ;escribe el atributo
jmp repite
 
salir:
 
.exit
end

 

Autor: elgame

Programa dibuja un cuadro, puede ser de dos tipos con líneas dobles o con líneas simples, se utilizan procedimientos.  

;programa que dibija un cuadro doble o simple, se utilizan 3
;procedimientos gotoxy, writec y porsupuesto cuadro
.model tiny
.stack
.data
car_f db 0
car_c db 0
car_is db 0
car_ii db 0
car_ds db 0
car_di db 0
.code
.startup
writec proto c, car:byte
gotoxy proto c, fil:byte, col:byte
cuadro proto c, fi:byte, ff:byte, ci:byte, cf:byte, tipo:byte
 
invoke cuadro, 5,20,5,20,'s'
.exit
writec proc c, car:byte ;escribe un caracter
mov ah,02h
mov dl,car
int 21h
ret
writec endp
 
gotoxy proc c, fil:byte, col:byte ;procedimiento con parametro
mov ah,02h ;posicionar el cursor
mov dh,fil ;fila
mov dl,col ;columna
mov bh,0 ;pagina de video
int 10h
ret
gotoxy endp
 
cuadro proc c, fi:byte, ff:byte, ci:byte, cf:byte, tipo:byte
cmp tipo,'d' ;comparo si el tipo es doble
je doble
jne simple
doble: ;caracteres para el cuadro doble
mov car_f,205
mov car_c,186
mov car_is,201
mov car_ii,200
mov car_ds,187
mov car_di,188
jmp continua
 
simple: ;caracteres oara el cuadro simple
mov car_f,196
mov car_c,179
mov car_is,218
mov car_ii,192
mov car_ds,191
mov car_di,217
continua:
mov cl,ci
etiqueta: ;ciclo para mostrar las filas supe y infe
invoke gotoxy, fi,cl
invoke writec, car_f
 
invoke gotoxy, ff,cl
invoke writec, car_f
 
inc cl
cmp cl,cf
jne etiqueta ;ciclo aumenta + 1
 
mov cl,fi
etiqueta2: ;mostrar las columnas izq y der
invoke gotoxy, cl,ci ;columna izquierda
invoke writec, car_c
 
invoke gotoxy, cl,cf ;columna derecha
invoke writec, car_c
 
inc cl
cmp cl,ff
jne etiqueta2 ;ciclo aumenta + 1
 
invoke gotoxy, fi,ci ;mostrar el codo superior izq
invoke writec, car_is
 
invoke gotoxy, fi,cf ;mostrar el codo superior der
invoke writec, car_ds
 
invoke gotoxy, ff,ci ;mostrar el codo inferior izq
invoke writec, car_ii
 
invoke gotoxy, ff,cf;mostrar el codo inferior der
invoke writec, car_di
ret
cuadro endp
end

 

Autor: elgame
« 1/2 2 »