Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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 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
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