Você está na página 1de 8

Leer carácter sin eco

Leer un carácter sin eco quiere decir que al pulsar un carácter esta no se
mostrara hasta que hagamos un método para desplegar el carácter.

mov ah, 07h (08h)


int 21h
 En la primera instrucción (mov ah, 07h) nos permite leer el caracter sin eco,
al igual que el código anterior aquí también hay otras funciones más.
 Y por último mandamos a llamar al BIOS.

Leer un caracter con eco


Leer un caracter con eco quiere decir que al leer el caracter, este lo mostrara y
lo podemos hacer con el siguiente código.

mov ah, 01h


int 21h

 La primera instrucción (mov ah, 01h) es lo que nos permite leer el caracter
con eco, cabe destacar que yo estoy utilizando esta función (01h) pero
hay otros también.
 En el último solo mandamos a llamar el BIOS

Instrucción Loop: Generar un ciclo en el programa.

Sintaxis:

LOOP etiqueta

La instrucción loop decrementa CX en 1, y transfiere el flujo del programa a la


etiqueta dada como operando si CX es diferente a 1.

Uso de CX

CX se usa principalmente como contador en los bucles. Estos son tan


frecuentes que existe una instrucción especial, LOOP, que comprueba su
valor, volviendo al principio del bucle si es distinto de cero:

MOV CX, 10 ; 10 es el número que se le pasa al contador

BUCLE:
Instrucciones

LOOP BUCLE

Instrucción aritmética INC

INC (INCrement) Incrementa (suma 1 a) el contenido de un registro o de una


posición de memoria.

INC AX ; AX=AX+1

INC DL ; DL=DL+1

Definición de tipo de variable

De modo similar a DB, se pueden definir otros tipos de variables en lenguaje


ensamblador. Lo único que varía es el tamaño de los datos y el nombre de la
directiva:

 DB (Define Byte) Reservar datos de tamaño byte (8 bits)


 DW (Define Word) Reservar datos de tipo palabra (16 bits)
 DD (Define Doubleword) Reservar datos de tipo doble palabra (32 bits)
 DQ (Define Quadword) Reservar datos de tipo cuádruple palabra (64 bits)
 DT (Define Terabyte) Reservar datos de tipo terabyte (80 bits o 10 bytes)

Registro SI

El registro índice fuente de 16 bits es requerido por algunas operaciones con


cadenas.
ASSUME CS:cseg, DS:dseg, SS:sseg

cseg SEGMENT
start:
mov AX, dseg ;el registro de datos se asigna al acumulador
mov DS, AX ;el registro acumulador se asigna al registro de datos

; limpiar la pantalla

mov AH,6
mov AL,0
mov CH,0
mov CL,0
mov DH,0
mov DH,24
mov DL,79
mov BH,07H
INT 10H

; lee un carácter sin eco

mov cx,5 ;se asigna al registro contador 5


mov si,0 ;se le indica la pila índice un 0
leer: ;se inicia el ciclo loop
mov ah,08h ;permite leer carácter sin eco
int 21h

; lee 5 caracteres y los guarda la cadena

mov dl,al
mov ah,02h
int 21h
mov byte ptr [di],dl ;se asigna la variable cadena del destino índice al registro

bajo de datos

inc di ;se indica que se hará un loop a di


loop leer ;indica que leer será un loop

;posicion de la cadena en pantalla

mov ah,02h ;permite mover el cursor


mov dh,10h ;dirección de la fila
mov dl,10h ;dirección de la columna
mov bx,00h
int 10h

; desplegar cadena

mov ah,09h
mov dx, offset[cadena] ;accede a los índices del arreglo
int 21h

MOV AX, 4C00H


INT 21H
CSEG ENDS

DSEG SEGMENT WORD


cadena dw ' $'
DSEG ENDS

SSEG SEGMENT stack


DW 100H DUP(?)
SSEG ENDS

END START
DW
ASSUME CS:cseg, DS:dseg, SS:sseg

cseg SEGMENT
start:
mov AX, dseg ;el registro de datos se asigna al acumulador
mov DS, AX ;el registro acumulador se asigna al registro de datos

; limpiar la pantalla

mov AH,6
mov AL,0
mov CH,0
mov CL,0
mov DH,0
mov DH,24
mov DL,79
mov BH,07H
INT 10H

; lee un carácter sin eco

mov cx,5 ;se asigna al registro contador 5


mov si,0 ;se le indica la pila índice un 0
leer: ;se inicia el ciclo loop
mov ah,08h ;permite leer carácter sin eco
int 21h

; lee 5 caracteres y los guarda la cadena

mov dl,al
mov ah,02h
int 21h
mov cadena [si],dl ;se asigna la variable cadena del destino índice al registro
bajo de datos

inc si ;se indica que se hará un loop a di


loop leer ;indica que leer será un loop

; posición de la cadena en pantalla

mov ah,02h ;permite mover el cursor


mov dh,10h ;dirección de la fila
mov dl,10h ;dirección de la columna
mov bx,00h
int 10h

; desplegar cadena

mov ah,09h
mov dx, offset[cadena] ;accede a los índices del arreglo
int 21h

MOV AX, 4C00H


INT 21H
CSEG ENDS

DSEG SEGMENT BYTE


cadena db ' $'
DSEG ENDS

SSEG SEGMENT stack


DB100H DUP(?)
SSEG ENDS

END START
DB

Você também pode gostar