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!
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!
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!
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
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)
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)
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?
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 
edit baseado nisso
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
Yesssss!!!
Finalmente consegui. valeu pelas dicas!!!