Introdução assembly
CENTRO DE TECNOLOGIA
CURSO DE ENGENHARIA ELÉTRICA
RELATÓRIO DE MICROPROCESSADORES:
Assembly
Fortaleza,
Novembro de 2012
PROG_1
O Código acima, a partir da interrupção 21 com ah=1, imprime um caractere na tela. Porém, há a condição “jnz key1” que faz com que só haja o “jump” se o flag de carry for 0. Para isso, há a instrução XOR que retornará sua comparação com o número binário 01110011. Esse valor só resultará carry para o valor igual a 73h. Isto é, ele só não irá pular quando o caractere digitado for “s”, 73h em ASCII.
PROG_2:
O Código acima irá fazer uma leitura do teclado a partir da interrupção 21h com ah=6 e dl=255. E logo abaixo há uma condição e um loop, que vai fazer com que o programa permaneça no laço sem fazer nada enquanto o usuário não digitar uma tecla. Quando isso ocorre, o valor ASCII do caractere digitado vai para AL e o programa sai do loop. Finalizando o programa.
Para encontrar a posição de memória, foi utilizado o valor de DI:
Valor alterado: 0700:0000
PROG_3:
No terceiro programa são declaradas 2 strings as quais o usuário irá escrever 2 frases de até 14 caracteres que serão armazenadas na memória. Para isso o programa utiliza as interrupções 21h com ah=0ah que chama o DOS e permite o usuário digitar a string. E a interrupção 21h com ah=9, que armazena a string em dx.
As posições de memória foram encontradas a partir do valor de DI:
O valor de buf1 fica salvo em: 0700:0000
Buf2: 0701:0000
PROG_4
A parte inicial do programa, onde digitamos as informações, funciona de forma semelhante ao programa 3 da prática, porém acrescentando um cabeçalho
(Nome, Telefone, Endereço) antes. Para isso utilizamos a mesma interrupção vista na prática 1, 21h com AH = 2. Imprimindo caractere por caractere.
Já na segunda parte, de uma maneira bem simples, imprimimos os valores armazenados nas variáveis anteriormente. Para isso utilizamos o stack index, juntamente com as interrupções int 10h com