First commit 06/07/1996

This commit is contained in:
2021-09-03 17:40:06 +02:00
commit bf4bcbd4f8
23 changed files with 1754 additions and 0 deletions

BIN
CDS/EJE1.COM Normal file

Binary file not shown.

43
CDS/EJEMPLO1.ASM Normal file
View File

@ -0,0 +1,43 @@
segmento SEGMENT para PUBLIC 'CODE'
ASSUME DS:segmento, CS:segmento
ORG 100h
principal PROC NEAR
call Borra
mov ah, 02h
mov dh, 11
mov dl, 30
mov bh, 00h
int 10h
mov ah, 09h
mov dx, OFFSET MensajeSaludo
int 21h
mov ah, 00h
int 16h
call Borra
mov ah, 4ch
int 21h
principal ENDP
Borra PROC NEAR
mov ax, 0600h
mov bh, 07h
mov cx, 0000h
mov dx, 184fh
int 10h
ret
Borra ENDP
MensajeSaludo DB '<27>Hola Mundo!$'
segmento ENDS
END principal

BIN
CDS/EJEMPLO1.EXE Normal file

Binary file not shown.

8
CDS/EJEMPLO1.MAP Normal file
View File

@ -0,0 +1,8 @@
Start Stop Length Name Class
00000H 00139H 0013AH SEGMENTO CODE
Program entry point at 0000:0100
Warning: No stack

55
CDS/EJEMPLO2.ASM Normal file
View File

@ -0,0 +1,55 @@
segmento SEGMENT
ASSUME DS:segmento
ORG 100h
principal PROC NEAR
call Borra
mov ah, 02h
mov dh, 11
mov dl, 30
mov bh, 00h
int 10h
mov ah, 09h
mov dx, OFFSET MensajeSaludo
int 21h
mov ah, 00h
int 16h
call Borra
mov ah, 4ch
int 21h
principal ENDP
Borra PROC NEAR
push ax ; Se almacenan en la pila los registros que va a utilizar
push bx ; la subrutina. El valor de SP disminuye en 4 * 2 = 8
push cx ; unidades
push dx
mov ax, 0600h ; Se borra la pantalla
mov bh, 07h
mov cx, 0000h
mov dx, 184fh
int 10h
pop dx ; Se recuperan los valores de los registros, de forma que
pop cx ; al volver el control de la ejecuci<63>n al m<>dulo principal
pop bx ; <20>stos almacenen los valores que pose<73>an antes de la
pop ax ; llamada al procedimiento. SP se incrementa en 4 * 2 = 8
; unidades
ret
Borra ENDP
MensajeSaludo DB '<27>Hola Mundo!$'
segmento ENDS
END principal


BIN
CDS/EJEMPLO2.COM Normal file

Binary file not shown.

110
CDS/EJEMPLO3.ASM Normal file
View File

@ -0,0 +1,110 @@
segmento SEGMENT
ASSUME DS:segmento
ORG 100h
principal PROC NEAR
mov ax, OFFSET Cadena1
push ax
mov al, 1eh
push ax
call VerCadena
mov ah, 00h ; Se acepta una tecla
int 16h
mov ax, OFFSET Cadena2
push ax
mov al, 21h
push ax
call VerCadena
mov ah, 00h ; Se acepta una tecla
int 16h
mov ax, OFFSET Cadena3
push ax
mov al, 34h
push ax
call VerCadena
mov ah, 00h ; Se acepta una tecla
int 16h
mov ax, OFFSET Cadena4
push ax
mov al, 42h
push ax
call VerCadena
mov ah, 00h ; Se acepta una tecla
int 16h
mov ax, OFFSET Fin
push ax
mov al, 07h
push ax
call VerCadena
mov ah, 00h ; Se acepta una tecla
int 16h
mov ah, 4ch
int 21h
principal ENDP
VerCadena PROC NEAR
push bp
mov bp, sp
push bx ; Se almacenan en la pila los registros que va a utilizar
push cx ; la subrutina. El valor de SP disminuye en 3 * 2 = 6
push dx ; unidades
; Por otro lado, cuando se sabe que el registro AX es el
; empleado para pasar los par<61>metros, no es necesario
; salvarlo
mov ax, 0600h ; Se borra la pantalla empleando el atributo
mov bh, [bp+4] ; pasado como par<61>metro mediante el registro AL,
mov cx, 0000h ; almacenado ahora en la pila y recuperado con
mov dx, 184fh ; la instrucci<63>n MOV BH, [BP+4]
int 10h
mov ah, 02h ; Se posiciona el cursor en (25,11)
mov bh, 00h
mov dh, 11
mov dl, 25
int 10h
mov ah, 09h
mov dx, [bp+6] ; El desplazamiento de la cadena que se va a visualizar
int 21h ; se mueve a DX
pop dx ; Se recuperan los valores de los registros, de forma que
pop cx ; al volver el control de la ejecuci<63>n al m<>dulo principal
pop bx ; <20>stos almacenen los valores que pose<73>an antes de la
; llamada al procedimiento. SP se incrementa en 3 * 2 = 6
; unidades
pop bp ; Se restaura BP
ret 4
VerCadena ENDP
Cadena1 DB 'Primera cadena que se visualiza$'
Cadena2 DB 'Segunda cadena que se visualiza$'
Cadena3 DB 'Tercera cadena que se visualiza$'
Cadena4 DB 'Cuarta cadena que se visualiza$'
Fin DB 'Fin del programa ejemplo$'
segmento ENDS
END principal


BIN
CDS/EJEMPLO3.COM Normal file

Binary file not shown.

61
CDS/EJEMPLO4.ASM Normal file
View File

@ -0,0 +1,61 @@
segmento SEGMENT
ASSUME DS:segmento
ORG 100h
principal PROC NEAR
mov ax, Numero
push ax
mov ax, OFFSET Producto
push ax
call Multiplica
mov ah, 4ch
int 21h
principal ENDP
Multiplica PROC NEAR
push bp ; se salva BP
mov bp, sp ; se hace que BP apunte a la zona de par<61>metros
sub sp, 2 ; se crea espacio para una variable local de 2 bytes
push si ; se salva SI
mov si, [bp+4] ; se mueve a SI el desplazamiento del campo resultado
mov ax, [bp+6] ; se mueve a AX el n<>mero que va a ser multiplicado por 9,5
shr ax, 1 ; se divide el n<>mero entre 2
mov [bp-2], ax ; se guarda el resultado en la variable local
mov ax, [bp+6] ; se mueve a AX de nuevo el n<>mero que va a ser multiplicado por 9,5
shl ax, 1 ; se multiplica AX por 8 por el m<>todo de los desplazamientos
shl ax, 1
shl ax, 1
add ax, [bp+6] ; se suma el resultado de la multiplicaci<63>n con el
; n<>mero para obtener el producto de <20>ste por 9
add ax, [bp-2] ; se suma la mitad del n<>mero original al resultado de
; multiplicar por 9
mov [si], ax ; se mueve al campo resultado
pop si ; se recupera el valor inicial de SI
mov sp, bp ; se elimina la variable local
pop bp ; se recupera el valor inicial de BP
ret 4 ; finaliza el proceso restaurando la pila
Multiplica ENDP
Numero WORD 1000h
Producto WORD ?
segmento ENDS
END principal


BIN
CDS/EJEMPLO4.COM Normal file

Binary file not shown.