Ensamblador - Recorrer String (Me da error)

 
Vista:

Recorrer String (Me da error)

Publicado por Ensambler (3 intervenciones) el 30/10/2009 20:15:10
Este codigo lo hice para recorrer un string e imprimir caracter por caracter con la funcion 0EH de la instruccion 10h de la BIOS

Este es elc código:

ESCR MACRO FRASE

PUSH AX
PUSH SI

MOV AH,0FH
INT 10H


CAD:
MOV SI,0

MOV AL,BYTE PTR FRASE[SI]
MOV AH,0EH
INT 10H
INC SI
CMP AL,'$'
JNE CAD
JE TERM

TERM:
POP SI
POP AX

ENDM

Me da 4 errores, si me los solucionais os lo agradeceria mucho, el programa lo ensamblo desde TASM, si esta no es la manera correcta de recorrer un String en ASM porfavor indiquenme cual es, aqui os dejo los errores:

Assembling file: PRUEB.ASM
**Error** PRUEB.ASM(172) ESCR(12) Value out of range
**Error** PRUEB.ASM(175) ESCR(9) Symbol already defined elsewhere: CAD
**Error** PRUEB.ASM(175) ESCR(12) Value out of range
**Error** PRUEB.ASM(175) ESCR(20) Symbol already defined elsewhere: TERM

Muchas gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Recorrer String (Me da error)

Publicado por nose (4 intervenciones) el 21/12/2009 22:34:11
Para imprimir rápidamente una cadena de caracteres usando ensamblador de 16 bits habría que poner este código:

mostrar_cadena:
pusha
cld
bucle_c:
lodsb
cmp al,'$'
je fin_c
mov ah,0Eh
int 10h
jmp bucle_c
fin_c:
popa
ret

La cadena debe de estar contenida en DS:SI y debe terminar en el byte 24h ($)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar