Ensamblador - ayuda en SPARC

 
Vista:

ayuda en SPARC

Publicado por Bianca (1 intervención) el 07/01/2011 11:44:04
Hola buenos días!!

Somos dos chicas que tenemos que entregar una practica en SPARC

Queriamos saber como se puede concatenar cadenas ya que nos resulta imposbile.

Hemos probado con STB y con ADD pero no conseguimos imprimirlo por pantalla asi que ... ¬¬

Gracias!!
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:ayuda en SPARC

Publicado por Sebas (4 intervenciones) el 11/02/2011 22:59:20
Acá va un ejemplo:
TITLE String Concatenate (StrConcat.asm)

; This program concatenates a source
; string to the end of a target string.

INCLUDE Irvine32.inc
INCLUDE Bsearch.inc

STRING_SIZE = 10


Str_concat PROTO,
source:PTR BYTE, ; source string
target:PTR BYTE ; target string

.data
targetStr BYTE "ABCDE",10 DUP(0)
sourceStr BYTE "FGH",0

.code
main PROC

; Display
mov edx,OFFSET targetStr
call WriteString

call Crlf

call WaitMsg

mov eax,LENGTHOF sourceStr

INVOKE Str_concat, ADDR sourceStr, ADDR targetStr

mov edx,OFFSET targetStr
call WriteString

call Crlf

exit
main ENDP

;------------------------------------------------------------
FillString PROC USES eax edi ecx edx,
pString:PTR DWORD, ; pointer to array
Count:DWORD, ; number of elements
string_1:SDWORD, ; ABCDE
string_2:SDWORD ; FGH
;
; Fills the string with "ABCDE", then concatenates, "FGH" onto it.
; Returns: nothing
;------------------------------------------------------------
mov edi,pString ; EDI points to the string
mov ecx,Count ; loop counter
mov edx,string_1
sub edx,string_2 ; EDX = absolute range (0..n)

L1: mov eax,edx ; get absolute range
add eax,string_2 ; bias the result
stosd ; store EAX into [edi]

loop L1

ret

FillString ENDP
;------------------------------------------------------------
Str_concat PROC USES eax ecx esi edi,
source:PTR BYTE, ; source string
target:PTR BYTE ; target string
;------------------------------------------------------------
mov ecx,eax ; EAX = length source

mov esi,source
mov edi,target
add edi,5
cld ; direction = forward
rep movsb ; copy the string

ret

Str_concat ENDP

END main
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