0% encontró este documento útil (0 votos)
119 vistas4 páginas

Ejemplos Cadenas

Este documento presenta 4 programas en ensamblador que manipulan cadenas de caracteres. Cada programa realiza una operación diferente con cadenas: 1) inicializa una cadena con un caracter, 2) busca un caracter dentro de una cadena, 3) compara dos cadenas, y 4) copia el contenido de una cadena a otra. Cada programa implementa la operación tanto con instrucciones de cadena como de forma manual sin ellas. El objetivo es mostrar diferentes formas de manipular cadenas en ensamblador.

Cargado por

福嶋満雄
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
119 vistas4 páginas

Ejemplos Cadenas

Este documento presenta 4 programas en ensamblador que manipulan cadenas de caracteres. Cada programa realiza una operación diferente con cadenas: 1) inicializa una cadena con un caracter, 2) busca un caracter dentro de una cadena, 3) compara dos cadenas, y 4) copia el contenido de una cadena a otra. Cada programa implementa la operación tanto con instrucciones de cadena como de forma manual sin ellas. El objetivo es mostrar diferentes formas de manipular cadenas en ensamblador.

Cargado por

福嶋満雄
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 4

1.- Programa que inicializa una cadena con la letra A.

En el segmento de datos
he creado dos variables de cadenas de caracteres: origen1 y origen2 para
hacer la inicializacin empleando instrucciones de cadena y sin ellas,
respectivamente.
dosseg
.model small
.stack 100h
.data
longitud equ 27
origen1 db "esta es la cadena a iniciar"
origen2 db "esta es la cadena a iniciar"
.code
inicio:
mov ax, @data
mov ds, ax
mov es, ax
; Con instrucciones de cadena
cld
xor cx, cx
mov cl, longitud
lea di, origen1
mov al, 'A'
rep stosb

; se pone el flag de direccin a 0


; ponemos en ES:DI la direccin de la cadena destino
; Ponemos en AL la letra A.
; con rep repetimos la operacin tantas veces como indique
; el valor contenido en el registro CX

; Sin instrucciones de cadena


xor si, si
xor cx, cx
mov cl, longitud
mov al, 'A'
Bucle:
mov origen2[si], al
inc si
loop bucle
Fin:
mov ah, 4ch
int 21h
end inicio

2.-Programa que busca un carcter en una cadena. En el segmento de datos


he creado dos variables: la cadenas de caracteres: origen1 y la variable
caracter que contendr el elemento a buscar. Se ha programado con
instrucciones de cadena y sin ellas.
dosseg
.model small
.stack 100h
.data
longitud equ 34
origen1 db "esta es la cadena en la que buscar"
caracter db 'q'
.code
inicio:
mov ax, @data
mov ds, ax
mov es, ax
; Con instrucciones de cadena
cld
xor cx, cx
mov cl, longitud
mov al, caracter
lea di, origen1
repnz scasb

; se pone el flag de direccin a 0


; ponesmos en AL el carcter a buscar
; ponemos en ES:DI la direccin de la cadena destino
; con repnz repetimos la operacin tantas veces como
; indique el registro CX o cuando se active el flag Z al haber
; encontrado coincidencia.

; Sin instrucciones de cadena


xor si, si
xor cx, cx
mov cl, longitud
mov al, caracter
Bucle:
cmp origen1[si], al
jz fin
inc si
loop bucle
Fin:
mov ah, 4ch
int 21h
end inicio

3.- Programa que compara dos cadenas. En el segmento de datos he creado


dos variables de cadenas de caracteres: origen1 y origen2 que sern las
cadenas a comparar. Se ha programado con instrucciones de cadena y sin
ellas.
dosseg
.model small
.stack 100h
.data
longitud equ 28
origen1 db "esta es la cadena a comparar"
origen2 db "esta es la cadena comparada."
.code
inicio:
mov ax, @data
mov ds, ax
mov es, ax
; Con instrucciones de cadena
cld
xor cx, cx
mov cl, longitud
lea si, origen1
lea di, origen2
repz cmpsb

; se pone el flag de direccin a 0


; ponemos en DS:SI la direccin de la cadena origen
; ponemos en ES:DI la direccin de la cadena destino
; con repz repetimos la operacin tantas veces como
; indique el registro CX o cuando se desactive el flag Z al
; no haber encontrado coincidencia.

; Sin instrucciones de cadena


xor si, si
xor cx, cx
mov cl, longitud
Bucle:
mov al, origen1[si]
cmp origen2[si], al
jnz fin
inc si
loop bucle
Fin:
mov ah, 4ch
int 21h
end inicio

4.- Programa que copia una cadena en otra. En el segmento de datos he


creado tres variables de cadenas de caracteres: origen, destino1 y destino2
que sern las cadenas a copiar en las otras dos. Se ha programado con
instrucciones de cadena y sin ellas.
dosseg
.model small
.stack 100h
.data
longitud equ 26
origen db "esta es la cadena a copiar"
destino1 db longitud dup(0)
destino2 db longitud dup(0)
.code
inicio:
mov ax, @data
mov ds, ax
mov es, ax
; Con instrucciones de cadena
cld
xor cx, cx
mov cl, longitud
lea si, origen
lea di, destino1
rep movsb

; se pone el flag de direccin a 0


; ponemos en DS:SI la direccin de la cadena origen
; ponemos en ES:DI la direccin de la cadena destino
; con rep repetimos la operacin tantas veces como indique
; el valor contenido en el registro CX

; Sin instrucciones de cadena


xor si, si
xor cx, cx
mov cl, longitud
Bucle:
mov al, origen[si]
mov destino2[si], al
inc si
loop bucle
mov ah, 4ch
int 21h
end inicio

También podría gustarte