Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Guilherme Quinquinel

C++ Sistema operacional em C++

Recommended Posts

Boa tarde pessoal!

 

Eu estou com um projeto meio enrolado, e preciso de ajuda. Estou montando um SO e já estou com um boot em Assembly pronto. Mas agora quero terminar o resto em C++. Ele irá ser algo simples, como uma linha de comando, e pretendo usar o C++ para monta-lo, eu estou testando em máquinas virtuais mas já tenho uma maquina e um CD para testa-lo em ISO.

 

O que tenho é somente o Boot em Assembly escrito.

 

[ORG 0x7C00]

	mov 	ah,2	;Le disco que originou boot
	mov 	al,1	;Total de setores lidos
	mov 	ch,0	;Numero de cilindros
	mov 	cl,2	;Numero setor Inicial
	mov 	dh,1	;Numero da cabeça a ser lida
	mov		es,[Print]
	mov		bx,0
	int		13h
	jmp		Print
	
	IniStr	db "SO 1.1",13,10,0
	
times 510 - ($-$$) db 0
db 0x55
db 0xAA

Print:
	xor ax,ax	;Zera o acumulador
	mov ds,ax
	mov si,IniStr
	
CHAR_LOOP: lodsb
	or al,al	;Checa dif 0
	jz WAI
	
	mov ah,0x0E
	int 0x10
	jmp CHAR_LOOP
	
WAI:
jmp WAI

Ele fica em LOOP com a mensagem na tela "SO 1.1".

 

Como faço para dar continuidade no SO mas em C++. Como seria os parâmetros para habilitar somente o teclado (pois será só linha de comando, sem gráficos)?

 

Esse Assembly esta em .bin e usei o UltraISO para criar um disco de inicialização, creio que agora devo acrescentar o C++ dentro do ISO.

 

Se alguém puder me mandar o código fonte em C++ mais o formato .bin . Eu  serei grato! Obrigado pela atenção!

  • Curtir 2
  • Amei 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

@Guilherme Quinquinel @Guilherme Quinquinel     qual compilador você está usando ?    testei aqui no codeblocks mas não funcionou , nem compilou ,       estou querendo aprender assembly mas tenho pouco conhecimento pois ainda estou estudando lógica de programação aqui no senac  .  tenho esse código em assembly que funciona no codeblocks e ele serve para somar e multiplicar dois números e imprimir o resultado  :

#include <iostream>
int main(){
    //    Em C, seria:
    //    bar = foo * 2 + foo;
    int bar,foo=25;
    asm volatile (
                  "movl $2   , %%eax ;"  // registrador eax = 2
                  "movl $25  , %%ebx ;"  /* registrador ebx = 25 */
                  "imul %%ebx, %%eax ;"  /* eax * ebx */
                  "addl %%ebx, %%eax ;"  // eax + ebx/*para multiplicar use -> imul */
                  "movl %%eax, %0    ;"  // faz bar igual ao resultado.
                  :"=q" (bar)            // variáveis de saída
                  :"c"  (foo)            // variáveis de entrada (ebx = foo)
                  );
    printf("bar= %d   foo= %d\n\n",bar,foo);
}

 

  • Curtir 2

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×