Você está na página 1de 7

UNIVERSIDADE FEDERAL DO CEARA´

Centro de Tecnologia
Departamento de Engenharia de Teleinform
´atica
Sistemas Microprocessados - 2022.1: Laborat´orio 1
Prof. Dr. Eng. N´ıcolas de Arau´jo Moreira

Nome: Nathália Drusilla Macêdo Costa


Mat.: 380500

Instru¸c˜oes Gerais:
• A presente atividade deve ser realizada em casa, ou no laborat´orio de inform´atica;
• Ser´a exigido relat´orio para esta pr´atica a ser enviado pelo SIGAA - o que significa que valer´a ponto
para a parte de laborat´orio da disciplina;
• Prazo de entrega: Dia 13 de abril at´e as 23:59.

Quest˜ao 1, 2 e 3:
Leitura com eco do teclado do PC - AH = 1 e interrup¸c˜ao 21 do DOS.
.MODEL SMALL
.STACK 100H
.CODE
.STARTUP
CALL KEY
. EXIT

KEY PROC NEAR


MOV AH, 1 ; Funcao 01H
INT 21H ; Le i tura do te c la d o
OR AL, AL ; Testa se 00h , c l e a r carry
JNZ KEY1
INT 21H
STC
KEY1 :
RET
KEY
ENDP
END
Quest˜ao 2: leitura sem eco do teclado do PC - AH = 6, DL = 0FFH e Interrup¸c˜ao 21h do DOS.
.MODEL SMALL
.STACK 100H
.CODE
.STARTUP
CALL KEY
. EXIT

KEY PROC
NEAR KEYS
MOV AH, 06H ; Funcao 06H
MOV DL, 0FFH
INT 21H ; Le i tura do Teclado
JZ KEYS ; Se t e c l a nao f o i d ig i ta d a
OR AL, AL ; Testa se 00h , c l e a r c ar ry
JNZ KEYS1
INT 21H ; Ler ASCII e s te n d id o
STC ; In d ic a cod igo e s te n dido
KEYS1 :
RET
1
KEY
ENDP
END ; Fim do ar quivo

2
Quest˜ao 3: Prograra para ler duas linhas de dados do teclado usando a INT 21H com a fun¸c˜ao 0AH do DOS.
.MODEL SMALL ; Se le cao do modelo SMALL
.DATA ; Segmento de dado
BUF1 DB 257 DUP (? ) ; Defi n e b u f f e r 1
BUF2 DB 257 DUP (? )
.CODE ; Segmento de codig o
.STARTUP ; I n i c i o do programa
MOV BUF1, 2 55 ; Numero de c a r a c t e r e s da l in h a
MOV DX, OFFSET BUF1 ; Endereco do BUF1
CALL LINE ; Le i tura da l in h a
MOV BUF2, 2 55
MOV DX, OFFSET
BUF2 CALL LINE
. EXIT

LINE PROC NEAR


MOV AH, 0AH ; Se l e c io n a funcao 0AH do DOS
INT 21H ; Acessa o DOS
RET ; Retorna do procedimento
LINE ENDP
END ; Fim do arquivo
Teste os programas anteriores no EMU 8086. Retire as diretivas .STARTUP e .EXIT para que funcione no
emulador. Acompanhe o passo a passo de cada execu¸c˜ao e verfique: (i) como s˜ao traduzidos os r´otulos e
os nomes das procedures (Como KEY e KEY1) e explique o porquˆe; (ii) como s˜ao traduzidos os nomes de
vari´aveis (como BUF1 e BUF2, na quest˜ao 3) e; (iii) quais s˜ao os valores de CS e DS ao emular o c´odigo da
quest˜ao 1 e quais s˜ao os valores de CS e DS quando se adota o modelo de mem´oria TINY no mesmo c´odigo da
Quest˜ao 1. Explique o porquˆe da mudan¸ca.
Observa¸c˜ao: para gerar um execut´avel utilizando o MASM, vocˆe deve:
• Editar o programa em um editor de texto e gar um arquivo xx.asm;
• Executar do prompt do DOS mas xx.asm;
• Executa em seguida link xx.obj;

• O arquivo final gerado ser´a xx.exe.

3
Respostas:
Questões 1, 2 e 3:
O montador traduz o rótulo, nome de uma procedure ou de uma variável por endereço de
memória.

No programa 1, a procedure KEY é traduzida por 00003h e KEY1 por 0Eh. Esses valores são de
offset, já que a base seletora é o CS.

No dois primeiros códigos, a procedure “KEY” é interpretada pela cpu como “00108h”, “KEY1”
como “0113h” e “KEYS1” como “0117h”, já no terceiro código temos a procedure “LINE”
traduzida como “00320h” como utilizamos mneumonicos para programar, o compilador tem a
função de transformar esses comandos de forma a máquina entender o que é para ser feito,
sendo assim temos essas traduções para essas procedures.

No programa 2, a procedure KEY é traduzida por 00003h KEYS por 0103h, KEYS1 por 012h
Esses valores são de offset, já que a base seletora é o CS.

No programa 3, a procedure LINE é traduzida por 00016h Esse valor é de offset, já que a base
seletora é o CS.
Os nomes de variáveis também são traduzidos como endereços de memória. O BUF1 é
traduzido por 00000h e o BUF2 por 00101h.

4
O modelo de memória especifica o tamanho que os segmentos de código e dados devem ter,
conforme a tabela abaixo:

5
No modelo SMALL, tem-se que o CS=0720 e DS=0700.

No modelo TINY todos os registradores de segmento (DS, CS, SS, ES) têm o mesmo
valor. No modelo tiny o segmento de dados e o de código apontam para o mesmo local.

6
7

Você também pode gostar