0% acharam este documento útil (0 voto)
2 visualizações9 páginas

Configurando Assembly no Debian com VScode

Enviado por

Thiago Praxedes
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
2 visualizações9 páginas

Configurando Assembly no Debian com VScode

Enviado por

Thiago Praxedes
Direitos autorais
© All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

1° cria uma pasta dentro do seu debian pra sua tarefa:

2° Ir nesse link:

[Link]

3° baixe a pasta inteira:

4° o importante é a pasta “tools” que está lá dentro, extraia ela do arquivo que você baixou, depois copie e cole
dentro da pasta da tarefa que você criou no passo 1 desse tutorial. Dentro da pasta tools também tem um arquivo
com nome de “[Link]”, copie ele também para dentro da sua pasta da tarefa3.
4° agora abre seu debian e instala o DosBOX (no meu já está instalado, mas use o comando abaixo):

sudo apt install dosbox

5° acessa a sua pasta através do terminal, a minha ficou assim:

6° crie um arquivo para seu código através do VScode usando:

code . [Link]

ATENÇÃO: eu dei o nome de tarefa3 mas você pode mudar o nome pra não ficar igual.
7° vai abrir um arquivo em branco, e é nesse arquivo que você vai colocar seu código em assembly, depois salve
(CTRL+S), veja do lado esquerdo os arquivos que devem estar dentro da pasta (esse arquivo de texto comandos não
precisa, só criei pra anotar algumas coisas):

8° agora são partes importantes pra configurar no próprio VScode...

8.1 instale a extensão code runner


8.2 mexa nas configurações
8.2 procure por “[Link]” dentro das configurações e clique lá em baixo para editar elas:

8.2 quando você achar uma parte do código escrito "[Link]" você deve colar o seguinte
código dentro:

//for linux using TASM

"*.{ASM,asm}":"$workspaceRoot/tools/[Link] $fullFileName -mA -d $workspaceRoot/tools"

Vai ficar assim:

9. pronto, já deve estar tudo configurado, agora vamos executar nosso código assembly. O bom daquele arquivo
“[Link]” lá de trás é que ele já é código que faz todo o serviço de compilar, linkar e criar o arquivo .exe pra gente.
Para fazer ele funcionar devemos usar o comando abaixo (pode usar o terminal do próprio vscode):

/home/morpheus/micro_skel/assembly/tarefa3/tools/[Link]
"/home/morpheus/micro_skel/assembly/tarefa3/[Link]" -m3 -d
/home/morpheus/micro_skel/assembly/tarefa3/tools

ATENÇÃO: lembre-se que o local da minha pasta pode ter um nome diferente da sua, o meu arquivo também deve
ter um nome diferente do seu, então ajuste só o nome das pastas e do arquivo no código de cima.

No meu ficou assim:


Pode ser ainda que você precise autorizar, é só botar sua senha de usuário Linux.

10 agora vai abrir o DosBOX, ele é bem ruim de mexer mas deve abrir assim:

11 preste atenção naquela janelinha “Dump” nesse canto inferior, vai ser lá que você vai ver o vetor se organizando a
cada passo que o programa vai rodando. Rode o programa 2 vezes para carregar os dados na memória (é só apertar
F8 duas vezes). Depois de apertar duas vezes, vai para abrir essa janela “Dump” vai lá no menu View > Dump. É
importante que o número da memória comece com “ds:0000” veja na foto abaixo como fica depois de rodar 2 vezes
e entrar na janela dump:
12 Pronto, agora é só acompanhar a mudança dos valores :D fique apertando o F8 várias vezes e você verá os
números que estão nesse vetor “ds:0000” se arranjando automaticamente toda vez que o código é rodado.

13. o professor pediu pra gente enviar o arquivo .asm e o .exe, vou mostrar onde eles estão. O .asm é o código que
você criou dentro da sua pasta da tarefa

Já o arquivo .exe foi criado dentro dessa pasta “tools”, é só você ir tools>work... que aí o seu arquivo vai ter sido
criado com o nome de “[Link]”, agora você renomeia e manda pro professor.
Fim

Se quiser ver meu código, eu estou usando esse:

.MODEL SMALL
.STACK 100H

.DATA
; Definicao do vetor com valores desordenados
; Voce pode alterar esses valores para testar
VETOR DB 15, 8, 2, 20, 5, 1, 12, 7, 3, 10

; Calcula o tamanho do vetor automaticamente


TAM EQU ($ - VETOR)

.CODE
MAIN PROC
; Inicializacao do segmento de dados
MOV AX, @DATA
MOV DS, AX

; Se o vetor tiver 0 ou 1 elemento, nao precisa ordenar


MOV CX, TAM
CMP CX, 1
JLE FIM_PROGRAMA

; --- INICIO DO BUBBLE SORT ---


; O Bubble Sort precisa de dois loops (aninhados).
; CX sera o contador do loop externo (N-1 passadas).
DEC CX

LOOP_EXTERNO:
PUSH CX ; Salva o contador externo na pilha
MOV SI, 0 ; SI sera o indice do vetor (aponta para o elemento atual)
; O loop interno vai comparar VETOR[SI] com VETOR[SI+1]
LOOP_INTERNO:
MOV AL, VETOR[SI] ; Carrega o valor atual em AL
MOV DL, VETOR[SI+1] ; Carrega o proximo valor em DL

CMP AL, DL ; Compara Atual com Proximo


JBE NAO_TROCA ; Se AL <= DL, nao faz nada (Jump if Below or Equal)

; Se AL > DL, troca os valores de posicao (SWAP)


MOV VETOR[SI], DL ; Coloca o menor na posicao atual
MOV VETOR[SI+1], AL ; Coloca o maior na proxima posicao

NAO_TROCA:
INC SI ; Avanca para o proximo indice
LOOP LOOP_INTERNO ; Decrementa CX e repete se CX != 0

; Prepara para a proxima iteracao do loop externo


POP CX ; Recupera o contador externo original
LOOP LOOP_EXTERNO ; Decrementa o contador externo e repete

; --- FIM DO BUBBLE SORT ---

; Aqui voce pode adicionar uma rotina para imprimir,


; mas o enunciado diz que verificar no Turbo Debugger e suficiente.

FIM_PROGRAMA:
; Finaliza o programa e retorna ao DOS
MOV AH, 4CH
INT 21H

MAIN ENDP
END MAIN

Você também pode gostar