ASM/CDS/EJEMPLO3.ASM
2021-09-03 17:40:06 +02:00

110 lines
2.7 KiB
NASM
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 metros, no es necesario
; salvarlo
mov ax, 0600h ; Se borra la pantalla empleando el atributo
mov bh, [bp+4] ; pasado como par metro mediante el registro AL,
mov cx, 0000h ; almacenado ahora en la pila y recuperado con
mov dx, 184fh ; la instrucci¢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¢n al m¢dulo principal
pop bx ; stos almacenen los valores que pose¡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