First commit 06/07/1996
This commit is contained in:
BIN
CDS/EJE1.COM
Normal file
BIN
CDS/EJE1.COM
Normal file
Binary file not shown.
43
CDS/EJEMPLO1.ASM
Normal file
43
CDS/EJEMPLO1.ASM
Normal 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
BIN
CDS/EJEMPLO1.EXE
Normal file
Binary file not shown.
8
CDS/EJEMPLO1.MAP
Normal file
8
CDS/EJEMPLO1.MAP
Normal 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
55
CDS/EJEMPLO2.ASM
Normal 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
BIN
CDS/EJEMPLO2.COM
Normal file
Binary file not shown.
110
CDS/EJEMPLO3.ASM
Normal file
110
CDS/EJEMPLO3.ASM
Normal 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
BIN
CDS/EJEMPLO3.COM
Normal file
Binary file not shown.
61
CDS/EJEMPLO4.ASM
Normal file
61
CDS/EJEMPLO4.ASM
Normal 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
BIN
CDS/EJEMPLO4.COM
Normal file
Binary file not shown.
Reference in New Issue
Block a user