Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

vangogh

ASSEMBLY- como imprimir ficheiro na consola????

Mensagens Recomendadas

vangogh

ola pessoal.....preciso de ajuda em assembly........ então aqui vai:

o programa deverá apresentar no ecrã da consola uma imagem (esta dada, em ASCII ART.)

preciso mesmo de ajuda......não consigo fazer este trabalho....obrigado fico a espera da vossa ajuda

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vangogh

.data

asciiart.s: .asciiz "originalascii_art.s"

buffer: .space 5000 #reservar espaço em memória para o conteudo do ficheiro

.text

main:

li $v0, 13 # syscall para abertura do ficheiro

la $a0, asciiart.s # nome do ficheiro a abrir

li $a1, 0

li $a2, 0 # abre o ficheiro para leitura (modo: 0-> read, 1-> write)

syscall # abre o ficheiro ( o descritor do ficheiro fica em $v0)

move $t0, $v0

li $v0, 14 # syscall para ler o ficheiro

move $a0, $t0

la $a1, buffer # endereço do buffer de memória para onde é copiado o ficheiro

li $a2, 60 # número máximo de caracteres a ler

syscall # lê o ficheiro para a memória

li $v0, 16 # syscall para fechar o ficheiro

move $a0, $t0 # recupera o fd (descritor do ficheiro)

syscall

li $v0, 4

la $a0, buffer

syscall

li $v0,10

syscall

ja consegui imprimir um ficheiro que esta aparte na consola......mas vim a saber que o que se pretende era mesmo isto:

a imagem é fornecida no ficheiro "ascii_art.s". Os códigos ASCII dos caracteres que

compõem a imagem estão colocados, pela ordem correcta, na enorme string "img" (sim, aquilo é

uma string única terminada com o zero, como sempre). A variável "linha" contém o número de

caracteres que compõem cada linha. De 60 em 60 caracteres (neste caso) é necessário mudar de

linha.

alguem me pode ajudar????

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
vangogh

.data

asciiart: .asciiz "originalascii_art.s"

buffer: .space 5000 #reservar espaço em memória para o conteudo do ficheiro

linha: .byte 60

.text

main:

li $v0,13 # syscall para abertura do ficheiro

la $a0,asciiart # nome do ficheiro a abrir

li $a1,0

li $a2,0 # abre o ficheiro para leitura (modo: 0-> read, 1-> write)

syscall # abre o ficheiro ( o descritor do ficheiro fica em $a0)

move $t0,$a0

li $v0,14 # syscall para ler o ficheiro

move $a0,$t0

la $a1,buffer # endereço do buffer de memória para onde é copiado o ficheiro

li $a2,5000 # número máximo de caracteres a ler

syscall # lê o ficheiro para a memória

li $v0, 16 # syscall para fechar o ficheiro

move $a0,$t0 # recupera o fd (descritor do ficheiro)

syscall

li $t1,0

li $t2,0

lb $t3,linha

jal ciclo

ciclo:

lb  $a0,buffer($t1)

bne $a0,0,exit

li  $v0,11

syscall

add $t2,$t2,1

add $t1,$t1,1

bne $t2,$t3,ciclo

jal print_linha

li  $t2,0

j ciclo

print_linha:

li $v0,11

li $a0,10

syscall

jr $ra

exit:

li $v0,10

syscall

a imagem é fornecida no ficheiro "ascii_art.s". Os códigos ASCII dos caracteres que

compõem a imagem estão colocados, pela ordem correcta, na enorme string "img" (sim, aquilo é

uma string única terminada com o zero, como sempre). A variável "linha" contém o número de

caracteres que compõem cada linha. De 60 em 60 caracteres (neste caso) é necessário mudar de

linha.

nao me aparece resultado nenhum que se passa???? o que é que falta???

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.