Várias Dúvidas de Assembly 8086/8088 - CX , DB

4 respostas
SirDominque

Gente, estou com várias dúvidas de assembly.Podem me ajudar,Porfavor? Ja estou meio desesperado, era pra eu ter postado isso aqui quarta-feira.Procurei fórums na internet de assembly e parece que ninguem usa...
Muito estranho isso...
Vamos lá :

Nesse código abaixo... o CX , deve ser 350 ou 351?
Ex1: Preencher de 150 a 400 com os valores de 0 a 9

// 
//Programa que preencha de 150 a 400 qualquer valor :

a 100
mov CX,350 // 350 ou 351?
mov DX,0000
mov SI,150

@
mov[SI],DX
INC SI
LOOP @

INT 3


///
////// Esse código aqui, Estou com dúvida se esta Correto....
6) Sabendo que as notas dos alunos da Disciplina DSB Estão armazenadas entre as posições 200 a 21F, Elaborar um programa para saber quantos alunos foram aprovados, Lembrando Que a aprovação é dada para Nota >= 5;


mov CX,1F // Quantidade do loop 200 - 21F
mov AH,5 // valor da nota
mov DH,0 // QUantidade de pessoas aprovadas
mov DL,0 // QUantidade de pessoas reprovadas
mov SI,200

V1:
CMP [SI],AH
JNC 140
JZ 140
INC DL

v2 :
INC SI
LOOP V1

int 3

-a 140
INC DH
JMP V2

4 Respostas

SirDominque

Gente, estou com mais uma dúvida, essa aqui é super importante : Como eu calculo corretamente o CX para loop ?

Por exemplo, se no exercício pedir, bla bla bla entre os números 250 a 600

Devo fazer 600 - 250 ? Ou por estar em hexa o valor é diferente ?

Estou percebendo que meus programas ultrapassam o valor final , neste caso ultrapassa 600.

O que devo fazer ?

Desespero modeON

E

Quando você escreve:

mov cx, 100h
xxx:
   add ax,1
   loop xxx

É exatamente como o seguinte código em Java:

int cx = 0x100;
do {
    ax = ax + 1;
    cx = cx - 1;
} while (cx != 0);

Se você for ver bem, isso vai executar o loop acima 0x100 (256) vezes.

SirDominque

entanglement:
Quando você escreve:

mov cx, 100h
xxx:
   add ax,1
   loop xxx

É exatamente como o seguinte código em Java:

int cx = 0x100;
do {
    ax = ax + 1;
    cx = cx - 1;
} while (cx != 0);

Se você for ver bem, isso vai executar o loop acima 0x100 (256) vezes.

Entendi. Busquei na net ontem , e agora ja consigo fazer subtrações em hexa.
Só falta aquele exercicio das letras ASCII , que ainda nao deu certo :stuck_out_tongue:

E

Você sabe um pouco de C?
Eu aconselho a você primeiramente imaginar o código funcionando em C, e depois passá-lo para Assembly.
(No meu tempo de faculdade, embora eu já soubesse C, eu imaginava primeiro em Pascal, e depois o passava para Assembly. É que o compilador C era muito, muito lento e não tinha paciência de esperar - além disso o debugador era terrível, comparado ao do Turbo Pascal)
É preciso um pouco de disciplina, mas veja comigo, é bem mais fácil você imaginar as coisas em nível mais alto, testar e depois passar para o nível mais baixo.

Criado 22 de setembro de 2012
Ultima resposta 24 de set. de 2012
Respostas 4
Participantes 2