Ajuda com Assembler

7 respostas
asm
C

Pessoal não estou conseguindo criar um programa em Assembly que leia três nomes do teclado e visualize o ultimo nome em letras maiúsculas !!!

Apenas consigo em java. alguem ajuda por favor!

7 Respostas

C

O codigo em java e’

import java.util.Scanner;
public class EscreverMaiuscula {

public static void main(String[] args) {


	        Scanner s = new Scanner(System.in);
	        System.out.println("Introduza o seu nome: ");
	        String nome = s.nextLine();
	        String separarPorEspaco[] = nome.split(" ");
	        separarPorEspaco[separarPorEspaco.length-1] = separarPorEspaco[separarPorEspaco.length-1].toUpperCase();
	        System.out.println(String.join(" ", separarPorEspaco));
	    }
	

}

Alguem por favor me ajude a co;ocar em assembley!

P

Ola

assembler é bem diferente de java ou outras linguagens estruturadas.

vc sabe ao menos imprimir algo em asm? pq dai a gente pode começar a conversar

C

Sei sim.

O que consegui fazer e’ tranformar apenas o nome de minusculas em Maiusculas e Vice-Versa.

.MODEL SMALL
.DATA

MSG  DB  0DH,0AH, ' ENTER THE STRING :-----> :  $'
            MSG2 DB  0DH,0AH, ' YOUR STRING IS  :-----> :  $'
            STR1 DB  255 DUP(?)
            ONE  DB ?
            TWO  DB ?
      .CODE

BEGIN:
MOV AX,@DATA
MOV DS,AX

LEA DX,MSG
      MOV AH,09H
      INT 21H

      LEA SI,STR1
      MOV AH,01H

READ:
INT 21H
MOV BL,AL

CMP AL,0DH
      JE  DISPLAY

      XOR AL,20H
      MOV [SI],AL
      INC SI

      ;CMP BL,0DH
      JMP READ

DISPLAY:

MOV AL,'$'
      MOV [SI],AL

      LEA DX,MSG2
      MOV AH,09H
      INT 21H


      LEA DX,STR1
      MOV AH,09H
      INT 21H



     ; MOV AH,4CH
     ; INT 21H
      .EXIT

END BEGIN

Mas o que eu quero e’ escrever : Joao Antonio Moreira e aparecer (Joao Antonio MOREIRA)

P

Ai sim garoto.

Vejamos: na tabela ascii a posição das minúscula e maiúsculas segue a mesma ordem. Isso significa que, se ‘a’ vale 40 e ‘A’ vale 66, a+1 é b e A+1 é B

Ou seja, se vc descobrir a diferença entre a e A vc tem o OFFSET pra transformar em maiúsculas via soma

Descobre o valor de A - a e faz

Offset = ‘A’ - 'a’
Letra = 'a’
Imprime Letra - Offset

Tem que olhar a tabela ascii: de alguma forma vc pega esse offset (pode ser o contrário)

C

Hmmmmm… Ainda nao sou muito avancado nesta programacao, e nao deu para entender muito bem como eu posso a partir de um trecho de codigo mudar o apenas o ultimo nome para maiusculas, como disse no exemplo anterior. Poderia exclarecer melhor?

P

Vamos la

Se vc deixar TUDO maiúsculo é meio caminho andado, certo? Baby steps

Uma letra é um byte de valor x. Existe um valor magico que se vc somar ou subtrair da a letra maiúscula. Encara esse desafio primeiro.

Dessa forma, deixar maiúscula UMA PARTE é tipo o passo final :wink:

edit baseado nisso

http://www.asciitable.com/

A vale 65 ( decimal ) enquanto a vale 97

portanto se vc pegar o valor a e subtrair 32 vc obtem A maiusculo.

b e subtrair 32 vc obtem B

e assim por diante. eu achava que era o contrario. boa sorte

C

Yesssss!!!

Finalmente consegui. valeu pelas dicas!!!

Criado 30 de outubro de 2016
Ultima resposta 7 de nov. de 2016
Respostas 7
Participantes 2