Home
Apostila de Microprocessadores
Contents
1. gt Subrotina PAUSA 1 gt PUBLIC PAUSA_1 PAUSA_1 PROC push bx push cx push dx mov bl BYTE VEL byte de movimento atual P3 mov cx 00ffH P2 mov dx O0ffH Pl dec dx jnz P1 dec cx jnz P2 dec bi jnz P3 pop dx pop cx pop bx ret PAUSA ENDP gt ESCREVE INICIO Escreve a mensagem de apresentac o inicial PUBLIC ESCREVE INICIO ESCREVE INICIO PROC push ax push dx mov ah 09H lea dx MENS INICIAL int 21H mensagem pop dx pop ax ret ESCREVE INICIO ENDP gt
2. gt Subrotina VEL 4 Atualiza o byte de velocidade para a velocidade numero 4 Escreve a mensagem correspondente ad o A IR a A a a a PUBLIC VEL_4 VEL_4 PROC push ax push dx push bx necess rio pelo caractere colorido push cx necess rio pelo caractere colorido mov BYTE VEL 07H atualiza byte de velocidade mov ah 09H lea dx MENS V4 int 21H mensagem push bp cria caractere colorido mov ah 09H no final da mensagem mov al 16H mov bl 83H define atributo cor azul claro piscando mov cx 000CH int 10H pop bp pop cx pop bx pop dx pop ax ret VEL 4 ENDP finaliza o procedimento Je oe oe oe ode oe oe ode Je oe ae ae oe ae ae ae ae ae ae ae ae ae ae a a ae a e a al a o a oe ls e oe e Je ls le e k kk k kk kk gt Subrotina COMUTA GARRA 89 Laborat rio de Microprocessadores Wilson Ruiz L o byte de status da garra MIRROR GARRA Comuta o status da solen ide Atualiza o MIRROR GARRA CSA dd dd dd dd dd PUBLIC GARRA COMUTA GARRA PROC push ax push dx mov ah MIRROR GARRA cmp ah 00H j Gl mov dx GARRA mov al 00H mov MIRROR_GARRA al out dx al call ESCREVE_G_ABERTA jmp G2 G1 mov dx GARRA mov al 01H mov MIRROR GARRA al out dx al call ESCREVE G FECHADA G2 pop dx pop ax ret COMUTA GARRA ENDP
3. dd PROC ax dx bx cx BYTE_VEL 7FH ah 09H dx MENS V2 21H bp ah 00H necess rio pelo caractere colorido necess rio pelo caractere colorido atualiza byte de velocidade mensagem cria caractere colorido no final da mensagem 88 Laborat rio de Microprocessadores Wilson Ruiz mov al 16H mov bl 83H define atributo cor azul claro piscando mov cx 0006H int 10H pop bp pop cx pop bx pop dx pop ax ret VEL 2 ENDP finaliza o procedimento gt esubrotina VEL 3 Atualiza o byte de velocidade para a velocidade numero 3 Escreve a mensagem correspondente ooo dote PUBLIC VEL 3 VEL 3 PROC push ax push dx push bx necess rio pelo caractere colorido push cx necess rio pelo caractere colorido mov BYTE VEL 3FH atualiza byte de velocidade mov ah 09H lea dx MENS V3 int 21H mensagem push bp cria caractere colorido mov ah 09H no final da mensagem mov al 16H mov bl 83H define atributo cor azul claro piscando mov cx 0009H int 10H pop bp pop cx pop bx pop dx pop ax ret VEL 3 ENDP finaliza o procedimento 2 E gt F 2k se oe oe oe oe seo oe Je obe ode oe o oe seo oe oe o ode
4. flag Rota o de BH para a esquerda de um n mero de bits indicado em Atrav s da carry flag Demais registradores de 8 bits O n mero de bits rotacionados sempre deve ficar em CL D n mero de bits rotacionados sempre deve ficar emCL 105 Laborat rio de Microprocessadores Wilson Ruiz INSTRU ES DE ROTA O DE UM BIT EM REGISTRADORES DE 16 BITS AX ota o de AX para a esquerda de um bit copiando bis na carry flag ecarry flag bis ROLBX 1 Rota o de BX para a esquerda de um bit copiando bis na carry flag b s b b 3 b b b by Cb b amp b bs bj b Eb Eb Eb b s e e carry flag bis Demais registradores de 16 bits X s o v lidos Rota o de para a direita de um bit copiando by na carry flag ecarry flag bo Rota o de DX para a direita de um bit copiando bona carry flag Bis2bi43b153 bi bii bio bo bs bz be bs b b bo bibo bis e ecarry flag bo Demais registradores de T6 bits X s o v lidos ESSE E 2 Z s Rota o de AX para a esquerda de um bit atrav s da carry flag e bo carry flag bis Rota o de BX para a esquerda de um bit atrav s da carry flag e bo carry flag bis Demais registradores de 16 bits X s o v lidos P 5 NY ota o de BX para a direita de um bit atrav s da carry flag e by gt carry flag gt bis Rota o de CX para a direita de um bit atrav s da carry fl
5. de oe ooo oe kR e oe oe ode Je ERROR oto oe de ole e ae oe oe oo oe ole oe oe ote ote gt Subrotina ESCREVE FINAL Escreve a mensagem de despedida Je bF ae oe Je Je ae oe ode e oe ode oe Je a oe ode KOR oe oe Je ae oleole e Je ae ole ode Je ae oleole Je ae of de ale oleole dl Je a oe ole ode ae ole oJe ode ae ae ole Je ae oleole ole e oe ole le Je a oe ode Je a oleole ode ae ale ole e kk he e PUBLIC ESCREVE_FINAL ESCREVE_FINAL PROC push ax push dx mov ah 09H lea dx MENS_FINAL int 21H mensagem pop dx pop ax ret ESCREVE FINAL ENDP gt Subrotina ESCREVE MO H a mensagem correspondente ao motor em movimento dd a o dl a dc de eoi PUBLIC ESCREVE MO H ESCREVE MO H PROC push ax push dx push bx necess rio pelo caractere colorido push cx necess rio pelo caractere colorido mov ah 09H lea dx MENS MO H 91 Laborat rio de Microprocessadores Wilson Ruiz int 21H mensagem push bp cria caractere colorido mov ah 09H no final da mensagem mov al 16H mov bl 44H define atributo cor vermelho mov cx 0009H int 10H pop bp pop
6. As interrup es mascar veis s o desativadas quando o flag estiver zerado Um dispositivo gera uma interrup o n o mascar vel ativando o pino NMI Non Maskarable Interrupt na CPU Por exemplo uma INT 02h Non Maskable Interrupt gerada se uma condi o n o mascar vel como um erro de paridade na mem ria ocorrer Esta a nica interrup o que n o pode ser mascarada pela instru o CLI Clear Interrupts 17 Laborat rio de Microprocessadores Wilson Ruiz As interrup es mascar veis ocorrem quando um dispositivo como o teclado o Clock ou a porta serial ativa uma linha de interrup o Estes dispositivos n o est o conectados diretamente na CPU mas sim ao controlador de interrup es cujo trabalho acumular as requisi es de interrup o dos dispositivos de hardware prioriz las e pass las para a CPU uma por vez A sa da do controlador de interrup es por exemplo o Intel 8259 conectada a uma linha de interrup o da CPU Um exemplo cl ssico de interrup o de hardware o que acontece quando uma tecla pressionada no teclado Atrav s do controlador de interrup es uma interrup o 09h gerada o que executa uma ISR do ROM BIOS A ISR l o c digo de varredura da porta do teclado converte este c digo em seu equivalente ASCII e o coloca no Buffer do teclado O ltimo tipo de interrup o a exce o gerada pela CPU quando esta detecta uma condi o de erro durant
7. subrotina ESCREVE M MANUAL Escreve a mensagem de inicio do modo manual dd dd PUBLIC ESCREVE M MANUAL ESCREVE M MANUAL PROC 90 Laborat rio de Microprocessadores Wilson Ruiz push ax push dx mov ah 09H lea dx MENS M MANUAL int 21H mensagem pop dx pop ax ret ESCREVE M MANUAL ENDP gt Subrotina ESCREVE TECLAS I Escreve a lista de teclas de comandos CINE R AI E RAR n fool pou PUBLIC ESCREVE TECLAS ESCREVE TECLASPROC push ax push dx mov ah 09H lea dx MENS TECLAS int 21H mensagem pop dx pop ax ret ESCREVE TECLASENDP gt Subrotina ESCREVE MENU x Escreve o menu inicial e ode oe oec E E oe oe ote oe oe o see od ode ode od le od od e od a ole ode ae ole ale od e ode k kkk kkk PUBLIC ESCREVE MENU ESCREVE MENU PROC push ax push dx mov ah 09H lea dx MENS MENU int 21H mensagem pop dx pop ax ret ESCREVE MENU ENDP
8. 67 Laborat rio de Microprocessadores Wilson Ruiz 4 4 Principais C I s A Interface de Comunica o Paralela Program vel 8255 PPD A interface paralela 8255A possui tr s portas de 8 bits cada chamadas A B e C que podem ser programadas independentemente como entradas ou sa das A porta C pode ser programada para se tornar duas portas de 4 bits cada independentes formando assim os chamados GRUPO A porta A 4 bits superiores da porta C e o GRUPO B porta B 4 bits inferiores da porta C Nas figuras seguintes s o apresentadas a sua pinagem a arquitetura interna e os respectivos bytes de programa o PIN CONFIGURATION Vec PIN NAMES D Do T DATA BUS BI DIRECTIONAL RESET RESET INPUT cs HIP CHIP SELECT J RD READ INPUT WR WRITE INPUT AO At PORT ADDRESS PA7 PAO PORT A BIT PB7 PB0 PORT B BIT PC7 PC0 PORT C BIT GND Vec 5 VOLTS mm E A o g VOLTS POWER SUPPLIES BI DIRECTIONAL DATA BUS 8255 BLOCK DIAGRAM e sv GND 8 81T INTERNAL DATA BUS vo PC PC PCS vo PB7 PBo 68 Laborat rio de Microprocessadores CONTROL WORD GROUPB PORT C LOWER 15 INPUT 0 OUTPUT PORTB 1 INPUT 0 OUTPUT MODE SELECTION 0 MODE 0 1 MODE 1
9. Olh 02F9h F9h 9 Fazer uma opera o AND com o byte 55h e depois com o resultado uma nova opera o OR com o byte 80h para cada conte do da regi o de mem ria do exerc cio anterior e gravar cada resultado na mesma posi o de mem ria 10 Contar o n mero de bytes iguais a 55h que existem na seguinte regi o de mem ria de 0185h 030Bh Escrever o resultado final da contagem nos endere os 0183h e 0184h 79 Laborat rio de Microprocessadores Wilson Ruiz 11 Idem ao anterior por m contando a seguinte seq ncia de bytes AAh 55h nessa ordem 12 Pesquisar na seguinte regi o de mem ria de 0200h 027Fh em ordem crescente de endere os e determinar em qual desses endere os encontra se o primeiro byte 00h Este endere o deve ficar armazenado no registrador BX como resultado final Caso n o seja encontrado nenhum byte com esse valor o programa deve carregar FFFFh neste registrador 5 2 Exemplo de um programa Com o objetivo de ampliar as possibilidades de aplica es deste estudo fornecido a seguir a listagem fonte completa de um programa para o controle de um rob escrito em assembly no TASM ANA14 ASM O hardware utilizado nessa aplica o a placa de interface apresentada no cap tulo O arquivo fonte est dispon vel aos alunos para estudos e testes 80 Laborat rio de Microprocessadores Wilson Ruiz Projeto Controle do Rob ANA 2000 vers o 1 4 Autor Prof Wils
10. AX Acumulador BX Base Uso geral e para opera es aritm ticas e l gicas registrador que especificado pelo maior n mero de instru es Uso geral e para indexar tabelas de mem ria ex ndice de vetores Laborat rio de Microprocessadores Wilson Ruiz CX Contador Uso geral e como contador de repeti es loop s e movimenta o repetitiva de dados DX Dados Uso geral e para opera es aritm ticas Registradores de Segmento S o usados para a identifica o de segmentos espec ficos de mem ria CS Code Segment Endere a o segmento de c digo do programa que est sendo executado O valor do CS n o pode ser atualizado diretamente DS Data Segment o segmento de dados do programa SS Stack Segment Endere a o segmento de pilha do programa ES Extra Segment Usado para endere ar um segmento de dados adicional Registradores Ponteiros ou de Deslocamento Usados em conjunto com registradores de segmento IP Instruction Pointer Usado em conjunto com o CS para apontar o byte da pr xima instru o a ser executada endere o de off set dentro do segmento N o h acesso direto SP Stack Pointer Usado em conjunto com o SS para apontar o topo da pilha stack BP Base Pointer Usado para indicar a base da pilha Particularmente importante para a passagem de par metros em linguagem de alto n vel como C SI amp DI Source Index e Destination I
11. C O sinal de prompt do DEBUG Assim os comandos a direita deste prompt s o os que devem ser digitados Para representar o valores num ricos apresentados na tela do microcomputador que n o possuem significado remanecentes na mem ria ou podem ter outros valores em diferentes m quinas adotado neste roteiro o s mbolo para um byte e H para dois bytes Laborat rio de Microprocessadores 22 Entrar no Debug gt Digitar o comando CA gt DEBUG 2 3 Sair do Debug gt Digitar o comando 2 4 Chamar o Help do Debug gt Digitar o comando gt mostrada a seguinte tela help assemble compare dump enter fill go hex input load move name output proceed quit register search trace unassemble write allocate expanded memory deallocate expanded memory map expanded memory pages display expanded memory status Wilson Ruiz 9 A endere o C intervalo endere o D intervalo E endere o lista F intervalo lista G endere o endere os valorl valor I porta L endere o unidade primeiro setor n mero M intervalo endere o N caminho lista de par metros O porta byte P endere o n mero Q R registrador S intervalo lista T endereco valor U intervalo W endere o unidade primeiro setor n mero XA fp ginas XD identificador XM p ginaL p ginaP identificador XS Laborat rio de
12. DACKO gt 12 CLOCK gt All IRQ7 AIO IRQ6 A9 IRQ5 A8 IRQ4 A7 IRQ3 A6 DACK2 gt lt AS TC lt A4 ALE gt lt A3 5V A2 OSC 2 AI GND A0 gt CH IO CH RDY Wilson Ruiz 65 Laborat rio de Microprocessadores Wilson Ruiz Sinal pino pino Sinal MEMCS 16y gt SBHEy UO CS 16 gt LA23 IRQIO gt LA22 gt LA21 IRQ12 gt LA20 IRQIS gt LA19 IRQI4 gt LAIS DACKO gt gt LA17 DRQO 2 MEMR DACKS gt 2 MEMW DRQ5 lt gt D8 DACK6 gt lt gt po DRQ6 lt gt DIO DACK7y gt 2 DII DRQ7 lt gt D12 45V lt gt DI3 MASTER lt gt DI4 GND lt gt DIS Descric o dos sinais usados no projeto exemplo OBS Descri es mais detalhadas destes sinais e informa es adicionais sobre os outros s o encontradas nas literaturas especializadas RESET DRV Reset Drive sa da Este sinal mantido ativo durante a seq ncia de energiza o do sistema por aproximadamente 2 segundos Al m disso automaticamente ativado se alguma das fontes sair fora das especifica es E usado para inicializar todos os dispositivos conectados ao barramento de expans o sendo sincronizado pelo 8284 ou compat vel AO A19 endere os sa das Estes s o os bits usados para endere ar a mem ria do sistema e os dispositivos de VO Eles s o gerados p
13. Para aplica es que necessitem de mais informa es t cnicas sobre o hardware do PC toma se indispens vel consultar publica es especializadas no assunto 4 2 Mapa de endere amento de I O O conhecimento do mapa de I O parte fundamental que qualquer projeto de interface para o microcomputador padr o IBM PC A figura seguinte apresenta as diversas faixas de endere os de I O e seus respectivos dispositivos OBS A rapidez com que se oferecem placas de expans o para o PC implica na necessidade de uma constante atualiza o dessa tabela 62 Laborat rio de Microprocessadores Wilson Ruiz ISpOSitivO imeiro controlador de DMA 8237 meiro controlador de interrup es 8259 emporizador program vel 8253 terface paralela 8255 XT ontrolador 8742 AT CMOS e registrador de m scara NMI AT egistradores de pagina o para DMA egundo controlador de interrup es AT egundo controlador de DMA AT o processador aritm tico AT isco r gido AT orta de jogos ouse de barramento e 0000h a 000Fh e 0020h a 0021h e 0040h a 0043h e 0060h a 0063h e 0060h a 0064h e 0070h a 0071h e 0080h a 008Fh e 00A0h a 00A 1h e OOCOh a 00DFh e OOFOh a 00FFh e 01F0h a O1FFh e 0200h a 020Fh e 0238h a 023Bh e 02COh a 02CFh e 02DOh a 02DFh e 02E8h a O2EFh e 02F8h a 02FFh e 0300h a 031Fh e 0320h a 032Fh e 0378h a 037Fh e 03C0h a 03CFh e 03DOh a 03DFh e 03E8h a 03EFh e 03F0h a 03F7h e 03F8h a 03FFh V deo EGA VG
14. byte Demais combina es entre registradores de s o v lidas 100 Laborat rio de Microprocessadores Wilson Ruiz INSTRU ES ARITM TICAS SOBRE REGISTRADORES DE 8 BITS Demais combina es entre registradores de 8 bits H e L BX ou endere o s o v lidas complemento de dois do valor anterior Torna o conte do de CL negativo Demais combina es entre registradores de 8 bits s o v lidas Mnem nico Descri o da instru o ADD AX BX AX AX BX AX BX carry flag BX BX AX carry flag O ees Deom SOS entre registradores de 16 bits X s o v lidas BX BX AX canylag s o v lidas Demais registradi ores idos para o multip Os registradores AX multiplicando e DX AX produto sempre s o usados Demais registradores Os registradores DX AX dividendo AX quociente e DX resto sempre s o usados Instru o indefinida para divisor igual a zero 101 Laborat rio de Microprocessadores Wilson Ruiz INSTRU ES ARITM TICAS ENTRE DADOS E REGISTRADORES DE 16 BITS Mnem nico Descri o da instru o ADD AX word A X Word O DY D ADD BX word BX word Demaisregistradores de 16 bits X s o v lidos gt ADC BX word BX BX word carry flag ADC CX word Mnem nico Descri o da instru o A 75078 o Demais registradores de 16 bits X s o v lidos Mnem nico Descri o da instru o pa LES
15. ignorado pelo mont ador EQU Usada para criar equival ncias atribuindo valores a s mbolos DB Usada para dados aloca espa o do tamanho de um byte para cada elemento definido Pode ser usada para criar vari veis tabelas e mensagens DW Usada para dados aloca espa o do tamanho de dois para cada elemento definido Pode ser usada para criar vari veis tabelas e mensagens 3 3 Segmentos A arquitetura dos processadores das fam lias Intel 80x86 80x88 e Pentium for a nos a usar segmentos de mem ria para gerenciar a informa o sendo o tamanho destes segmentos de 64Kbytes A justificativa do uso destes segmentos est relacionada ao fato do maior valor num rico poss vel de ser diretamente processado limitado a capacidade dos registradores de 16 bits caracter stica original dos processadores de terceira gera o ser uma palavra de 16 bits tamanho dos registradores n o sendo assim poss vel o acesso a mais de 65536 endere os 64 Kbytes da mem ria usando se para endere amento apenas um destes registradores internos Sendo a mem ria do PC dividida em grupos de segmentos cada qual com no m ximo 65536 endere os 64 Kbytes assim podemos usar um registrador exclusivo para endere ar o in cio de um determinado segmento e ainda acessar uma posi o desejada dentro desse usando se outro registrador possibilitando dessa maneira o acesso a quantidades muito maiores de mem ria Desta forma para que o monta
16. ligador que os segmentos devem ser agrupados seguindo a mesma ordem adotada pelo sistema operacional MODEL SMALL Define o meio de mem ria a usar em nosso programa Todo o c digo estar em um segmento enquanto os dados estar o em outro Todos os desvios e refer ncias mem ria s o do tipo Near dentro do segmento isto afetar o apenas o IP DATA Marca o in cio do segmento de dados onde todas as vari veis tabelas e mensagens do programa devem ser colocadas CODE Marca o in cio do segmento de c digo do programa No caso de o programa ter mais de um segmento de c digo deve se especificar um nome Essa diretiva pode aparecer diversas vezes no programa pois o montador unir todos os diferente blocos com o mesmo nome para formar um nico segmento de c digo STACK Reserva espa o de mem ria para as instru es de programa na pilha Concatena todos os segmentos com o mesmo nome para formar o segmento de pilha Na carga do programa o registrador SS estar automaticamente apontando para esse segmento e o SP estar posicionado no fim PUBLIC Concatena todos os segmentos com o mesmo nome para formar um nico segmento cont nuo PROC Declara o usada para definir um bloco de instru es ENDP Declara o que termina o bloco de instru es definido por PROC 46 Laborat rio de Microprocessadores Wilson Ruiz END Marca o fim do programa fonte Tudo o que for colocado ap s esse ponto ser
17. no comando Caso n o existam erros durante o processo de linker exibida na tela a seguinte mensagem Turbo Link Version 3 0 Copyright c 1987 1990 Borland International C Quinto passo Executar o programa criado digitando seu nome n o necess ria a extens o diretamente no sinal de prompt do DOS Ci gt exemplol gt Este programa assembly muda o tamanho do cursor no DOS gt Para voltar ao cursor normal retorne ao windows e ap s novamente ao DOS 3 5 Exemplos de programas Nesta se o s o mostrados v rios exemplos de programas para serem montados e ligados com o TASM e o TLINK da Borland com o objetivo de familiarizar o leitor aluno com as caracter sticas mais usuais desse ambiente de programa o Leia atentamente as explica es fornecidas analise o funcionamento de todos os programas principalmente os detalhes relacionados as diferen as estruturais e diretivas empregadas Digite salve compile ligue e execute alguns dos programas fornecidos lembrando que muitos s o parecidos com os executados via DEBUG Por uma quest o de tempo fica opcional a digita o das explica es que acompanham os cabe alhos e instru es dos exemplos sendo estas por m importantes para a documenta o dos programas criados nos projetos propostos 50 Laborat rio de Microprocessadores exemplo2 asm MODEL SMALL STACK CODE MOV AH 2h MOV DL 2Ah INT 21h MOV 4ch INT 21
18. Laborat rio de Microprocessadores call L11 cmp jnz call L12 cmp joz call L13 cmp jnz call L14 cmp j L15 call mov int ANAI ENDP MOVE_M3_H al 6BH L12 MOVE_M3_AH al 6CH L13 COMUTA_GARRA al 69H L14 ESCREVE_TECLAS al 7AH L15 L16 ESCREVE_FINAL ah 4CH 21H Wilson Ruiz movimenta o motor 3 sentido hor rio verifica tecla K min scula movimenta o motor 3 sentido anti hor rio verifica tecla L min scula comuta a solen ide da garra verifica tecla I min scula escreve lista de teclas de comandos verifica tecla Z min scula retorna para ler teclado escreve mensagem final retorna ao sistema operacional finaliza o procedimento s Subrotina gt MOVE MO H push push call MI mov mov rol mov and in and Or out call mov int jnz mov int jnz call pop pop ret MOVE MO MOVE MO H L o byte espelho de movimento do motor 0 MIRROR MO Move o motor no sentido hor rio Atualiza MIRROR MO Continua o movimento do motor ate que a tecla correspondente seja acionada pela segunda vez Aciona a escrita das mensagens correspondentes ao status do motor selecionado CAE PUBLIC MOVE MO PROC ax dx ESCREVE MO H dx PA ah MIRROR MO ah 1 MIRROR MO ah ah OFH al dx al OFOH al ah dx al PAUSA ah OBH 21H al OFFH MI ah 07H 21H
19. PC PC PCs PC0 PB PBo D Ds Resumo dos bytes de programa o da 8255 PPI 80h 8 PA 2 19 PC 5 PC 5 19 PB 8Ah 8 PA 2 PC 5 PC 5 IC PB 98h 8 1 lt PA 2 PC 5 PC 5 PB 81h 8 gt PA 2 15 PC 5 PC 5 8Bh 8 1 gt PA 2 PC 5 PC 5 IC PB 99h 8 1 lt PA 2 PC 5 PC 5 1 gt PB 82h 8 I gt PA 2 19 PC 5 PC 5 IE PB 90h 8 1 lt PA 2 PC 5 19 PC 5 9Ah 8 1 lt PA 2 PC 5 19 PC 5 PB 83h 8 gt PA 2 15 PC 5 PC 5 IC PB 91h 8 1 lt PA 2 PC 5 PC 5 9Bh 8 IC PA 2 PC 5 PC 5 IC PB CONTROL WORD 15 Dg Ds D Ds D Di CONTROL WORD 14 Ds D D D D 88h 8 I gt PA 2 PC 5 19 PC 5 19 PB 92h 8 1 lt PA 2 PC 5 19 PC 5 IE PB Do Do Wilson Ruiz 89h 8 gt 2 PC 5 IC PC 5 19 PB 93h 8 IC PA 2 PC 5 IC PC 5 IC PB PA PAy PC PC PC PC PB PB 71 Laborat rio de Microprocessadores Wilson Ruiz O 74LS138 O C L 74LS138 um decodificador de tr s entradas para oito sa das com tr s entradas de controle Duas dessas tr s entradas s o ativas em n vel 0 G2A e G2B enquanto a terceira G1 ativa em n vel 1 O funcionamento consiste em levar apenas uma das oito sa das para o n vel 0 de acordo com a combina o d
20. Wilson Ruiz byte espelho desloca atualiza byte espelho a porta B mascara move M2 de um passo pausa buffer do teclado verifica se existe tecla se n o existe tecla continua movimento teclado compara com a tecla H min scula se diferente continua movimento mensagem finaliza o procedimento 2 gt E 2k F oe Je gt Subrotina gt gt MOVE_M3_H push push call M7 mov mov rol mov and in and or out call mov int cmp jnz mov int jnz call pop pop ret MOVE M3 H MOVE M3 H L o byte espelho de movimento do motor 3 MIRROR M3 Move o motor 3 no sentido hor rio Atualiza MIRROR M3 Continua o movimento do motor ate que a tecla correspondente seja acionada pela segunda vez Aciona a escrita das mensagens correspondentes ao status do motor selecionado steel PUBLIC MOVE M3 H PROC ax dx ESCREVE M3 H dx PB ah MIRROR M3 ah 1 MIRROR M3 ah ah OFOH al dx al OFH al ah dx al PAUSA ah OBH 21H al OFFH M7 ah 07H 21H al GAH M7 ESCREVE M3 STOP dx ax ENDP mensagem byte espelho desloca atualiza byte espelho a porta B mascara move M3 de um passo pausa buffer do tecla
21. al 61H MI ESCREVE MO STOP dx ax ENDP mensagem byte espelho desloca atualiza byte espelho l a porta A mascara move MO de um passo pausa buffer do teclado verifica se existe tecla se n o existe tecla continua movimento teclado compara com a tecla A min scula se diferente continua movimento mensagem finaliza o procedimento gt Subrotina gt MOVE MO AH push push call M2 mov mov ror mov MOVE MO AH L o byte espelho de movimento do motor 0 MIRROR MO Move o motor no sentido anti hor rio Atua liza MIRROR MO Continua o movimento do motor ate que a tecla correspondente seja acionada pela segunda vez Aciona a escrita das mensagens correspondentes ao status do motor selecionado RR REE PUBLIC MOVE MO AH PROC ax dx ESCREVE MO AH dx PA ah MIRROR MO ah 1 MIRROR MO ah mensagem byte espelho desloca atualiza byte espelho 84 Laborat rio de Microprocessadores Wilson Ruiz and ah OFH in al dx l a porta A and al OFOH Or al ah mascara out dx al move MO de um passo call PAUSA 1 pausa mov ah OBH int 21H l buffer do teclado cmp al OFFH verifica se existe tecla jnz M2 se n o existe tecla continua movimento mov ah 07H int 21H teclado cmp al 73H compara com a tecla S min scula jnz M2 se diferente continua mo
22. na segunda linha da listagem dos registradores no DEBUG gt Usar o comando para verificar o status atual das flags gt O nome e a forma de indica o de status das flags mostrado na tabela abaixo gt As principais flags s o CARRY FLAG CY 1 verdadeiro NC p 0 falso 30 Laborat rio de Microprocessadores Wilson Ruiz ZERO FLAG ZR 1 verdadeiro NZ p 0 falso SIGNAL FLAG NG p l negativo PL p 0 positivo gt Digitar o programa para testar a CARRY FLAG 0100 MOV AX FFFE MOV BX 0001 ADD AX BX INT 20 gt Executar o programa estabelecendo um break pointer na ltima instru o G0108 e ap s verificar o status da CARRY FLAG gt Substituir o valor 0001 por 0002 repetir a execu o e comparar o status atual com o anterior gt Digitar o programa para testar a ZERO FLAG 0100 MOV AX OFFE MOV BX 0001 SUB AX BX INT 20 gt Executar o programa estabelecendo um break pointer na ltima instru o G0108 e ap s verificar o status da ZERO FLAG gt Substituir o valor 0001 por OFFE repetir a execu o e comparar o status atual com o anterior gt Digitar o programa para testar a SIGNAL FLAG 0100 MOV AX FFFE MOV BX 0002 SUB AX BX INT 20 gt Executa o programa estabelecendo um break pointer na ltima instru o G0108 e ap s verificar o status da SIGNAL FLAG gt Substituir o valor FFFE por 0001
23. o digitada Carregar valores de teste nos registradores envolvidos Executar a instru o Verificar os resultado 2 13 Entrada de instru es em mnem nico gt Digitar o comando e o fragmento de programa a seguir 0100 THHHE 0100 MOV 0123 HHH 0103 MOV 4567 THHHE 0106 MOV CX 89AB THHHE 0100 ADD AX THHHE 010B MOV DX AX THHHE 010D MOV THHHE 010F gt comando possibilita a digita o direta de instru es mnem nicos a partir do endere o indicado por IP p apenas ou a partir de um endere o especificado p A 0100 por exemplo gt As instru es podem ser digitadas em letras mai sculas ou min sculas indiferentemente gt Os espa os existentes nas instru es n o s o importantes para o DEBUG por m til ter o h bito de digita los pois os compiladores s o mais exigentes com rela o a sintaxe das instru es gt Lembrar sempre que todos os valores num ricos digitados s o assumidos pelo DEBUG como expressos em hexadecimal 13 Laborat rio de Microprocessadores Wilson Ruiz gt Quando uma instru o digitada de forma errada o DEBUG mostra uma mensagem de erro e possibilita a sua imediata corre o gt Estabelecer IP 0100 e executar o programa anterior passo a passo at a instru o XOR AX CX NUNCA execute instru es ou trechos desconhecidos de programas pois o microcomputador poder trava
24. repetir a execu o e comparar o status atual com o anterior 31 Laborat rio de Microprocessadores Wilson Ruiz 2 45 Exerc cio gt Usando o comando carregue um valor diferente de 00h em BL isto estabele a 00H gt Digitar e executar o programa 0100 MOV AH 02 MOV CX 0008 MOV DL 00 RCL BL 1 ADC DL 30 INT 21 LOOP 105 INT 20 gt Analisar o resultado e executar outras vezes O programa para diferentes valores em BX mostra na tela o conte do de BL em bin rio 2 46 Exerc cio gt Modificar o programa anterior para o mesmo imprimir um caractere b significando bin rio no final do n mero 2 47 Porta Paralela gt Analisar a tabela seguinte que mostra um resumo das caracter sticas da porta paralela do PC 32 Laborat rio de Microprocessadores Wilson Ruiz Pora ENDERE O 0378h ENDERE O 0379h ENDERE O 037Ah DB25 MACHO a 1 inos DB25 ome do sinal FE EEEEEEEE E Q bit invertido BUSY ER OUT ECT Q OW S O gt ab IRQ 7 bit invertido LCT IN _ A N N Direo OUT OUT PUT OUT OUT OUT OUT OUT IN IN IN IN IN INOUT INOUT INOUT ERR EE di zm UTO FEED TROBE bit invertido LL it invertido BT 3 ES E EE 3 PD ET ES E a COS E a E C DS 14 Da
25. Descri o da instru o MOV AL endere o A endere o carrega o conte do do endere o em A MOV BH endere o BH endere o carrega o conte do do endere o em BH MOV endere o AH endere o AH carrega o conte do de AH no endere o MOV endere o BL endere o lt BL carrega o conte do de BL no endere o D H ou L s o v lidos MOV AX endere o MOV BX endere o B endere o e BH endere o Demais registradores de 16 bits X s o v lidos MOV endere o BX endere o BL e endere o BH MOV endere o CX endere o e endere o Demais registradores de 16 bits X s o v lidos i MOV AL BX AL BX carrega em AL o conte do endere ado por BX MOV CH BX BX carrega em CH o conte do endere ado por BX Demais registradores de 8 bits H ou L s o v lidos Somente BX v lido O H carrega CH no endere o indicado por BX Q A q gt AL carrega AL no endere o indicado por B o3 q UY Sao validos Descri o da instru o R ota o de AL para a esquerda de um bit copiando b na carry flag b bs b5 amp b Cb b b Cb b e carry flag b R ota o de BL para a esquerda de um bit copiando b na carry flag b bs b53 b amp b4 b b lt lt e carry flag b D lt BX Hou ou endere o sao validos Rota o de AH para a direita de um bit copiando Dona
26. GROUP A PORT C UPPER A INPUT 0 OUTPUT PORTA 1 INPUT 0 QUTPUT MODE SELECTION 00 MODE O 01 MODE 1 1X MODE 2 MODE SET FLAG 1 ACTIVE MODE 0 CONFIGURATIONS CONTROL WORD 0 D De Ds D 03 D D Po PA PA PC PC PC PC PB PB CONTROL WORD 2 D D D D D D PA PAg PC PC PB PB Wilson Ruiz CONTROL WORD 1 D Dg Dg D Dz D D Do CONTROL WORD 43 D De Ds D D3 Dz D D PA PAg PC PC PCs PGo PB PBy 69 Laborat rio de Microprocessadores CONTROL WORD 4 D 06 05 D Ds D D PAPAS PG PC D Dg PC PC PB PB Wilson Ruiz CONTROL WORD 8 D D D Dz D D D DD CONTROL WORD 45 D D Dj D D Do PA7 PA PC PC DD n PC PE PB PB CONTROL WORD 6 D Dg D D D D B CONTROL WORD 49 D Dg 05 D D D D Do DD CONTROL WORD 10 D 05 D D D D D D PA PAS PC PC D Dy lt PCy PC PB PB CONTROL WORD 7 CONTROL WORD 11 D Dg Ds D D D D D D Dg D D D 0 PA PA PAy PA PCy PC PC PC PCs PC PCs PC PB PB PB PB 5 119 70 Laborat rio de Microprocessadores CONTROL WORD 12 Dg Dg D Ds D a E a te 07 00 CONTROL WORD 13 De Ds D D Dy Dy Dj D D PA PA0
27. Microprocessadores Wilson Ruiz gt Os principais comandos ser o abordados no decorrer do texto gt Sempre consultar o Help para esclarecer d vidas sobre os comandos 2 5 Aritm tica em Hexadecimal gt Digitar os comandos H32 H 12 AA H 3D5C 2A10 gt O comando imprime numa linha abaixo a soma 1 valor e a diferen a 2 valor entre os dois n meros digitados gt Confirmar os valores apresentados e testar outros valores de at 16 bits gt Sua principal utilidade calcular o tamanho de um determinado programa em hexadecimal necess rio para a grava o de um arquivo execut vel 2 6 Verificar o conte do de todos os registradores gt Digitar o comando gt apresentada uma listagem semelhante a esta diferente nos segmentos AX 0000 BX 0000 CX 0000 DX 0000 SP FFEE BP 0000 SI 0000 DI 0000 DS 1669 ES 1669 SS 1669 CS 1669 IP 0100 NV UP EI PL NZ NA PO NC 1669 0100 89D8 MOV gt Verificar na listagem Os registradores de uso geral AX BX CX e DX com os seus respectivos conte dos Os registradores de prop sito espec fico SP BP SI DI DS ES SS CS e IP com seus respectivos conte dos Todos os registradores de segmento com os mesmos valores Indica o do status de todas as flags O valor de IP e o endere o mostrado na ltima linha Exemplo Para os valores seguintes 10 Laborat rio de Microprocessadores Wilson Ruiz 1669 0100 1669 gt in cio do seg
28. Software usadas pelos programas para chamar rotinas na BIOS e no n cleo do DOS Interrup es de Hardware usadas pelos dispositivos de hardware para avisar a CPU de que estes solicitam uma fun o Exce es usadas pela pr pria CPU para indicar erros Quando ocorre uma interrup o uma seq ncia de eventos principalmente envolvendo a preserva o do status atual na pilha operacional executada para garantir que a CPU responda interrup o e mais tarde retorne execu o do programa principal como se nada tivesse acontecido Toda interrup o tem um n mero associado variando de O a 255 em decimal ou de 00h a FFh em hexadecimal Quando uma interrup o ocorre este n mero serve como um ndice para a tabela conhecida como Vetor de Interrup es armazenada na mem ria baixa Esta tabela cont m os endere os de at 256 ISR diferentes A interrup o 05h por exemplo resulta na execu o da ISR cujo endere o o sexto no Vetor interrup o O o primeiro A tabela est sempre armazenada nos primeiros bytes da mem ria 0000 0000 Uma interrup o de software gerada quando um programa executa uma instru o INT algumas dessas ser o utilizadas nesse material e outras constam na bibliografia listada Existem dois tipos de interrup es de hardware Mascar veis e N o mascar veis As interrup es n o mascar veis s o executadas mesmo que o flag de interrup o esteja desativado
29. Velocidade 1 selecionada H MENS V2 DB cr lf lf 4 Velocidade 2 selecionada H MENS V3 DB 4 Velocidade 3 selecionada H MENS V4 DB cr lf lf 4 Velocidade 4 selecionada MENS G OPENED DB cr f lf Garra aberta MENS G CLOSED DB cr lf lf Garra fechada MENS INICIAL DB gt gt PROGRAMA DE CONTROLE DO ROBO 2000 lt lt MENS M OFF DB cr lf lf gt gt gt gt Todos os motores desligados MENS FINAL DB cr Jf ff IEF Programa finalizado DB crff lf O 2000 despede se TCHAU MENS_MENU DB crflf lf lf MENU INICIAL tecle a letra minuscula DB crlf f M Inicia o modo manual de controle DB I Informa teclas de comando MENS M MANUAL DB Selecionado o MODO DE CONTROLE MANUAL MENS TECLAS DB cr 1f 1f 1f 1f TECLAS DE COMANDOS E SUAS FUNCOES DB TECLAS COMANDOS DB crf letras DB CR LF minusculas DB ou numeros DB crlf M gt Inicia modo manual de controle DB A gt Movimenta MO no sentido horario ou para MO BASE DB S gt Movimenta MO no sentido anti horario ou para MO BASE DB crf D gt Movimenta no sentido horario ou para 1 OMBRO DB cr lf F gt Movimenta no sentido anti horario ou para MI OMBRO DB gt Movimenta M2 no sentido horario ou para M2 COTOVELO DB H gt Movimenta M2 no sentido anti horario ou para M2 COTOVELO DB
30. break point em um programa a ser testado isto a execu o deste at um determinado ponto para verifica o de alguma determinada caracter stica ou condi o Este recurso pode ser muito til durante a verifica o do funcionamento de um determinado trecho de um grande programa Para testa lo estabelecer IP 0100 e digitar o comando abaixo 0111 gt Assim o programa executado at o byte imediatamente anterior ao endere o indicado endere os em hexadecimal no caso parando o processamento antes da instru o INT 20 gt Agora digitar G gt Lembre se de verificar sempre o conte do de IP antes de executar um programa 2 24 INT21 Uma vers til ferramenta gt Assim como o INT 20 existe um grande n mero de interrup es dispon veis sendo inegavelmente a mais vers til de todas a INT 21 gt Esta interrup o possui v rios recursos conhecidos como fun es que s o escolhidos carregando se inicialmente o registrador de entrada com um valor espec fico inclusive um para o t rmino de programas exe que a 4Ch gt A tabela seguinte lista os mais importantes desses recursos n o todos bem como os valores necess rios para a entrada e a sa da correspondentes gt Ler com aten o as principais fun es da INT 21 relacionadas na tabela 19 Laborat rio de Microprocessadores Wilson Ruiz Receber caractere do teclado em ASCII e o enviar pa
31. coletor ou emissor do fototransistor escolhidos em fun o das tens es envolvidas A grande vantagem do emprego de um foto acoplador a isola o el trica entre os circuitos de entrada e sa da ou do computador e da etapa de pot ncia da aplica o pois separados os terras da entrada e da sa da n o existe nenhum caminho condutivo entre os dois circuitos ficando estes ent o eletricamente isolados e opticamente acoplados Existem v rios tipos de foto acopladores que estruturalmente diferem no elemento de sa da podendo este ser um fotodiodo um fototransistor um fototransistor darlington ou um fototiristor todos com caracter sticas de isola o a partir de centenas de megaohms Circuitos Os esquemas dos circuitos sugeridos para a interface e para o uso dos foto acopladores s o mostrados a seguir 73 Wilson Ruiz Laborat rio de Microprocessadores SUGESTOES PARA O USO DOS FOTO ACLOPADORES op 0j3906n 5 etir LumuuLiIdO OPRIOST A83UAMMDTJQ 5ISP POMO ONUDI 22 OP O3uUPJPR TP JOPEQndeD2OJ2OYM OP 23344 OND OP PTP JOPEinduo2OJ2TW OP QN 35890 OuJ83 8 OITNMDATI OP al GND TI epe petat GA OuAP3xa O3Tn2472 ouod 50040 UOIVS QOVOTTI HOQU 1402U OlOH d 74 Laborat rio de Microprocessadores Wilson Ruiz INTERFACE PARALELA PROGRAM VEL PARA PC rtc PC 0302h
32. crJf J gt Movimenta no sentido horario ou para M3 PUNHO DB K Movimenta M3 no sentido anti horario ou para M3 PUNHO DB L gt Abre fecha garra DB cr lf X gt Desliga todos os motores e abre a garra DB cr lf I Informa as teclas de comandos DB crJf Z gt Sai do programa DB crjlf 1 gt Seleciona a velocidade 1 mais lenta DB crlf 2 gt Seleciona a velocidade 2 DB cr lf 3 gt Seleciona a velocidade 3 82 Laborat rio de Microprocessadores DB crjlf 4 Seleciona a velocidade 4 ANAI L18 L17 L16 L1 2 L3 L4 L5 L6 L7 L8 L9 L10 CODE PROC mov ax G data mov ds ax mov es ax cld push bp mov bp sp mov ah OBH mov bh 00H mov bl 03H int 10H pop bp mov dx PROG mov al 89H out dx al mov dx PA mov al 11H out dx al mov dx PB mov al OEEH out dx al call ESCREVE INICIO call ESCREVE MENU mov ah 08H int 21H cmp al 6DH jnz L17 call ESCREVE M MANUAL jmp L16 al 69H jnz L18 call ESCREVE TECLAS jmp L18 mov ah 08H int 21H cmp al 31H jnz L1 call VEL 1 cmp al 32H jnz L2 call VEL 2 al 33H jnz L3 call VEL 3 cmp al 34H jnz L4 call VEL 4 cmp al 61H jnz L5 call MOVE MO cmp al 73H jnz L6 call MOVE M0 AH cmp al 64H jnz L7 call MOVE MI H al 66H jnz L8 call MOVE MI AH cmp al 67H jnz L9 call MOVE M
33. cx pop bx pop dx pop ax ret ESCREVE MO ENDP gt Subrotina ESCREVE MO AH I Escreve a mensagem correspondente ao motor em movimento PUBLIC ESCREVE M0 AH ESCREVE MO AH PROC push ax push dx push bx necess rio pelo caractere colorido push cx necess rio pelo caractere colorido mov ah 09H lea dx MENS MO AH int 21H mensagem push bp cria caractere colorido mov ah 09H final da mensagem mov al 16H mov bl 44H define atributo cor vermelho mov cx 0009H int 10H pop bp pop cx pop bx pop dx pop ax ret ESCREVE MO AH ENDP gt Subrotina ESCREVE MI 5 Escreve a mensagem correspondente ao motor em movimento PUBLIC ESCREVE MI H ESCREVE MI H PROC push ax push dx push bx necess rio pelo caractere colorido push cx necess rio pelo caractere colorido mov ah 09H lea dx MENS MI H int 21H mensagem push bp cria caractere colorido mov ah 09H no final da mensagem mov al 16H mov bl 11H define atributo cor azul escuro mov cx 0009H int 10H pop bp pop cx pop bx pop dx pop ax ret ESCREVE MI H ENDP gt 92 Laborat rio de Microprocessadores Wilson Ruiz 5 ESCREVE MI AH Escreve a mensagem correspondente ao motor em movimento PUBLIC ESCREVE AH ESCREVE AH PROC push ax push dx push bx necess rio pelo caractere colorido push cx necess rio pelo caractere colorido mov ah 09H lea dx MENS MI A
34. fonte com a extens o ASM obrigat rio para que TASM reconhe a e o transforme no programa objeto sendo este um formato intermedi rio assim chamado porque ainda n o um programa execut vel e t o pouco um programa fonte O linker gera a partir de um programa objeto com extens o OBJ ou da combina o de v rios deles um programa execut vel cuja extens o normalmente EXE ao contr rio do DEBUG embora possa ser COM dependendo da forma como este for montado e ligado Os arquivos EXE s o organizados em m ltiplos segmentos individuais e separados enquanto os arquivos COM contem somente um segmento o qual inclui todos os dados e c digos das instru es H vantagens em ambos tipos de arquivos Por exemplo os de estrutura COM evitam o tempo de carga necess rio para a identifica o de segmentos separados enquanto os arquivos EXE podem acomodar aplica es muito maiores 45 Laborat rio de Microprocessadores Wilson Ruiz 3 2 Diretivas Conceitos b sicos Para construirmos os programas com o TASM devemos estruturar o fonte de uma forma diferenciada da empregada no programa DEBUG Para isso usamos pseudo instru es ou diretivas que a princ pio s o instru es utilizadas pelo compilador e linker e n o s o executadas pelo processador do sistema As diretivas assembly mais importantes usadas no TASM s o DOSSEG Informa ao linker
35. novos bytes separados por espa o e pressionar o ENTER para finalizar o comando gt Digitar o comando E 100 HHHEO100 01 D8 gt Usando o comando E verifique a entrada dos bytes anteriores 01 e D8 s o os OP CODES c digos de opera o da seguinte instru o em assembly ADD AX BX gt Usar o comando para verificar a ltima linha da listagem 2 10 Executar uma nica instru o gt Com o comando R carregar 0347 em AX e 092A em BX gt Digitar o comando T gt Verificar IP 0102 este registrador foi deslocado e indica o endere o da pr xima instruc o a ser executada AX 0CD1 BX 092A Observar a ltima linha da listagem gt O comando permite a execu o de uma instru o de cada vez execu o passo a passo al m de apresentar a listagem dos registradores 2 11 Exerc cio gt Executar novamente a mesma instru o com os resultados do item 2 10 para isso necess rio usar o comando para posicionar IP em 0100 e s ent o usar o comando 12 Laborat rio de Microprocessadores Wilson Ruiz gt Sempre devemos checar o valor atual de IP e a instru o mostrada na ltima linha da listagem de registradores antes de executar o comando 2 12 Exerc cio gt Digitar o comando E 0100 THHHE 0100 29 HH DS gt Alterar o valor de para 0100 Verificar o mnem nico da instru
36. para a data atual 2 41 Obter o hor rio gt Digitar o programa abaixo MOV AH 2C INT 21 INT 20 gt Executar o programa estabelecendo um break pointer na ltima instru o gt Na listagem apresentada ou com o comando verificar o conte do dos registradores CH CL DH e DL gt Comparar os valores encontrados com os esperados de acordo com as fun es da INT 21 constantes na tabela fornecida gt Posicionar IP e executar novamente o programa e comparar os novos valores com os anteriores 2 42 Definir hor rio gt Usar a INT 21 para definir um novo hor rio para o sistema consultar a tabela das fun es da INT 21 gt Ler esse novo hor rio 29 Laborat rio de Microprocessadores Wilson Ruiz gt Voltar para o hor rio atual gt O hor rio calculado pela contagem dos pulsos de clock da m quina assim nenhum evento pode ser temporizado com precis o acima da taxa de contagem desse rel gio A freq ncia desse timer de aproximadamente 18 2 Hz conseqiientemente a precis o ser de aproximadamente 5 4 cent simos de segundo 2 43 Informar o drive corrente gt Digitar o programa MOV AH 19 INT 21 INT 20 gt Executar programa estabelecendo um break pointer na ltima instru o e verificar o conte do de AL consultando a tabela fornecida 2 44 Testes com as flags gt Os sinalizadores flags s o mostrados a direita
37. se n o salta para HEX_LETER ADD DL 0 se sim converte para n mero JMP Short WRITE DIGIT escreve o caractere HEX LETTER ADD DL 10 converte um caractere para hexadecimal WRITE DIGIT CALL WRITE CHAR imprime o caractere na tela POP DX Retorna o valor inicial do registrador DX para o registrador DL RET Retorna o controle ao procedimento que chamou WRITE HEX DIGIT ENDP PUBLIC WRITE CHAR WRITE CHAR PROC PUSH AX Envia para pilha o valor do registrador AX MOV AH 2h Func o 2h INT 2lh Interrup o 21h POP AX Extrai da pilha o valor de AX RET Retorna o controle ao procedimento que chamou WRITE CHAR ENDP END TEST WRITE HEX Finaliza o programa gt Este programa faz a convers o de bytes em caracteres correspondentes impressos na tela do monitor 54 Laborat rio de Microprocessadores Wilson Ruiz MODEL SMALL STACK CODE TEST WRITE DECIMAL PROC MOV DX 12345 Move o valor decimal 12345 para o registrador DX CALL WRITE DECIMAL Chama o procedimento MOV AH 4CH Fung o 4Ch INT 2lh Interrup o 21h TEST WRITE DECIMAL ENDP Finaliza o procedimento PUBLIC WRITE DECIMAL Este procedimento escreve um n mero de 16 bits como um n mero sem sinal em nota o decimal Use WRITE HEX DIGIT WRITE DECIMAL PROC PUSH AX Envia para pilha o valor do registrador AX PUSH CX Envia para pilha o valor do registrador CX PUSH DX Envia para pilha o valor do registrador DX PUSH SI Envia para p
38. sensor de fim de curso p MO PCI SO sensor de fim de curso p MO zero PC2 SIMI sensor de fim de curso p MO PC3 S0 M2 sensor de fim de curso p MO zero PC3 SI M2 sensor de fim de curso p MO 5 S0 M3 sensor de fim de curso p MO zero PC6 SI M3 sensor de fim de curso p MO PC7 liga o da garra I bits do s 7415373 P solen ide DO Programas editor de texto NE gt Compilador TASM Liker TLINK gt do programa anal4 asm CR LF EQU 13 EQU 10 DOSSEG MODEL small STACK ASCII Carriage Return ASCII Line Feed 8l Laborat rio de Microprocessadores Wilson Ruiz DATA 3 oE Je oe OR oe ode oe oe o oe Je ole ode ade oe oe oe oe oe oo oe ae obe oe oe oe o o Je Je ae Je ae Je ae Je ae de ae fe ae fe pente pete pete pene peo oe oe eae Je kkk kk kk gt REGIAO DE DEFINICAO DE VARIAVEIS Rede ao a a JA JJ e Je JJ Je Je A Je e eae ode oe Je oe ode oe ode ode oe oe ae ae oe ae ae ae ae ae ae ae ae ae ae a e ae e A a o o a a ae as e os e kk kkk k kk kk gt BYTE_MO DB 11H para acionamento inicial do motor O BYTE MI DB 11H para acionamento inicial do motor 1 BYTE M2 DB OEEH para acionamento inicial do motor 2 BYTE M3 DB OEEH para acionamento inicial do motor 3 MIRROR MO DB 11H byte espelho do motor O MIRROR
39. valor do delay deve se ajustado experimentalmente para cada caso pois al m das caracter sticas da aplica o existe diferen as no clock de cada microcomputador assim de boa pr tica iniciar os testes com valores pequenos para os registradores que controlam os loops pois se houver exagero a m quina poder ficar presa em um loop de programa durante muito tempo 36 Laborat rio de Microprocessadores Wilson Ruiz 2 55 Exemplo de um programa com temporiza o gt Digitar executar e analisar o funcionamento do programa 0100 MOV DX 0378 MOV AX 00FF OUT DX AL CALL 0200 MOV AX 0000 OUT DX AL CALL 0200 INT 20 0200 PUSH CX PUSH DX MOV CX OFFF se necess rio ajustar o delay para o clock MOV DX FFFF do microcomputador do laborat rio DEC DX trocando os valores carregados nos JNZ 0208 registradores CX e DX DEC CX JNZ 0205 POP DX POP CX RET 2 56 Loop infinito gt Se substituirmos o INT 20 do programa principal do item anterior pela instru o 0100 ter amos como resultado os LED s piscando seguidamente por m este programa assim entraria em um loop infinito ou seja s sai com o RESET da m quina Durante o projeto e testes de programas devemos tomar cuidado com essa perigosa situa o pois ela pode levar nos a perder um bom tempo de trabalho gt Para evitar o loop infinito e poder ver os LED s da placa piscando altere
40. 1 Entrada de dados em assembly gt Usar o comando para estabelecer AX 0000 gt Digitar e executar o programa estabelecendo um break pointer na ltima instru o MOV DX 0379 IN AL DX INT 20 gt Avaliar a resposta conte do de AL 2 52 Sub rotinas gt Digitar o programa 0100 MOV DL 41 MOV CX 000A CALL 0200 LOOP 0105 INT 20 0200 MOV AH 02 continua 35 Laborat rio de Microprocessadores Wilson Ruiz 2 INT 21 INC DL RET Executar e analisar o seu funcionamento 2 53 Exerc cio 2 Modificar o programa anterior para o mesmo a apresentar na tela a lista de todos os 255 caracteres ASCII 2 54 Sub rotina cl ssica usada para temporizac o pausa ou delay 2 2 2 Analisar o funcionamento do exemplo de sub rotina a seguir PUSH CX PUSH DX MOV CX 00FF I2 MOV DX 00FF LI DEC DX JNZ Ll DEC CX JNZ 12 POP DX POP CX RET Esta rotina fomece uma temporiza o proporcional a multiplica o dos dois loops Sempre conveniente salvar os valores anteriores dos registradores na pilha operacional no in cio de uma sub rotina e recupera los no final antes da instru o RET isso toma a sub rotina transparente para o programa principal evitando a superposi o de dados A exce o a esta regra est em determinadas aplica es onde a sub rotina deve fornecer algum resultado para o programa principal e este armazenado em um registrador O
41. 150 DB Isto um teste D0150 z gt Com o comando D poss vel verificar que a string anteriormente digitada mostrada no lado direto da tela gt O sub comando DB possibilita a entrada direta de strings na mem ria entre aspas duplas ou simples para depois serem chamadas pela interrup o correspondente 2 34 Exerc cio gt Usar a tabela de c digos ASCII fomecida e modificar o programa anterior para imprimir strings diferentes gt Usar o comando D para verificar a string na mem ria 2 35 Leitura de caractere do teclado gt Digitar o programa a partir de 0100 MOV AH 01 MOV AL FF INT 21 INT 20 27 Laborat rio de Microprocessadores Wilson Ruiz gt Executar estabelecendo um break pointer na ltima instru o isto com o comando G 0106 que indica o endere o posterior ao t rmino da execu o do trecho de programa escolhido gt Voc ver um cursor piscando e o DOS esperando que uma tecla seja acionada 29 gt Pressionar uma tecla por exemplo a e depois verificar o conte do de AL na listagem apresentada ou pelo comando gt Comparar o valor encontrado em AL com o da tabela ASCII gt O DOS carrega o c digo ASCII do caractere da tecla pressionada no registrador AL notar que o conte do de AL que era inicialmente FFh foi alterado O break pointer foi necess rio pois o INT 20 altera o conte do dos r
42. 2 H cmp al 68H jnz L10 call MOVE M2 AH cmp al 6AH jnz L11 Wilson Ruiz mais rapida necess rio para enviar mensagens para a tela inicializa os registradores de segmento DS e ES Clear Direction Flag moldura salva ponteiro de base anterior servico OBH define cor define fundo usa cor 01 azul requisita o servigo de v deo recupera o ponteiro de base anterior programa 8255 PA PB e PC como sa das estabelece status inicial dos motores necess ria altera o em fun o dos drives escolhidos para cada motor escreve a mensagem inicial escreve o menu inicial eitura de teclado sem eco verifica tecla M min scula verifica tecla I min scula escreve lista de teclas de comandos leitur a de teclado sem eco verifica tecla 1 seleciona velocidade 1 verifica tecla 2 seleciona velocidade 2 verifica tecla 3 seleciona velocidade 3 verifica tecla 4 seleciona velocidade 4 verifica tecla A min scula movimenta o motor 0 sentido hor rio verifica tecla S min scula movimenta o motor 0 sentido anti hor rio verifica tecla D min scula movimenta o motor 1 sentido hor rio verifica tecla F min scula movimenta o motor 1 sentido anti hor rio verifica tecla G min scula movimenta o motor 2 sentido hor rio verifica tecla H min sc ula movimenta o motor 2 sentido anti hor rio verifica tecla J min scula 83
43. 220 ohms X 8 Esquema eletr nico da placa de LED s gt Analisar o circuito utilizado para testes de sa da no laborat rio 33 Laborat rio de Microprocessadores Wilson Ruiz DB25 MACHO i 220 ohms x 8 gt Sugest o de uma placa para testes de entrada e sa da da porta paralela caso haja interesse do leitor aluno na sua montagem 2 48 Sa da de dados com comando do DEBUG gt Porta paralela sa da endere o 0378h vide tabela anterior gt Conectar a placa de LED s na porta paralela e digitar os comandos O 0378 FF O 0378 00 O 0378 55 O 0378 AA gt Analisar a sa da de cada um desses comandos status dos LED s 2 49 Entrada de dados com o comando do DEBUG gt Porta paralela entrada endere o 0379h vide tabela anterior gt Digitar o comando 10379 THE 34 Laborat rio de Microprocessadores Wilson Ruiz gt Analisar a resposta lembrar que o bit D7 lido invertido pelo sistema os bits D2 D1 e DO n o est o dispon veis sendo sempre iguais a 1 e para pinos da entrada em aberto temos atribu do o n vel l gico 1 2 50 Sa da de dados em assembly gt Digitar e executar o programa estabelecendo um break pointer na ltima instru o MOV AL OF MOV DX 0378 OUT DX AL INT 20 gt Avaliar a resposta status dos LED s gt Repetir a execu o do programa anterior para outros bytes de sa da sem a necessidade do break pointer 2 5
44. A 7 de 0278h a 027Fh de 02BOh a 02BFh e Z Zoo V O 62 Q SEFREEEEREEEE 3EEEE 6 8 lt lt 8 8 8 als BES as BB Sel E E lt lt lt e e 3 SSE e E g deo EGA VGA deo CGA O isco flex vel OMI rojetos PCI lt gt al ala Q amp E MAD A lt W 4 3 O SLOT ISA Industry Standard Architecture Apresenta o Os Slots padr o ISA s o conectores de expans o do bus de dados bus de endere os bus de controle e alimenta o que permitem a liga o de v rios tipos de perif ricos placa da CPU atrav s de um conector de 62 pinos divididos em dois lados com 31 pinos cada e de outro com 36 pinos divididos em dois lados com 18 pinos cada As placas de perif ricos que s o ligadas nos slots s o acessadas atrav s do uso dos endere os reservados para esse fim no mapa de I O Esses sinais possuem n veis de tens o compat veis com TTL com exce o para as tens es de alimenta o e quando sa da capacidade de ativar at duas cargas TTL LOW SCHOTTKY 741 5 63 Laborat rio de Microprocessadores PINAGEM DO SLOT ISA IBM PC OBS Os sinais marcados com y s o ativos em O Wilson Ruiz O simbolo gt quando direcionado para o ret ngulo que representa o SLOT indica sa da no sentido inverso indica entrada e o sinal lt indica linha bidirecional Os pinos
45. A e e Ae e e e ke e e e ke ee ee ke eoe oe e ae e eae ae ae ae ae ae ae k ae k k kkk gt Subrotina ESCREVE_G_FECHADA Escreve a mensagem correspondente ao status da garra A EEEE EREEREER KREA PUBLIC ESCREVE_G_FECHADA ESCREVE_G_FECHADA PROC push ax push dx push bx necess rio pelo caractere colorido p necess rio pelo caractere colorido mov ah 09H 96 Laborat rio de Microprocessadores lea int push mov mov mov mov int pop pop pop pop pop ret dx MENS G CLOSED 21H mensagem bp cria caractere colorido ah 00H no final da mensagem al 16H bl 66H define atributo cor laranja cx 0009H 10H bp cx bx dx ax ESCREVE G FECHADA ENDP END ANAI finaliza o programa Wilson Ruiz 97 Laborat rio de Microprocessadores Wilson Ruiz 5 3 Conjunto de INSTRU ES B SICAS bs microprocessadores das sub fam lias Intel 80x86 80x88 e Pentium Observa es Para compactar as tabelas apresentadas sem perda de informa o adotada a seguinte nota o para as instru es Um valor num rico de 8 bits qualquer chamado byte Este possui o seu bit significativo colocado a esquerda chamado D7 e o seu bit significativo colocado a direita DO Um valor num rico de 4 bits chamado nibble existindo assim em um byte o nibble significativo colocado a esquerda e o nibble significativo colocado a direita Um valor num rico de 16 bits qualquer chamado de
46. AX AR MOV DX BX BX carrega o conte do de BX em DX ES INSTRU ES DE PERMUTA DE DADOS ENTRE REGISTRADORES DE 8 BITS Descri o da Instru o HG CE CECI se remet demum XCHG DL AL DLE gt troca os conte dos dos registradores Drs e AL Demais combina es entre registradores de 8 bits s o v lidas INSTRU ES DE PERMUTA DE DADOS ENTRE REGISTRADORES DE 16 BITS Mnem nico D EIS da instru o os conte dos dos reed ores Do Demais combina oes entre registradores de 16 bits X s o v lidas 99 Laborat rio de Microprocessadores Wilson Ruiz INSTRUC ES ARITM TICAS ENTRE REGISTRADORES DE 8 BITS Mnem nico Descri o da instru o ADD DH DH DH FA Demais combina es entre registradores de s o v lidas essas o 2 E lt AL carry flag Hes X d Demais combina es entre registradores de 8 bits s o v lidas C ed d us C od gt gt lw LI vU mE lt lt C Cj Demais registradores de 8 bits I idos para o multiplicador Os registradores AL multiplicando e AX produto sempre s o usados AXIDH A resto da divis o oo EE RXTCLi Demais IINE de 8 bits s o v lidos para o divisor Os registradores AX a ka e AL quociente e AH resto sempre s o usados Instruc o indefinida para divisor igual a zero Desc da O ADD AT Pyre DHF bye T eanyTts s o v lidas UB
47. DB 11H byte espelho do motor 1 MIRROR M2 DB OEEH byte espelho do motor 2 MIRROR M3 DB OEEH byte espelho do motor 3 BYTE VEL DB OFFH byte de sele o da velocidade do motor escolhido MIRROR GARRA DB 00H byte do status da garra ARA dede gt REGIAO DE DEFINICAO DE CONSTANTES gt 22 ae eae a eae a a JA e a e e le Je Je Je oe oe ae Je oe ode dolo a a a a a oe os e o ls e le le e le le e k kk kk gt PA DW 0380H endereco da porta A da 8255 PB DW 0381H endereco da porta B da 8255 PC DW 0382H endereco da porta C da 8255 PROG DW 0383H de programa o da 8255 GARRA DW 0384H endereco de acesso a garra MENS MO H DB cr lf Jf gt Movimentando motor 0 no sentido horario MENS M0 AH DB cr lf Jf gt Movimentando motor 0 no sentido anti horario MENS MI H DB cr lf Jf gt Movimentando motor 1 no sentido horario MENS MI AH DB cr lf lf gt Movimentando motor 1 no sentido anti horario MENS M2 H DB gt Movimentando motor 2 no sentido horario MENS M2 AH DB cr lf Jf gt Movimentando motor 2 no sentido anti horario MENS M3 H DB crlfjlf gt Movimentando motor 3 no sentido horario MENS M3 AH DB gt Movimentando motor 3 no sentido anti horario MENS MO STOPED DB gt Motor 0 parado MENS MI STOPED DB cr lf lf gt Motor 1 parado MENS M2 STOPED DB cr lf lf gt Motor 2 parado MENS M3 STOPED DB cr lf lf gt Motor 3 parado MENS VI DB 4
48. EUG A A AAA AA AND DH CL DH DH CL H ou L BX AE AH AH exclusive or BH AH AH exclusive or C D DL exclusive or BH DLeDL exduweo CL C C C C C j D exciusive or D Y AH AHY complementa os bits do registrador D D complementa os bits do registrador L BX ou endere o s o v lidos 102 Laborat rio de Microprocessadores Wilson Ruiz INSTRUC ES L GICAS ENTRE REGISTRADORES E DADOS DE 8 BITS Mnem nico D MEE da instru o AND AL byte ou s o v lidos byte Demais TIG de 8 bits exclusive or bye INSTRUC ES L GICAS ENTRE REGISTRADORES DE 16 BITS AND Demais entre registradores de 16 bits s o v lidas Lace A a SA JO A AA NOT DX DX DX complementa os bits do registrador Res sd Demais registradores de 16 bits s o v lidos INSTRU ES L GICAS EN TRE REGISTRADORES E DADOS DE 16 BITS Mnem nico Descri o da instru o AND AX word AX AX word Demais registradores de 16 bits s o v lidos A OR BX word BX BX word Demais registradores de T6 bits X s o v lidos XOR DX word DX DX exclusive or word Do Demais registradores de 16 bits X s o v lidos 103 Laborat rio de Microprocessadores Wilson Ruiz INSTRU ES DE TRANSFER NCIA DE DADOS ENTRE REGISTRADORES E MEM RIA Mnem nico
49. H int 21H mensagem push bp cria caractere colorido mov ah 09H no final da mensagem mov al 16H mov bl 11H define atributo cor azul escuro mov cx 0009H int 10H pop bp pop cx pop bx pop dx pop ax ret ESCREVE AH ENDP gt Subrotina gt ESCREVE_M2_H Escreve a mensagem correspondente ao motor em movimento PUBLIC ESCREVE_M2_H ESCREVE M2 H PROC push ax push dx push bx necess rio pelo caractere colorido push cx necess rio pelo caractere colorido mov ah 09H lea dx MENS M2 H int 21H mensagem push bp cria caractere colorido mov ah 09H no final da mensagem mov al 16H mov bl 22H define atributo cor verde claro mov cx 0009H int 10H pop bp pop cx pop bx pop dx pop ax ret ESCREVE M2 H ENDP gt Subrotina gt ESCREVE_M2_AH Escreve a mensagem correspondente ao motor em movimento PUBLIC ESCREVE_M2_AH ESCREVE_M2_AH PROC push ax push dx push bx necess rio pelo caractere colorido push cx necess rio pelo caractere colorido mov ah 09H lea dx MENS M2 AH int 21H mensagem push bp cria caractere colorido mov ah 09H no final da mensagem mov al 16H mov bl 22H define atributo cor verde claro 93 Laborat rio de Microprocessadores Wilson Ruiz mov cx 0009H int 10H pop bp pop cx pop bx pop dx pop ax ret ESCREVE M2 AH ENDP Subrotina ESCREVE M3 H Escreve mensagem correspondente ao motor em mo
50. MI Continua o movimento do motor ate que a tecla correspondente seja acionada pela segunda vez Aciona a escrita das mensagens correspondentes ao status do motor selecionado dd ed dd do PUBLIC MOVE MI AH MOVE MI AH PROC push ax push dx call ESCREVE MI AH mensagem 4 mov PA mov ah MIRROR byte espelho 85 Laborat rio de Microprocessadores ror mov and in and or out call mov int jnz mov int jnz call pop pop ret MOVE MI AH ah 1 MIRROR MI ah ah OFOH al dx al OFH al ah dx al PAUSA_1 ah OBH 21H al OFFH M4 ah 07H 21H al 66H M4 ESCREVE MI STOP dx ax ENDP Wilson Ruiz desloca atualiza byte espelho l a porta A mascara move 1 de um passo pausa buffer do teclado verifica se existe tecla se n o existe tecla continua movimento teclado compara com a tecla F min scula se diferente continua movimento mensagem finaliza o procedimento gt Subrotina gt MOVE_M2_H push push call MS mov mov rol mov and in and or out call mov int cmp jnz mov int cmp jnz call pop pop ret MOVE_M2_H MOVE_M2_H L o byte espelho de movimento do motor 2 MIRROR_M2 Move o motor 2 no sentido hor rio Atualiza MIRROR_M2 Continua o movimento do motor ate que a tecla correspondente seja acionada pela segunda vez Aciona a escrita das mensagens correspondentes ao status do mo
51. NDICIONAL JMP endere o IP endere o fornecido salto dentro do segmento indicado por CS INSTRU ES PARA DESVIO CONDICIONAL endere o e a flag zero indicar resultado igual a zero IP endere o RD o o Se a flag zero indicar resultado diferente de zero n o h desvio NZ endere o e a flag zero indicar resultado igual a zero n o h desvio p Se a flag zero indicar resultado diferente de zero IP endere o endere o e a flag carry indicar que houve um overflow IP endere o Se a flag carry indicar que n o houve um overflow n o h desvio NC endere o e a carry indicar que houve um overflow n o h desvio Se a flag carry indicar que n o houve um overflow IP lt endere o INSTRU ES PARA USO DE SUB ROTINAS ALL endere o amada de subprotina IP endere o Pilha Operacional lt IP anterior 2 RI Retorno de sub rotina IP dois bytes do topo da Pilha Operacional LL 108 Laborat rio de Microprocessadores Wilson Ruiz INSTRU ES PARA USO DA PILHA OPERACIONAL Mnem nico Descri o da instru o PUSHF Operacional Registrador de Tags PC AS LOEO US ha Operaciona POP CX X opo da Pilha Operaciona POPDX DX Topo da Pilha Operaciona Registrador de flags opo da Pilha Operaciona endere o salto dentro do segmento indicado por O desvio realizado enquanto o conte do de CX for maior que zero Caso contr rio a pr xima instru o
52. O DEBUG 2 1 O DEBUG Introduc o Neste cap tulo vamos usar o DEBUG uma vez que este possui timas caracter sticas did ticas e podemos encontr lo em qualquer PC com o MS DOS Windows podendo ser encontrado normalmente no diret rio CADOS ou CAWINDOWS DEBUG um ambiente para desenvolvimento e depura o de programas em assembly dos microprocessadores das sub fam lias Intel 80x86 80x88 e Pentium 186 e pode apenas criar arquivos com a extens o COM que devido as suas caracter sticas n o podem exceder 64 Kbytes de comprimento e tamb m devem sempre iniciarem no endere o de mem ria 0100H dentro do segmento determinado pelo sistema importante observar isso pois deste modo os programas COM n o s o reloc veis Usando este ambiente entre outras coisas poss vel visualizar os valores dos registradores internos da CPU microprocessador e executar o programa na forma passo a passo al m da compila o autom tica das instru es recursos interessantes durante o in cio do aprendizado e para o desenvolvimento de projetos Inicialmente s o apresentados os comandos mais importantes do DEBUG e ap s gradativamente s o propostos exerc cios e projetos relativos aos itens estudados Para a execu o de todos os comandos mostrados nos exemplos e solicitados nos exerc cios necess rio acionar a tecla ENTER ap s a digita o da linha correspondente O sinal de prompt do DOS adotado nos exemplos
53. O PRIMEIRO PROJETO 1 Primeiramente escrever o algoritmo do programa envolvendo o programa principal e todas as sub rotinas 38 Laborat rio de Microprocessadores Wilson Ruiz 2 No papel transcrever para o assembly inicialmente todas as sub rotinas e s ent o o programa principal essa forma de programa o contribui para uma maior clareza do problema ajudando tamb m na detec o de erros 3 Como sugest o de uma boa solu o para esse projeto a estrutura final deve possuir as seguintes caracter sticas Uma ou mais sub rotinas de pausa para controlar a frequ ncia de acendimento dos LED s Contadores para temporizar cada efeito escolhido Uma sub rotina para cada efeito acesso a essas sub rotinas ser definido por compara o dos bytes ASCII das teclas acionas Utilizar instru es PUSH e POP quando necess rio 4 Ap s digitar o programa principal digitar tamb m todas as sub rotinas sequencialmente criando blocos de instru es n o colados mas sempre separados de m ltiplos de 3 bytes assim ser mais f cil introduzir desvios no programa para eventuais altera es sem a necessidade de uma nova z digita o integral isso conseguido digitando se instru es NOP entre os blocos instru o de apenas um byte e que n o realiza nenhuma fun o 5 Gravar o programa e executa lo a partir do DOS 6 Esta estrutura muito se aproxima da maioria dos projetos de controle des
54. Wilson Ruiz Laborat rio de Microprocessadores Wilson Ruiz CAP TULO 1 CONCEITOS B SICOS 1 1 Apresenta o Este material oriundo do trabalho em disciplinas relacionadas ao assunto tem o objetivo de apenas de introduzir o leitor aluno no universo da programa o assembly dos microprocessadores das sub fam lias Intel 80x86 80x88 e Pentium conhecidas por 186 e tamb m de projetos em hardware apresentando conceitos e sugerindo aplica es de uma forma muito direta n o tendo a pretens o de esgotar o assunto Raz es para aprender programa o assembly Conhecer melhor o funcionamento do hardware microprocessador perif ricos mem rias etc permitindo o desenvolvimento de projetos de hardware e ou software mais eficientes Obter o controle total do PC Os programas em assembly s o em geral mais r pidos menores e mais poderosos at certos limites que os criados em outras linguagens Possibilidades da inclus o de rotinas assembly em programas escritos em linguagens de n veis alto ou m dio C Delphi etc F cil adapta o do programador a novas tecnologias como novas fam lias de microprocessadores e microcontroladodes 1 2 Hardware b sico Caracter sticas gerais 14 registradores de 16 bits Capaz de endere ar diretamente 1Mbyte de mem ria Capaz de acessar 65 535 64Kendere os portas de I O Registradores de uso geral AX AH AL BX CX DX 16 bits BH BL CH CL DH DL 8 bits
55. Word ou dois bytes existindo assim o byte significativo e o byte significativo podendo tamb m representar endere os Os registradores de 8 bit s especificados genericamente nas instru es s o AH AL BH BL CH CL DH DL BX e endere o Os registradores de 16 bits especificados genericamente nas instru es s o AX BX CX e DX Ao utilizar combina es de uma determinada instru o lembre se que nunca pode existir BX e endere o simultaneamente no mesmo mnem nico 98 Laborat rio de Microprocessadores Wilson Ruiz INSTRU ES PARA ENTRADA DE DADOS EM REGISTRADORES DE 8 BITS Mnem nico D da instru o MOV AL byte byte qualquer carrega um byte em MOV BL byte qualquer carrega um 225 INSTRU ES PARA ENTRADA DE DADOS EM REGISTRADORES DE 16 BITS Mnem nico Descri o da instru o MOV AX dois bytes AX Word ou AH byte significativo e byte significativo MOV BX dois bytes BX Word ou BH byte significativo e B byte significativo Do Demais registradores de 16 bits s o v lidos INSTRU ES DE TRANSFER NCIA DE DADOS ENTRE REGISTRADORES DE 8 BITS Mnem nico Descri o da instru o ee AE Creme o comento de Chan MOV CEBE CL BL o conte do de BL em Demais combinag es entre registradores s o v lidas Mnem nico Descri o da instru o MOV AX 0 ARE ea o SISSE E
56. _3 DB cr I 1f Voce pressionou pela terceira e ultima vez CODE EXEMPLO 8 PROC mov G data seq ncia necess ria para mensagens na tela mov ds ax inicializa o registradores de segmento mov es DS e CS cld reseta flag de dire o call ESCREVE INICIO ID mov ah 08h leitura de teclado sem eco int 21h 58 Laborat rio de Microprocessadores Wilson Ruiz emp al 6lh verifica tecla A min scula pz Ll cal MENSAGENS mp 12 Ll emp al 73h verifica tecla S min scula jz L3 mp 12 I3 cal ESCREVE FINAL mov ah 4ch int 21h EXEMPLO_8 ENDP LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLDLLLLLLLLLLLLLI gt subrotina ESCREVE INICIO Escreve mensagem inicial M M PUBLIC ESCREVE INICIO ESCREVE INICIO PROC push ax push dx mov 9 lea MENS INICIAL carregar o endere o externo int 21h EA enderego inicial da mensagem pop dx para o registrador pop ax ret ESCREVE INICIO ENDP LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL gt subrotina ESCREVE FINAL Escreve mensagem final SEBRAE PUBLIC ESCREVE FINAL ESCREVE FINAL PROC push ax push dx mov 09h lea MENS FINAL carregar o endere o externo int 21h EA endereco inicial da mensgem pop dx para o registrador pop ax ret ESCREVE FINAL ENDP 59 Laborat rio de Microprocessadores Wil
57. a o uso da diretiva PUBLIC MODEL SMALL STACK CODE TEST WRITE HEX PROC MOV DL 3Fh CALL WRITE HEX MOV AH 4CH INT 2lh TEST WRITE HEX ENDP PUBLIC WRITE HEX Move o valor 3Fh para o registrador DL Chama a sub rotina Fung o 4Ch Retorna o controle ao DOS Finaliza o procedimento Este procedimento converte para hexadecimal o byte armazenado no registrador DL e mostra o d gito Use WRITE HEX DIGIT WRITE HEX PROC PUSH CX PUSH DX MOV DH DL MOV CX 4 SHR DL CL CALL WRITE HEX DIGIT MOV DL DH AND DL OFh CALL WRITE HEX DIGIT POP DX POP CX RET WRITE HEX ENDP PUBLIC WRITE HEX DIGIT envia para pilha o valor do registrador CX envia para pilha o valor do registrador DX move o valor do registrador DL para o registrador DH move o valor 4 para o registrador CX mostra na tela o primeiro n mero hexadecimal move o valor do registrador DH para o registrador DL mostra na tela o segundo n mero hexadecimal retorna da pilha o valor do registrador DX retorna da pilha o valor do registrador CX retorna o controle ao procedimento que chamou 53 Laborat rio de Microprocessadores Wilson Ruiz Este procedimento converte os 4 bits mais baixos do registrador DL para um n mero hexadecimal e o mostra na tela do computador Use WRITE CHAR WRITE HEX DIGIT PROC PUSH DX envia para pilha o valor de DX CMP DL 10 compara se o n mero de bits menor do que 10 JAE HEX LETTER
58. ag bis gt b gt b gt bo bu bio bo be br be gt bs by ba bo bi gt bo e bo carry flag gt bis Demais registradores de 16 bits X s o v lidos 5 3 3 Ta o q 106 Laborat rio de Microprocessadores Wilson Ruiz INSTRUC ES DE ROTA O DE N BITS EM REGISTRADORES DE 16 BITS para a esquerda copiando bis na carry flag Demais registradores de 16 bits X s o v lidos O n mero de bits rotacionados sempre deve ficar em CL DAS ESSA S O E e Rota o de AX para a direita e copiando bona carry flag R A B X para a direita copiando bona carry flag Demais registradores m O n mero de bits rotacionados sempre deve ficar em CL amy flag X para a direita Atrav s da carry flag Demais registradores O n mero de bits rotacionados sempre deve ficar em CL INSTRU ES DE SA DA DE DADOS OUT porta porta AL sa da de dados envia o conte do de AL para a porta cujo endere o fornecido endere o de 8 bits OU DX AL envia o conte do de AL para a porta cujo endere o especificado em DX endere o de 16 bits porta sa da de dados envia o conte do de AX para a porta cujo endere o fornecido endere o de 8 bits OUT DX AX DX AX envia o conte do de AX para a porta cujo endere o especificado em DX endere o de 16 bits INSTRU ES DE ENTRADA DE DADOS Mnem nico Descri o da instru o NAL porta A porta entrada de dados L o byte presente
59. as outras tr s entradas de sele o A B C Se pelo menos uma das entradas de controle estiver desabilitada todas as sa das permanecer o em n vel 1 No circuito da interface a sa da YO empregada para ativar a 8255 mostrada por m as sete sa das restantes podem ser usadas para expans o do sistema isto para ativar outros perif ricos conforme necessidade Tabela verdade do 741 5 138 CC TE TAS 1 1 0 X X 1 1 1 1 1 1 1 1 0 O0 OC O x x x am CO Qo OC O x x x OO O O x x x Rao O mememe c OD m o Rea Ora a a gt O m O me O s mbolo do 74L S138 74LS138 42 Laborat rio de Microprocessadores Wilson Ruiz O Foto acoplador A figura seguinte representa um foto acoplador ptico isolador ptico acoplador ou acoplador ptico mostrando um LED acionando um fototransistor em um nico encapsulamento O funcionamento desta configura o numa aplica o digital consiste em acender ou apagar o LED de acordo com os n veis l gicos do sinal aplicado na entrada e assim cortar ou saturar o fototransistor associado c Rled Vin Wout Ja LI y Loi A forma de liga o desse componente deve ser adaptada a cada aplica o bem como o valor do resistor ligado em s rie com o LED e do resistor ligado no
60. car o final com o comando U 2 18 Comparar duas regi es de mem ria gt Digitar o comando C 0100 010F 0150 gt Verificar os valores apresentados na tela gt O comando compara entre si os dados das duas regi es de mem ria de 0100h a 0150h com outra que inicia se em 0150h mostrando diferen as gt Testar este comando tamb m para regi es de mem ria com conte dos id nticos 2 19 Procurar dados na mem ria gt Digitar o comando S 0100 0200 FF gt Verificar os valores apresentados na tela gt O comando procura o byte FFh na regi o de mem ria especificada no caso de 0100h a 0200h indicando o endere o do byte encontrado gt Para procurar uma seq ncia de bytes por exemplo CCh DDh na mesma regi o de mem ria o comando seria S 0100 0200 CC DD EE 16 Laborat rio de Microprocessadores Wilson Ruiz 2 20 Interrup es Vis o geral Interrup es s o estruturas usadas para transferir o controle registradors CS IP de uma localiza o na mem ria para outra Quando uma interrup o ocorre a CPU suspende temporariamente a fun o atual ap s terminar a instru o que est sendo executada e executa uma rotina especial conhecida como rotina de servi o de interrup o ISR Quando a ISR termina a CPU volta execu o no ponto imediatamente ap s a instru o que foi interrompida Existem tr s tipos diferentes de interrup es no PC Interrup es de
61. carry flag b 3be3 bs b42b33 0 bibo carry flag bo Rota o de CL para a direita de um bit copiando bona carry flag b gt b5 gt b5 gt b 4 gt b3 gt b gt b gt b gt b e carry flag bo D DX Rotac o de AL para a esquerda de um bit atrav s da carry flag b bg b b b4 b b Eb flag b Rota o de BH para a esquerda de um bit atrav s da carry flag b bs b5 b amp b4 b b Cb carry flag b Demais registradores de 8 bits H ou L BX ou endere o s o v lidos R ota o de AH para a direita de um bit atrav s da carry flag b7 gt b5 gt b5 gt b4 gt b3 gt b gt b gt b gt Carry flag gt b R ota o de BL para a direita de um bit atrav s da carry flag b 2bg3 b53 b 3b42 b b gt b carry flag gt b D 104 Laborat rio de Microprocessadores Wilson Ruiz INSTRU ES DE ROTA O DE N BITS EM REGISTRADORES DE 8 BITS RCL BL CL RCR BL CL Rota o de AL para a esquerda de um n mero de bits indicado em CL e copiando b na A cany flag Rota o de BH para a esquerda de um n mero de bits indicado em copiando b na carry flag Demais registradores de 8 bits O n mero de bits rotacionados sempre deve ficar em CL Demais registradores O n mero de bits rotacionados sempre deve ficar em CL Rota o de BL para a esquerda de um n mero de bits indicado em CL Atrav s da
62. cipa o do aluno nas datas marcadas para desenvolvimento Avalia o do funcionamento do Projeto Documenta o entregue Argii o feita pelo Professor individualmente cada aluno do grupo Observa o e Eventuais situa es n o contempladas por este texto ser o julgadas pelo Professor da disciplina Calend rio de desenvolvimento para controle dos alunos e Cadastramento dos grupos de trabalho e Apresenta o e an lise da proposta de projeto e Data reservada para o desenvolvimento da interface e Apresenta o da interface e Data reservada para o desenvolvimento do sistema e Apresenta o final e entrega da documenta o Grupo de trabalho Nome N 77 Laborat rio de Microprocessadores Wilson Ruiz CAPITULO 5 DIVERSOS 5 Exerc cios de programac o assembly para os microprocessadores Intel das fam lias 80X86 80X88 e Pentium O objetivo desta lista te rica apenas familiarizar o aluno com esta linguagem enfatizando se a aplica es das instru es b sicas de diferentes modos de endere amento m s sem o rigor das defini es dos mesmos e ainda n o importando se com o ambiente de usado assim ela deve ser resolvida seq encialmente e logo no in cio da aprendizagem de programa o 1 Escrever um programa em linguagem Assembly dos microprocessadores relacionados que realize as seguintes c pias de dados conte dos dos endere
63. com n meros iniciados por A e C referem se ao conhecido lado O d e Co refi nhecido lad dos componentes da placa e os com n meros iniciados por e D ao lado da solda sendo sua contagem iniciada sempre em rela o ao painel traseiro do computador O SLOT original do PC XT Sinal pino pino Sinal gt O CH CKY GND RESET DRV gt lt gt D7 45V lt gt D6 IRQ2 lt gt D5 5V lt gt D4 DRQ2 lt gt D3 12V lt gt D2 reservado lt gt DI 12V lt gt DO GND MEMWy gt AEN MEMR gt 19 OW gt A18 gt AI7 DACK3 gt A16 DRQ3 15 gt 14 DRQI A13 DACKO gt 12 CLOCK gt All IRQ7 10 IRQ6 A9 IRQ5 IRQ4 A7 IRQ3 A6 DACK2 gt lt AS TC lt A4 ALE gt lt A3 5V A2 OSC 2 AI GND A0 LO CH RDY 64 Laborat rio de Microprocessadores O SLOT ISA para 286 386 486 e Pentium OBS Notar as diferen as nos pinos B4 B8 B11 e B12 Sinal pino pino Sinal GND RESET DRV gt lt gt D7 5V lt gt IRQ9 lt gt D5 5V lt gt D4 DRQ2 lt gt D3 12V lt gt D2 OWS gt lt gt DI 12V lt gt DO GND SMEMWy gt AEN SMEMR gt 19 gt A18 gt AI7 DACK3 gt A16 DRQ3 15 DACKI gt 14 DRQI A13
64. de texto caracteres digitados O fim da string marcado com o caractere ODh que embora conste da string n o contado no byte 1 Verificar estado de AL FFh caso exista pressionamento de tecla caractere no buffer AL 00h caso n o exista caractere Limpar buffer do teclado AH 0Ch Veja descri o da e receber caractere AL m da fun o fun o que foi p recebimento do escolhida em AL caractere Valores p AL 01h 06h 07h e 08h indicam fun o desta interrup o ser chamada ap s O esvaziamento buffer Laborat rio de Microprocessadores Wilson Ruiz Unidades de disco AH 0Eh AL n mero de presente DL n mero unidades de disco unidade de disco do sistema 00h A 01h B Obter unidade de disco AH 19h AL unidade de ativa disco ativa 00h A 01h B Obter data AL dia da semana de OOh domingo a O6h s bado CX ano de 1980 a 2099 DH m s 01h janeiro OCh dezembro DL dia do m s HN um Obter hor no CH hora formato 24 horas de 00 a 23 CL minutos de 00 a 59 DH segundos de 00 a 59 DL cent simos de Ch _ Encerrar programa segundo de 00 a 99 Definir hor rio DH segundos DI cent simos de segundo Obter vers o do DOS P vers es anteriores a 5 AL n mero principal da vers o e AH secund rio Todos os valores retornados por esta fun o estar o em hexa Todos os valores retornados por esta fun o
65. do verifica se existe tecla se n o existe tecla continua movimento teclado compara com a tecla J min scula se diferente continua movimento mensagem finaliza o procedimento 2 E sk oe oe 3 ale ode ode gt Subrotina gt gt MOVE_M3_AH push MOVE_M3_AH L o byte espelho de movimento do motor 3 MIRROR_M3 Move o motor 3 no sentido anti hor rio Atualiza MIRROR M3 Continua o movimento do motor ate que a tecla correspondente seja acionada pela segunda vez Aciona a escrita das mensagens correspondentes ao status do motor selecionado CEPIS PUBLIC MOVE M3 AH PROC ax 87 Laborat rio de Microprocessadores M8 MOVE_M3_AH push call mov mov ror mov and in and or out call mov int cmp jnz mov int jnz call pop pop ret dx ESCREVE M3 AH dx PB ah MIRROR M3 ah 1 MIRROR M3 ah ah OFOH al dx al OFH al ah dx al PAUSA ah OBH 21H al OFFH M8 ah 07H 21H al 6BH M8 ESCREVE_M3_STOP dx ax ENDP Wilson Ruiz mensagem byte espelho desloca atualiza byte espelho a porta B mascara move M3 de um passo pausa buffer do teclado verifica se existe tecla se n o existe tecla continua movimento teclado compara com a tecla K min scula se diferente continua movimento mensagem finaliza o procedime
66. do programa executada CX o contador de repeti es INSTRU O SEM OPERA O Mnem nico Descri o da instru o reza operacto INSTRU O DE PARADA Mnem nico Descri o da instru o Produz a parada do processador usada para a finaliza o de um processamento c clico 109 Laborat rio de Microprocessadores Wilson Ruiz 5 4 Bibliografia Linguagem Assembly para IBM PC Peter Norton e John Socha Editora Campus Guia do Programador para IBM PC Peter Norton Editora Campus Desvendando o PC Peter Norton Editora Campus PC Assembler usando DOS Daniel G A Quadros Editora Campus Turbo Assembler e Macro Assembler Guia do Usu rio Jeremias Pereira dos Santos Mc Graw Hill 8086 e 8088 Hardware Software Aplica es e Projetos Wilson Alonso Dias Jr Mc Graw Hill The 8088 Project Book Robert Grossblatt Tab Books Inc The 8088 and 8086 Microprocessors W Triebel A Singh Prentice Hall International Editions The 8086 8088 Family Design Programming and Interfacing John Uffenbeck Prentice Hall International Editions PC um Guia Pr tico de Hardware e Interfaceamento 2 Edi o Ricardo Zelenovsky e Alexandre Mendon a MZ Editora Ltda Interrup es do MS DOS Guia de Consulta R pida Adlich Novatec Editora Notas de aulas diversas 2002 W R 110
67. dor seja capaz de gerenciar os dados se faz necess rio que cada informa o ou instru o se encontre na rea correspondente ao seu segmento O endere o do segmento fornecido ao montador pelos registradores DS ES SS e CS escolhidos conforme o tipo da informa o Observando como uma instru o apresentada no DEBUG 1CB0 0102 MOV AX BX O primeiro n mero 1CBO corresponde ao segmento de mem ria que est sendo usado o segundo uma refer ncia ao endere o no interior do segmento um deslocamento dentro deste chamado offset 47 Laborat rio de Microprocessadores Wilson Ruiz O modo usado para indicar ao montador quais segmentos s o usados empregando as diretivas CODE DATA e STACK O montador ajusta o tamanho dos segmentos m ximo de 64 Kbytes tomando como base o n mero de bytes que cada instru o assembly precisa pois seria um desperd cio de mem ria usar segmentos inteiros para armazenar pequenos programas Por exemplo se um programa necessita de apenas 10Kbytes para armazenar dados o segmento de dados ser apenas de 10Kbytes e n o de 64Kbytes 3 4 Constru o de um programa passo a passo em assembly Leia atentamente todas as explica es gt Primeiro passo Use qualquer editor de texto para criar o programa fonte Entre com as seguintes linhas do exemplol asm nome com no m ximo 8 caracteres e sem espa o Aten o use para fazer coment rios em programas a
68. dos no programa na fase de teste A corre o em geral requer a repeti o de todos os passos com observa o atenta Laborat rio de Microprocessadores Wilson Ruiz 1 4 Os ambientes de programac o Para a cria o de programas em assembly trabalhamos com duas op es o DEBUG e o TASM Turbo Assembler da Borland abordados nos pr ximos cap tulos 1 5 Estrutura das instru es em Assembly Nas linhas do c digo em Linguagem Assembly existem tr s partes not veis a primeira o nome da instru o a ser executada a segunda s o os par metros do comando a terceira os operandos Exemplo 1 ADD AH BH Aqui ADD o comando a ser executado neste caso uma adic o e os registradores AH e BH s o os par metros Exemplo 2 MOV AL 25 Neste exemplo MOV a instru o a ser executada neste caso uma movimenta o de dados AL o par metro e o byte 25h o operando valor em sempre em hexadecimal no DEBUG e opcionalmente em bin rio decimal ou hexadecimal no TASM Os nomes das instru es nesta linguagem s o constitu dos de 2 3 ou 4 letras oriundas de abrevia es de frases em ingl s Estas instru es s o chamadas mnem nicos algo f cil de ser memorizado e quando compiladas s o associadas ao seu respectivo c digo de opera o Op Code representando a fun o que o microprocessador executar 1 6 Observa es Este procedimento experimental apresentado em itens numerados cada qua
69. e Prog 030 h sl er DO de e em TERI pana 258 IL PB 0304h o inversor dos pinos ir do 79 504 por um Jumper Interface Paralela Programavel e PC 0300h Substitu 85452525 e rolado TIP PNM E O E008 TEEME NEAR GN AG AG AS 4 AT 2 i eo 4 x D 5 5 Titie OBS Uma mudanca para os enderecos k E v 1 A 744 504 1 1 C1 4a 74LSO4 75 Laborat rio de Microprocessadores Wilson Ruiz 4 5 Normas para o projeto da disciplina Informa es iniciais e Projeto realizado por um grupo constitu do de preferencialmente 3 alunos e O trabalho tem como objetivo a elabora o completa de um pequeno sistema controlado por um microcomputador Apresenta o dividida em duas etapas e Placa de interface conectada a um slot ISA para PC funcionando e Utiliza o do circuito montado para o controle do sistema previamente definido pelo grupo Metodologia de trabalho e O grupo deve inicialmente cadastrar se com o Professor e Esse grupo tamb m deve apresentar propostas de sistemas ao Professor at a data marcada e escolher dentre as aprovadas a que se constituir no trabalho estas propostas podem conter partes das sugest es apresentadas pelo Professor e Ser o antecipadamente marcados dias de desenvolvimento onde os grupos dever o trazer seus respectivos projetos para testes no laborat rio uma data para cada etapa descrita anteri
70. e oe Je ode e eae oe ode ode Je gt Subrotina ESCREVE M3 STOP Escreve a mensagem correspondente ao motor parado e Sa PUBLIC ESCREVE M3 STOP ESCREVE M3 STOP PROC push ax push dx push bx necess rio pelo caractere colorido push cx necess rio pelo caractere colorido mov ah 09H lea dx MENS M3 STOPED int 21H mensagem push bp cria caractere colorido mov ah 09H no final da mensagem mov al 16H mov bl 55H define atributo cor rosa mov cx 0002H int 10H pop bp pop cx pop bx pop dx pop ax ret ESCREVE M3 STOP ENDP gt pubronna ESCREVE_G_ABERTA Escreve a mensagem correspondente ao status da garra DENISE PUBLIC ESCREVE G ABERTA ESCREVE G ABERTA PROC push ax push dx push bx necess rio pelo caractere colorido push cx necess rio pelo caractere colorido mov ah 09H lea dx MENS G OPENED int 21H mensagem push bp cria caractere colorido mov ah 09H no final da mensagem mov al 16H mov bl 66H define atributo cor laranja mov cx 0002H int 10H pop bp pop cx pop bx pop dx pop ax ret ESCREVE G ABERTA ENDP ls ls le le le e Je Je Ae de A Ae de A de e
71. e ole ole ole ole ole er le e eee ole ole ole ole ole ole ole ole ole K K KE K ole ole ole ole ole K e K K K K KK KK KK gt exemplo8 asm Descri o Exemplo do uso do TASM com mensagens na tela e aplica o das diretivas DATA EQU DB e DW gt ole ole ole ole ole e ole ole R eee ole ole ole ole ole oe oe je je ole ole ole ole ole ole ole ole ole ole le le ole eee ole ole ole ole ole K e oe K K K K KK ole KKK gt nome do programa exemplo8 asm CR EQU 13 ASCII Carriage Return LF EQU 10 ASCII Line Feed DOSSEG MODEL SMALL STACK DATA LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLI REGI O DE DEFINI O DE VARI VEIS LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLLLLLLI gt CONTADOR estabelece o valor inicial do contador de n mero de vezes que a tecla pressionada LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLDLLLLLLLLLLLLLI a REGI O DE DEFINI O DE CONSTANTES LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLLLLLLLLI a MENS INICIAL DB cr 1f1f gt gt PROGRAMA EXEMPLO 8 lt lt DB crfJf Tecla a minuscula para prosseguir DB crfJf tecla s minuscula para sair MENS FINAL DB crflf gt gt PROGRAMA FINALIZADO lt lt DB crlfif TCHAU MENS_1 DB cr lf lf Voce pessionou a pela primeira vez MENS_2 DB cr I If Voce pressionou a pela segunda vez MENS
72. e ou ap s a execu o de uma instru o Por exemplo se uma instru o de divis o foi executada para o divisor igual a zero a CPU executa uma interrup o 0 2 21 INT 20 Uma boa sa da gt A interrup o INT 20 o n mero 20 expresso em hexadecimal est presente no DOS e portanto no Windows e tem como fun o encerrar um programa em assembly sem parar o microprocessador devolvendo assim o controle do sistema para o DOS ou para o DEBUG dependendo do ponto a partir do qual o programa foi executado gt Digitar o comando abaixo A 0111 THHHE 0111 INT 20 gt Usar o comando U para verificar na listagem a entrada dessa nova instru o no final do programa anteriormente digitado 2 22 Execu o integral de um programa gt Estabelecer IP 0100 gt Usar o comando R para carregar 0000h nos registradores de uso geral gt Digitar o comando seguinte G 18 Laborat rio de Microprocessadores Wilson Ruiz gt Uma mensagem semelhante a Programa finalizado normalmente ser exibida na tela devido a execu o da instru o INT 20 gt Verificar o resultado do programa com o comando gt O comando G permite a execu o completa de um programa partindo do endere o indicado por IP at encontrar o INT 20 gt NUNCA executar o INT 20 como comando T 2 23 Execu o parcial de um programa gt O comando G permite o estabelecimento de um
73. ecess rio indicarmos o tamanho do mesmo para o Debug assim utilizaremos o comando H para calcular o n mero de bytes do mesmo da seguinte forma H 108 100 gt 0100h endere o de in cio do programa 0108h o byte seguinte ao t rmino da ltima instru o do programa 0208 0008 respectivamente a soma e a diferen a dos valores digitados gt O uso do comando para esse c lculo pode ser muito til na determina o do comprimento de programas maiores gt O Debug usa o par de registradores BX CX para o tamanho do programa a ser gravado portanto usando o comando R definir BX 0000 e CX 0008 gt Digitar o comando W gt Ler a mensagem na tela gt Sair do Debug comando Q gt Usar o comando DIR do DOS para verificar o arquivo criado CDIR LETRA COM gt Executar este programa diretamente no DOS simplesmente digitando o seu nome CADSLETRA gt Analisar o resultado gt gravarmos este programa em um disquete ter amos a seguinte seq ncia de comandos N A LETRA COM W 25 Laborat rio de Microprocessadores Wilson Ruiz 2 30 Leitura de um arquivo gt ler carregar o arquivo do disco para o DEBUG e verificar o seu conte do executar a seguinte seq ncia de comandos NLETRA COM L U 0100 gt Ou para o arquivo em disquete ter amos N A LETRA COM U 0100 2 31 Execuc o passo a passo de um programa co
74. egistradores gt Para sair do break pointer basta apenas digitar o comando G 2 36 Exerc cio gt o procedimento anterior para outras teclas letras min sculas mai sculas n meros e s mbolos 2 37 Leitura de teclas especiais gt Repetir o procedimento anterior para as teclas especiais isto com o c digo ASCII estendido por exemplo a tecla F1 Para cada tecla especial o DOS envia dois caracteres um ap s o outro O primeiro sempre 00h indicando que o pr ximo caractere o c digo de varredura de uma tecla especial assim voc ver 00h no registrador AL e o caractere ASCII equivalente ao segundo byte impresso na tela 2 38 Exerc cio gt Repetir o procedimento anterior para outras teclas especiais 2 39 Obter a data gt Digitar o programa a partir de 0100h MOV AH 2A INT 21 continua 28 Laborat rio de Microprocessadores Wilson Ruiz INT 20 gt Executar o programa estabelecendo um break pointer na ltima instru o gt Na listagem apresentada ou com o comando verificar o conte do dos registradores AL CX DH e DL gt Comparar os valores encontrados com os esperados de acordo com as fun es da INT 21 constantes na tabela fornecida 2 40 Definir data gt Usar a INT 21 para definir uma nova data para o sistema consultar a tabela das fun es da INT 21 gt Ler essa nova data gt Voltar
75. ela CPU durante acessos mem ria e aos dispositivos de I O Durante os ciclos de DMA eles o gerados pelo controlador de DMA Com 20 linhas de endere o pode se acessar at 1 Mbyte de mem ria ou atrav s de instru es de IN e OUT at 1 K dispositivos de I O pois essas instru es emitem endere os pelas linhas at A15 As linhas A16 at A19 n o s o ativadas durante as opera es de I O DO D7 dados bidirecional Estas linhas s o usadas para transmitir dados entre a CPU e a mem ria ou dispositivos de I O Elas estar o v lidas um pouco antes do flanco ascendente T dos sinais S MEMW e IOW Normalmente usam se o IOW como strobe para escrita nos dispositivos de T O e a linha S MEMW como strobe de escrita na mem ria Durante 66 Laborat rio de Microprocessadores Wilson Ruiz as opera es de leitura IOR ou S MEMR os dados devem estar v lidos um pouco antes do flanco ascendente T de ou S MEMR Nas opera es de DMA essas linhas permitem que o dado trafegue diretamente entre a mem ria e o dispositivo de I O T O Read sa da Este um sinal gerado pelo Controlador de Barramento e indica aos dispositivos de VO que o atual ciclo de barramento um ciclo de leitura de VO O dispositivo endere ado deve responder colocando o dado no barramento pouco antes da subida do sinal IOR Durante os ciclos de DMA o sinal IOR gerado pelo Contr
76. ensagem cria caractere colorido no final da mensagem define atributo cor vermelho se e oe oe oko oe oo oe oo RER oo oe oe ote she gt Subrotina ESCREVE STOP Escreve a mensagem correspondente ao motor parado NON PUBLIC ESCREVE MI STOP ESCREVE MI STOP PROC push ax push dx push bx push cx mov ah 09H lea dx MENS MI STOPED int 21H push bp mov ah 09H mov al 16H mov bl 11H mov cx 0002H int 10H pop bp pop Cx pop bx pop dx pop ax ret ESCREVE MI STOP ENDP necess rio pelo caractere colorido necess rio pelo caractere colorido mensagem cria caractere colorido no final da mensagem define atributo cor azul escuro Subrotina ESCREVE M2 STOP Escreve a mensagem correspondente ao motor parado dd dd PUBLIC ESCREVE M2 STOP ESCREVE M2 STOP PROC push ax push dx push bx push cx mov ah 09H lea dx MENS M2 STOPED int 21H push bp mov ah 09H mov al 16H mov bl 22H mov cx 0002H int 10H pop bp pop cx pop bx necess rio pelo caractere colorido necess rio pelo caractere colorido mensagem cria caractere colorido no final da mensagem define atributo cor verde claro 95 Laborat rio de Microprocessadores Wilson Ruiz pop dx pop ax ret ESCREVE M2 STOP ENDP 3 ok F ok oe e a ae 9 oe oe de e ae oe o
77. estar o em Hexa Com precis o limitada per odo do clock do computador Veja obs anterior Encemrpmgmma AH ACh 22 Wilson Ruiz Laborat rio de Microprocessadores eno N HALE LL EE LLLEELLLEELL O B a ABS m m s m o la lt alo m lx lo la fon a lt O lo la leo lx ho B FR C ooO SO GSoGO go po 9o RRRARBRIA t NO AU IIIIIIIIAIIIIIINIIZI 8 lb o lo lt JO JA le eo lt hm lt O mm O lo o loo o lt JO ho lio j j po po p p p fo ho jojo No Xo o 5 NO Ele e le e le JS le JE E E A O JA u Ti lo le la le o o e foo lt 184 li lo la la wm lo lola lt Im JO A Im fo la eo ac fa c a fa e eo eo eo fe c fe fa eS E T E RE F RE RE E SE S o o qu qu uw uw 9 un s LA 9 lalo xu lt O m z lola lalt ha o foo la lt Jan O JA la lx lo la ln 1 lo E loo lt o lolo la fa aja je Sa la e I la e oe oet et e la Laborat rio de Microprocessadores Wilson Ruiz 2 25 C digos de caracteres ASCII gt Analisar rapidamente o conte do da tabela anterior gt O padr o ASCII American Standard Code for I
78. grama l dois caracteres e os imprime na tela exemplo4 asm Wilson Ruiz Atenc o para o uso de caracteres em decimal sem h acompanhando o n mero e caracteres ASCII entre aspas representando o c digo correspondente Atenc o para o uso obrigat rio das diretivas PROC e ENDP para iniciar e finalizar um procedimento ou sub rotina Ateng o para o uso do caractere _ underline para o nome de procedimentos n o permitido o uso de espa o para tal MODEL SMALL STACK CODE PRINTAJ PROC MOV DL A MOV CX 10 PRINT LOOP CALL WRITE CHAR INC DL LOOP PRINT LOOP MOV AH 4Ch INT 21h PRINT A J ENDP WRITE CHAR PROC MOV AH 2h INT 2lh RET WRITE CHAR ENDP END PRINT A J move o c digo ASCII byte do caractere A para o registrador DL move o valor decimal 10 para o registrador CX este valor usado para fazer la o com 10 intera es Imprime o caractere em DL Incrementa o valor do registrador DL La o para imprimir 10 caracteres Fung o 4Ch para sair ao DOS Interrup o 21h Finaliza o procedimento Func o 2h imprime caractere Imprime o caractere que est em DL Retorna o controle ao procedimento que chamou Finaliza o procedimento Finaliza o programa gt Este programa mostra os caracteres ABCDEFGHIJ na tela 52 Laborat rio de Microprocessadores exemplo5 asm Aten o para os cabe alhos Wilson Ruiz Aten o par
79. h END Wilson Ruiz move o valor 2h para o registrador ah move o valor 2ah para o registrador dl o valor ASCII do caractere interrupg o 21h fun o 4ch sai para o sistema operacional nterrupc o 21h finaliza o programa gt Este programa imprime o caractere na tela digitl digit exemplo3 asm Atenc o para o uso de LABEL S seguidos de dois pontos para indicar os enderegos de desvios MODEL SMALL STACK CODE MOV INT MOV SUB CMP JLE SUB MOV SHL INT SUB CMP JLE SUB ADD MOV AH lh 21h DL AL DL 30h DL 9h digitl DL 7h CL 4h DL CL 21h AL 30h AL 9h digit AL 7h DL AL AH 4Ch 21h END Fung o 1 do DOS o caractere e retorna o c digo ASCII ao registrador AL move o c digo ASCII para o registrador DL subtrai de 30h para converter a um d gito de O a 9 compara se o d gito est entre O e 9 se verdadeiro obt m o primeiro n mero 4 bits se falso subtrai de 7h para converter a uma letra A a F prepara para multiplicar por 16 multiplica para converter dentro dos 4 bits mais altos obt m o pr ximo caractere repete a opera o de convers o compara o valor 9h com o conte do do registrador AL se verdadeiro obt m o segundo d gito se falso subtrai de 7h adiciona o segundo d gito fun o 4Ch do DOS exit interrup o 21h finaliza o programa 51 Laborat rio de Microprocessadores gt Este pro
80. igura mostra o s mbolo de um motor de passo gen rico MOTOR STEPPER A A c gt Onde A A Be B s o chamadas fases do motor 40 Laborat rio de Microprocessadores Wilson Ruiz gt A seguir mostrado o esquema eletr nico de um circuito de drive gen rico para um motor unipolar de seis fios sem mostrar os acopladores pticos esse esquema dever ser adaptado ao motor utilizado TVycc motor de passo unipolar de 6 fios A TIPi22 TIP122 TIPi22 TIPi122 gt Tabela verdade de cntrole do conjunto drive acopladores pticos motor de passo gt Observa o As fases A B e B s o acionadas pelos bits D3 D2 D1 e DO respectivamente conforme liga es do cabo utilizado E TESTS T TA T EE ES E E pe 3 0 o Pasos 6 r T n esa o 1 i T 3 i Q j gt Para fazermos o motor girar no sentido hor rio devemos seguir a tabela anterior na ordem apresentada passo 1 passo 2 passo 3 passo4 passo 1 passo 2 e para invertemos o sentido de rota o devemos tamb m inverter o sentido de leitura da tabela passo 4 passo 3 passo 2 passo 1 passo 4 passo 3 gt O motor utilizado possui uma resolu o de 1 8 passo ou 200 passos revolu o assim para esse programa exemplo optaremos por um controle de tr s voltas portanto temos 200 x 3 600 passos em decimal que eq
81. ilha o valor do registrador SI MOV AX DX move o valor do registrador DX para AX MOV SI 10 move o valor 10 para o registrador SI XOR CX CX zera o registrador CX NON ZERO XOR DX DX zera o registrador DX DIV SI divis o entre SI PUSH DX Envia para a pilha o valor do registrador DX INC CX incrementa CX OR AX AX n o zero JNE ZERO salta para NON ZERO WRITE DIGIT LOOP POP DX Retorna o valor em modo reverso CALL WRITE HEX DIGIT Chama o procedimento LOOP WRITE DIGIT LOOP END DECIMAL POP SI retorna da pilha o valor do registrador SI 55 Laborat rio de Microprocessadores Wilson Ruiz POP DX retorna da pilha o valor do registrador DX POP CX retorna da pilha o valor do registrador CX POP AX retorna da pilha o valor do registrador AX RET retorna o controle ao procedimento que chamou WRITE DECIMAL ENDP Finaliza o procedimento PUBLIC WRITE HEX DIGIT Este procedimento converte os 4 bits mais baixos do registrador DL num n mero hexadecimal e os imprime Use WRITE CHAR WRITE HEX DIGIT PROC PUSH DX Envia para pilha o valor do registrador DX CMP DL 10 Compara o valor 10 com o valor do registrador DL JAE HEX LETTER se n o salta para HEX_LETER ADD DL 0 se sim converte em d gito num rico JMP Short WRITE DIGIT escreve o caractere HEX LETTER ADD DL A 10 converte um caractere para um n mero hexadecimal WRITE DIGIT CALL WRITE CHAR mostra o caractere na tela POP DX Reto
82. iversas telas menus etc concentrando sua aten o no emprego das diretivas EQU DB e DW Projeto 1 item 2 56 Projeto 2 item 2 57 Projeto 3 item 2 58 Projeto 4 item 2 59 Projeto 5 item 2 63 Projeto 6 item 2 64 Projeto 7 item 2 65 61 Laborat rio de Microprocessadores Wilson Ruiz CAPITULO 4 PROJETO DE UMA INTERFACE 4 1 Introduc o A participa o em um projeto mesmo de pequeno porte e com apenas uma finalidade did tica muito importante para o aprendizado do aluno pois somente atrav s da montagem e da utiliza o pr tica de uma interface montada ganha se uma real experi ncia sobre as dificuldades envolvidas no projeto e na aplica o de um circuito para computador Com o objetivo de iniciar os alunos nesta rea e com as dificuldades did ticas inerentes da baixa carga hor ria dos cursos atuais que inevitavelmente leva nos a formas mais objetivas de ensinar apresentado neste cap tulo o projeto completo de uma placa de interface multiuso ou multi I O que poder ser totalmente utilizado ou adaptado com facilidade s necessidades e interesse do s aluno s Este conte do tem o objetivo de apenas iniciar o aluno e n o portanto a pretens o de tentar esgotar t o vasto assunto Inicialmente s o apresentadas caracter sticas de hardware do PC relevantes ao projeto seguido de informa es sobre os CI s mais importantes envolvidos e finalmente o esquema eletr nico
83. l abordando de forma objetiva o funcionamento de um determinado comando ou fun o algumas caracter sticas relevantes a este e ou exerc cios pr ticos e projetos sobre o mesmo Para um melhor desempenho do leitor aluno durante a execu o desse roteiro necess rio que o mesmo seja seguido na ordem crescente dos itens do respectivo cap tulo e que o conte do de cada t pico seja lido integralmente Para indicar o in cio das observa es ou coment rios adicionais pertinentes ao respectivo item do roteiro usado o s mbolo gt Evitando que o texto explicativo seja confundido com o pr prio programa Quando as explica es forem feitas sobre um determinado comando ou registrador do microprocessador o nome deste aparecer sempre entre aspas Laborat rio de Microprocessadores Wilson Ruiz Quando as explica es forem feitas sobre uma determinada instru o em um programa apresentado ser usado um ponto e v gula para separar o texto desta instruc o Nos exemplos onde existirem desvios estes podem conter o endere o do ponto de entrada no programa quando a aplica o feita no DEBUG ou de outra forma simplesmente um nome label que representar esse endere o para o TASM assim o ponto de entrada no programa ser representado tamb m por esse nome seguido de dois pontos para separ lo da instru o Laborat rio de Microprocessadores Wilson Ruiz CAP TULO 2 PR TICA COM
84. lh move o valor 01h para o registrador ah MOV CX 07h move o valor 07h para o registrador cx INT 10h interrup o 10h MOV AHACh move o valor 4ch para o registrador ah INT 21h interrupc o 21h END finaliza o c digo do programa gt Segundo passo Salvar o arquivo com o seguinte nome exemplol asm necess rio a extens o ec a asm N o esquecer de salv lo no formato ASCII caso exista essa op o no editor de texto utilizado gt Terceiro passo Usar o programa TASM para construir o programa objeto digitando no sinal de prompt do DOS o seguinte comando Ci gt tasm exemplol asm Caso n o existam erros na compila o s o exibidas na tela as seguintes mensagens Turbo Assembler Version 2 0 Copyright c 1988 1990 Borland International Assembling file exemplol asm Error messages None Warning messages None Passes 1 Remaining memory 471k C Observa o O TASM s pode criar programas no formato OBJ que ainda n o podem ser executados 49 Laborat rio de Microprocessadores Wilson Ruiz gt Quarto passo Usar o programa TLINK para criar o programa execut vel digitando no sinal de prompt do DOS o seguinte comando CA gt tlink exemplol obj z Onde exemplol obj o nome do programa intermedi rio OBJ O comando acima gera diretamente o arquivo com o nome do programa intermedi rio e a extens o EXE E opcional a coloca o da extens o OBJ
85. m interrupc es do DOS gt Para ser poss vel a execu o de um programa na forma passo a passo conseq entemente a sua an lise N O devemos usar o comando T para executar qualquer interrup o pois estas na verdade s o longos programas e n o simples instru es e assim o fluxo do processamento seria desviado laveria uma mudan a de segmento de mem ria e provavelmente ficar amos perdidos gt poss vel contornar se esse problema tomando se o seguinte cuidado Executar novamente o programa anterior passo a passo usando o comando at o endere o onde a pr xima instru o a ser executada a INT 21 Usar agora o novo comando para executar a interrup o indicada gt Outra op o seria usar o comando como um break pointer at imediatamente ap s a interrup o em quest o 2 32 Impress o de string na tela gt Digitar o programa MOV AH 09 MOV DX 0200 INT 21 INT 20 26 Laborat rio de Microprocessadores Wilson Ruiz gt o comando E entrar a seguinte seq ncia de bytes E0200 47 72 61 6E 64 65 20 50 72 6F 66 2E 20 57 69 6C 73 6F 6E 24 gt Executar o programa integralmente com o comando G gt Esta fun o do INT 21 imprime um string inteiro endere ado DX e finalizado pelo caracter 24h no c digo ASCID 2 33 Entrada da string diretamente gt Digitar a seq ncia de comandos A0150 0
86. mento 0100 gt estamos neste off set dentro do segmento O Debug sempre coloca IP em 0100h ao ser iniciado e tamb m encarrega se escolher os segmentos convenientemente Em todas aplica es no DEBUG trabalharemos sempre dentro de um nico segmento A pr xima instru o a ser executada mostrada em mnem nico e em hexadecimal na ltima linha 2 7 Verificar e alterar o conte do de um registrador qualquer gt Digitar os comandos R AX AX 0000 Digite um novo valor para AX gt Verifique se o dado foi armazenado digitando o comando R gt O comando seguido do nome do registrador indica que queremos ver o seu conte do e depois altera lo Este comando s permite a altera es de 16 bits n o sendo poss vel portanto uma mudan a de somente a parte alta ou baixa do respectivo registrador gt Testar o comando em outros registradores de uso geral Verificar as altera es Sair do Debug Entrar novamente no Debug Verificar o conte do dos registradores alterados anteriormente 2 8 Examinar o conte do de uma posi o de mem ria gt Digitar os comandos E 100 E 101 E 102 11 Laborat rio de Microprocessadores Wilson Ruiz gt O comando E mostra o conte do de um endere o especificado 2 9 Alterar o conte do de uma ou v rias posic es de mem ria gt O comando E permite al m de examinar alterar o conte do de um endere o na mem ria bastando para isso digitar os
87. na porta cujo endere o fornecido e o carrega em AL endere o de 8 bits N DX DX L o byte presente na porta cujo endere o especificado em DX e o carrega em AL endere o de 16 bits N AX porta AX porta entrada de dados L o byte presente na porta cujo endere o fornecido e o carrega em AX endere o de 8 bits N AX DX AX DX L o byte presente na porta cujo endereco especificado em DX e o carrega em AX endere o de 16 bits 107 Laborat rio de Microprocessadores Wilson Ruiz INSTRU ES PARA COMPARA ES ENTRE REGISTRADORES DE 8 BITS MP TES V SUUS da compara o de AL com AF CMPBLCL aos status da compara o de BL com Demais combina es entre registradores de 8 bits H e s o v lidas INSTRU ES PARA COMPARA ES ENTRE REGISTRADORES E DADOS DE 8 BITS Mnem nico Descri o da instru o MP AL byte ags status da compara o de AL com byte MP BL byte ags status da compara o de BL com byte E P sois 1 TAR PARA POS ENTRE REGISTRADORES DE 16 BITS ags status da compara o de AX com B status da compara o de BX com DX INSTRU ES PARA COMPARA ES ENTRE REGISTRADORES E DADOS DE 16 BITS Mnem nico Descri o da instru o MP AX word ags status da compara o de AX com word MP Word ags status da compara o de BX com word D Demais registradores de 16 bits X s o v lidos INSTRU ES PARA DESVIO INCO
88. ndex Usados em instru es de string Podem ser usados para indexar acessos a mem ria Laborat rio de Microprocessadores Wilson Ruiz Registrador de Flags Consiste em um registrador de bits de controle flag que pode ter seus testados individualmente no programa por instru es condicionais Possui 16 bits dos quais apenas 9 tem fun o para o usu rio OF Overflow Flag Setada quando ocorre overflow artm tico DF Direction Hag Setada para auto incremento em instru es de string IF Interruption Flag Permite que ocorram interrup es quando setada Pode ser setada pelo sistema ou pelo usu rio TF Trap Flag debug Usada por debugadores para executar programas passo a passo SF Signal Flag Resetada SF 0 quando um resultado for um n mero positivo ou zero e setada SF 1 quando um resultado for negativo ZF Zero Flag Setada quando um resultado for igual zero AF Auxiliar Flag Setada quando h overflow entre o nibble menos significativo e o mais significativo de um byte PF Parity Flag Setada quando o n mero de bits 1 de um resultado for par paridade par CF Carry Flag Setada se overflow no bit mais significativo do resultado Mem ria Segmentada A mem ria dividida em um n mero arbitr rio de segmentos O tamanho dos segmentos varia de 16 bytes a 64Kbytes Cada segmento se inicia em um endere o sempre m ltiplo de 16 O endere o de segmento composto p
89. nformation Interchange original constitu do por 128 caracteres com c digos decimais de O a 127 de 00h a 7Fh tornando se um c digo universal usado em diferentes fam lias de computadores por m o conjunto apresentado na tabela tem o dobro de c digos incluindo se ali os c digos de 128 at 255 de 80h FFh sequ ncia de c digos padronizada apenas para a fam lia PC m s eventualmente adotada de forma parcial para equipamentos de outras fam lias Em geral os c digos que comp em a metade adicional da tabela s o chamados caracteres ASCII estendidos usados como caracteres de controle e n o reproduzidos na tabela anterior 2 26 Envio de caracter para o monitor de v deo gt Digitar o programa abaixo e executar a seq ncia de comandos A 0100 MOV AH 02 MOV DL 2A INT 21 INT 20 U 0100 R G gt Analisar o resultado 2 27 Exerc cio Imprimir outras letras gt Consultando a tabela ASCII fornecida testar o programa anterior com outros c digos imprimindo outros caracteres 2 28 Nomear um programa para futura grava o em disco gt Para dar nome ao programa digitar o comando Nletra com se desejado usar outro nome seguido de COM 24 Laborat rio de Microprocessadores Wilson Ruiz gt Agora o programa anterior possui o nome digitado com no m ximo 8 caracteres no padr o DOS e extens o com 2 29 Salvar o programa em disco gt Para gravar o programa arquivo execut vel n
90. nto oe seo oe ae e gt Subrotina PUBLIC VEL 1 VEL 1 VEL 1 push push push push mov mov lea int push mov mov mov mov int pop pop pop pop pop ret VEL 1 Atualiza o byte de velocidade para a velocidade numero 1 Escreve a mensagem correspondente PROC ax dx bx cx BYTE VEL 0FFH ah 09H dx MENS VI 21H bp ah 09H al 16H bl 83H cx 0003H 10H bp cx bx dx ax ENDP necess rio pelo caractere colorido necess rio pelo caractere colorido atualiza byte de velocidade mensagem cria caractere colorido no final da mensagem define atributo cor azul claro piscando finaliza o procedimento gt Subrotina PUBLIC VEL_2 VEL_2 push push push push mov mov lea int push mov VEL_2 Atualiza o byte de velocidade para a velocidade numero 2 Escreve a mensagem correspondente CAs dd
91. o programa anterior bloco principal introduzindo um contador decrescente de opera es que terminar este programa quando seu conte do for igual a zero cuidado com o valor inicial desse contador para n o perder um longo tempo aguardando o t rmino do programa gt Nomear e gravar este programa 37 Laborat rio de Microprocessadores Wilson Ruiz 2 57 Exemplo de um programa de controle com temporizac o gt Digitar executar e analisar o funcionamento do programa 0100 0200 2 58 Projeto 1 gt gt definida gt gt gt MOV DX 0378 MOV BL OF MOV AX 00FF OUT DX AL CALL 0200 MOV AX 0000 OUT DX AL CALL 0200 DEC BL JNZ 0105 INT 20 PUSH CX PUSH DX MOV CX OFFF MOV DX FFFF DEC DX JNZ 0208 DEC CX JNZ 0205 POP DX POP CX RET valor inicial do contador ajustado para 15 piscadas decrementa contador se contador maior que zero continua continua na pr xima p gina se necess rio ajustar o delay para o clock do microcomputador do laborat rio trocando os valores carregados nos registradores SCXeDX Escrever um programa que possibilite escolher uma dentre tr s seq ncias de acendimento diferentes para os LED s da placa Cada segii ncia deve ser escolhida atrav s de uma tecla diferente previamente Esta sequ ncia deve ser executada durante um tempo determinado Incluir uma quarta tecla para o caso de sa da do programa tecla de escape DICAS PARA
92. ograma deve possuir uma tecla de escape e ou um contador de revolu es gt Salvar o programa gt Apresentar o resultado para o Professor da disciplina 2 67 Projeto 7 gt Uma outra forma de controlarmos um motor de passo a sua utiliza o no modo chamado meio passo que possui uma maior precis o de movimento por m um menor torque e uma menor velocidade m xima gt Esse modo de opera o conseguido atrav s da seguinte tabela gt Modificar um dos programas dos projetos anteriores para que o motor trabalhe no modo meio passo gt Salvar o programa gt Apresentar o resultado para o Professor da disciplina 44 Laborat rio de Microprocessadores Wilson Ruiz CAP TULO 3 PR TICA COM O TASM 3 1 O Turbo Assembler Introdu o Para que possamos criar um programa neste novo ambiente precisamos usar algumas novas ferramentas Primeira Um editor de texto para criar o programa fonte Segunda Um montador isto um programa que ir transformar o fonte em um programa objeto Terceira Um linker ligador que ir gerar o programa execut vel a partir do programa objeto O editor pode ser qualquer um dispon vel vamos usar o NE Norton Editor escolhido pela sua simplicidade e caracter stica de grava o do texto sempre em caracteres ASCID O montador ser o TASM Turbo Assembler da Borland O linker ser o TLINK tamb m da Borland Devemos criar os programas
93. olador de DMA Nestes casos o endere o presente no barramento diz respeito a uma posi o de mem ria e n o a um dispositivo de I O e o dispositivo de I O selecionado n o por endere o mas sim pelo sinal DACK IO Write sa da Este um sinal semelhante ao anterior exceto por servir para escritas em um dispositivo de I O O dispositivo endere ado deve capturar fazer um latch o barramento de dados com o flanco ascendente T desse sinal A mesma afirma o v lida para os ciclos de DMA AEN Address Enable sa da gerado pela l gica de controle de DMA e serve para indicar que se est executando um ciclo de DMA De forma mais precisa desabilita o barramento que estava de posse da CPU para coloc lo disposi o do controlador de DMA Para os dispositivos de I O conectados ao barramento de expans o este sinal deve ser usado para desabilitar os decodificadores Isto impede que um I O responda erroneamente ao endere o de DMA pois diz respeito mem ria j que vai estar pres ente um IOR ou IOW 5 VDC Regulagem de 5 est presente em dois pinos Alimenta os circuitos l gicos 12 VDC Regulado para 5 Alimenta motor dos acionadores de disco e tamb m a porta serial 5 VDC Regulado para 10 Alimentava mem ras antigas que tamb m precisavam de 5V para operarem 12 VDC Regulado para 10 Alimenta porta serial GND Refer ncia de terra presente em 3 pinos
94. on Ruiz data 11 2000 Descri o Bra o mec nico com 4 motores e um solen ide controlado por PC via placa de interface conectada em slot padr o ISA Opera o A cada uma das teclas abaixo atribui se as respectivas fun es tecla Comando letras min sculas Inicia modo manual de controle Movimenta MO no sentido hor rio ou para MO Movimenta MO no sentido anti hor rio ou para MO Movimenta 1 no sentido hor rio ou para MI Movimenta 1 no sentido anti hor rio ou para MI Movimenta M2 no sentido hor rio ou para M2 Movimenta M2 no sentido anti hor rio ou para M2 Justum Movimenta M3 no sentido hor rio ou para M3 Movimenta M3 no sentido anti hor rio ou para Abre fecha garra Desliga todos os motores e abre a garra bue Informa as teclas de comandos momoo E Motor 0 MO base A0 PA0 A0 I Z sss Sai do programa Tus Seleciona a velocidade 1 mais lenta 2 Seleciona a velocidade 2 idees Seleciona a velocidade 3 Seas essent Seleciona a velocidade 4 mais r pida liga o dos motores Bobina Bits da 8255 BO PA2 d BO PA3 Motor 1 ombro Al PA4 AT ise PAS Blz PA6 Motor 2 M2 cotovelo Motor 3 punho gt gt gt gt LIGACAO DOS SENSORES nome func o bits da 8255 S0 MO sensor de fim de curso p zero PCO S1 MO
95. or duas words 16 bits cada anota o usada para representar um endere o Segmento off set Laborat rio de Microprocessadores Wilson Ruiz Exemplo Endere o l gico 015Bh 0009h CS 015Bh e IP 0009h 015Bh endere o de segmento 0009h endere o de off set Endere o f sico 015B0h 0009h 015B9h Pilha Operacional Usada para o armazenamento tempor rio de dados Serve para a passagem de par metros E usada do endere o maior para o endere o menor S o enviados para a pilha e retirados desta apenas words 16 bits Controle quanto a overflow da pilha responsabilidade do programador 1 3 Cria o de programas Para a cria o de grandes programas s o necess rios os seguintes passos Desenvolvimento do algoritmo Est gio em que o problema estabelecido e uma solu o escolhida possbilitando assim a cria o dos respectivos fluxogramas Codifica o do algoritmo Consiste em escrever o programa em alguma linguagem de programa o linguagem assembly neste caso espec fico tomando como base a solu o adotada no passo anterior constituindo se o programa fonte Transforma o para a linguagem de m quina compila o Cria o do programa objeto a partir do programa fonte escrito como uma sequ ncia de zeros e uns que podem ser interpretados pelo microprocessador Esta etapa realizada integralmente pelo compilador Elimina o de erros detecta
96. ormente e O exemplo de projeto de interface fornecido poder ser usado integralmente ou adaptado para as necessidades do grupo e Outros circuitos envolvendo I O s program veis ou n o CPs TTL e ou CMOS tamb m ser o aceitos e Para projetos que envolvam sistemas de pot ncia elevada ou acionamento eletromec nico obrigat rio o uso de foto acopladores ligados como no esquema exemplo fornecido e S o aceitos projetos com temas semelhantes por m totalmente proibidos projetos iguais exceto na topologia usada para a interface Produto final esperado e O grupo deve apresentar a placa de interface na forma de um prot tipo constitu do por uma PCI com pente ISA necess ria para a conex o ao microcomputador ligada atrav s de uma cabo a outra tipo padr o e ou montagem em wire wrap e ou proto board e O sistema controlado e Um manual do projeto contendo Diagrama de blocos completo Esquema eletr nico completo que dever incluir a interface apenas quando o projeto exemplo for alterado Explica o detalhada do funcionamento Listagem do software de controle em Assembly comentada 76 Laborat rio de Microprocessadores Wilson Ruiz Avaliac o e As apresenta es dever o ser feitas exclusivamente nas datas marcadas e na ordem definida anteriormente por sorteio atrav s do n mero do grupo e A NOTA INDIVIDUAL ser composta por fatores correspondentes Efetiva parti
97. os de off set Mem ria RAM origem Mem ria RAM destino endere o dado endere o dado 0150h gt 0200h 0151h gt 0201h 0152h gt 0202h 017Ah gt OBS1 Em todos os enunciados nos exerc cios seguintes fica subentendido a seguinte frase Escrever um programa em linguagem Assembly dos microprocessadores OBS2 Por raz es did ticas sempre que poss vel tomar como exemplo um programa j resolvido em um exerc cio anterior 2 Idem ao anterior 1 somando o byte 05h em cada conte do copiado 3 Idem ao n mero 1 por m pulando se 4 quatro endere os destino a cada c pia 0150h gt 0200h 0151h gt 0204h 4 Idem ao n mero 1 realizando uma c pia inversa invertendo os endere os da regi o de mem ria destino 78 Laborat rio de Microprocessadores Wilson Ruiz 0150h gt 022Ah 0151h gt 0229h 5 Idem ao n mero 1 subtraindo cada conte do antes de ser copiado do byte OEh 6 Idem ao n mero 1 pulando se 3 tr s endere os da mem ria origem a cada conte do lido e mantendo se o mesmo n mero total de bytes copiados 0150h gt 0200h 0153h gt 0201h 7 Carregar escrever o byte 00h na seguinte regi o de mem ria RAM de 0250h 02BFh 0250h 00h 0251h 00h 02BFh 00h 8 Escrever 00h 01h 02h 03h na seguinte regi o de mem ria RAM de 0200h 02F9h 0200h 00h 0201h
98. ossibilidades desse comando 2 16 Preenchimento de regi es de mem ria rapidamente gt Digitar o comando F 0150 016F 22 gt Com o comando D verificar o conte do da mem ria do endere o 0150h ao endere o 016Fh gt O comando F preenche o trecho de mem ria determinado com o byte fornecido no exemplo 22h gt Digitar o comando F 0170 018 00 11 22 33 44 gt Com o comando D verificar o conte do da mem ria do endere o 0170h ao endere o 018Fh gt Este comando preenche a regi o de mem ria especificada com a seq ncia de bytes fomecida no exemplo 00h 11h 22h 33h 44h 2 17 Copiar um bloco cont nuo de mem ria gt Usando o comando A 0100 digite o seguinte fragmento de programa 0100 MOV AL 00 MOV AH 01 MOV DL 06 MOV DH 07 gt Supondo que por um erro voc esqueceu de digitar entre a 2 e 3 instru es estas outras MOV BL 02 MOV BH 03 MOV CL 04 MOV CH 05 15 Laborat rio de Microprocessadores Wilson Ruiz gt Como o grupo de instru es a ser inserido tem um total de 8 bytes copiar as duas ltimas instru es do programa digitado para uma regi o 8 bytes abaixo digitando o seguinte comando M 0104 0107 010C gt Verificar com o comando U gt Copia os dados da faixa de endere os de 0104h a 0107h para a partir do endere o 010Ch gt Com o comando A 0104 digitar as instru es anteriormente esquecidas gt Verifi
99. r analisar o resultado mostrado na listagem dos registradores ap s cada instru o 2 14 Listagem do programa digitado gt Digitar o comando U 0100 gt Identificar na tela apresentada o programa anteriormente digitado gt O comando U permite verificar a listagem do programa na mem ria a partir do endere o de IP p apenas U ou a partir de um endere o especificado U 0100 por exemplo z gt Para sucessivos comandos U o conte do da mem ria mostrado seq encialmente 2 15 Examinar o conte do de uma regi o de mem ria gt Digitar o comando D gt Verificar que o conte do num rico de 128 posi es consecutivas de mem ria apresentado na tela em linhas de 16 bytes cada com uma faixa de endere os escolhida dentro do segmento a partir do valor atual de A direita da listagem temos os caracteres ASCII correspondentes quando um ponto apresentado este indica que o caractere realmente um ponto ou um caractere de controle gt Para sucessivos comandos D a mem ria pode ser rapidamente vasculhada gt Para verificar o conte do de uma regi o n o iniciada no valor atual de IP por exemplo 0200h digitar amos D 0200 gt Para verificar o conte do de apenas uma pequena regi o de mem ria por exemplo de 0150h a 0158h digitar amos 14 Laborat rio de Microprocessadores Wilson Ruiz D 0150 0158 gt Testar as p
100. ra a tela tela caractere da porta serial COMI Receber Enviar COMI Enviar caractere para a impressora LPT1 caractere Receber caractere do teclado sem envia lo para a tela Receber 01h 02h 03h 04h 05h 06h 07h 8h 0 Receber caractere do teclado sem envia lo para a tela Enviar caractere para a AH AH 01h AL c digo do caractere 02h DL c digo ASCII do caractere AH 03h AL c digo do caractere caractere AH 04h DL c digo ASCII do caractere AL c digo caractere do caractere AH 06h DL FFh Para caracter AH 06h DL c digo ASCII do caractere 00h FEh AH 07h AL c digo do caractere AL c digo do caractere aguarda recebimento do caractere Somente retorna caractere se ele estiver pronto buffer de teclado N o reconhece CTRL C Aguarda o recebimento de um caractere N o reconhece CTRL C Reconhece a combina o das teclas CRTL C Laborat rio de Microprocessadores Wilson Ruiz Enviar string para a tela AH 09h DS DX aponta p uma string com 24h no final Receber string do teclado AH 0Ah Buffer ge Espera DS DX buffer p com string usu rio armazenamento dod de string usu rio Composi o do buffer Byte O indica o n mero m ximo Fornece ao de bytes poss vel usu rio na entrada de todos os dados comando Byte 1 ser comuns do atualizado pelo DOS para a DOS com o edi o de n mero
101. rna o valor inicial para o registrador DL RET Retorna o controle ao procedimento que chamou WRITE HEX DIGIT ENDP PUBLIC WRITE CHAR WRITE CHAR PROC PUSH AX Envia para pilha o valor do registrador AX MOV AH 2h Fung o 2h INT 2lh Interrup o 21h POP AX Retorna da pilha o valor inicial do registrador AX RET Retorna o controle ao procedimento que chamou 56 Laborat rio de Microprocessadores Wilson Ruiz WRITE CHAR ENDP END TEST WRITE DECIMAL finaliza o programa gt Este programa mostra na tela os n meros 12345 MODEL SMALL STACK CODE PRINT 5 PROC MOV DL 00h move o valor 00h para o registrador DL MOV CX 255 move o valor decimal 255 para o registrador CX usado para fazer um la o com 255 nterac es PRINT LOOP CALL WRITE CHAR Chama o procedimento que imprime INC DL Incrementa o valor do registrador DL LOOP PRINT LOOP Loop para imprimir 10 caracteres MOV AH 4Ch Fung o 4Ch INT 21h Interrup o 21h PRINT ASCII ENDP Finaliza o procedimento WRITE CHAR PROC MOV AH 2h Func o 2h para imprimir um caractere INT 21h Imprime o caractere que est em DL RET Retorna o controle ao procedimento que chamou WRITE CHAR ENDP Finaliza o procedimento END PRINT ASCII Finaliza o programa gt Este programa mostra na tela o valor dos 256 caracteres do c digo ASCII 57 Laborat rio de Microprocessadores Wilson Ruiz gt F ole ole ole ole le ole ole sk ee
102. sa disciplina 7 Apresentar o resultado para o Professor da disciplina 2 59 Projeto 2 gt Alterar o programa anterior incluindo a apresenta o de mensagens na tela durante a sua execu o gt Apresentar o resultado para o Professor da disciplina 2 60 Projeto 3 gt Escrever um programa para temporizar um evento a cada 15 segundos piscar de um LED na porta paralela ou caractere enviado para a tela gt Nesta primeira solu o usar sub rotina de delay ajustada experimentalmente e ou calculada levando se em conta o n mero de ciclos de 39 Laborat rio de Microprocessadores Wilson Ruiz m quina de cada instru o a quantidade de loops executados nesta e o tempo de execu o do programa principal gt Apresentar o resultado para o Professor da disciplina 2 61 Projeto 4 gt Repetir o projeto anterior por m tendo como solu o a leitura do rel gio interno do microcomputador gt Como sugest o fornecido o seguinte algoritmo simplificado 1 Ler rel gio segundos Somar OFh ao valor dos segundos Se soma gt 2Ch 2Ch 44 59 15 44 subtrair 3Ch 60 criando o valor refer ncia 4 Ler rel gio 5 Comparar valor lido com o valor refer ncia 6 Se menor v para 4 7 Ler rel gio 8 9 1 aY Piscar LED Testar tecla de sa da gt Apresentar o resultado para o Professor da disciplina 2 62 Exemplo de controle de um motor de passo gt A f
103. son Ruiz LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDLLLLLLDLLLLLLLLLLLLL gt subrotina MENSAGENS Escreve mensagem correspondente ao n mero de vezes que a tecla a pressionada ole FOR ole E R eee ole ole ole ole ole ole ole ole K E K e E eee KE K K ole ole ole ole K ole K KK KKK K K PUBLIC MENSAGENS MENSAGENS PROC push ax push dx cmp CONTADOR 00h jz 140 mov 09h lea MENS 1 carregar o endere o externo int 21h EA endereco inicial da mensagem para o registrador inc CONTADOR pop dx pop ax ret L10 cmp CONTADOR Olh jaz 11 mov ah 09h lea dx MENS 2 carregar o endere o externo int 21h EA endere o inicial da mensagem para o registrador inc CONTADOR pop dx pop ax ret 111 cmp CONTADOR 02h jaz 142 mov 00h lea MENS 3 carregar o endere o externo int 21h EA enderego inicial da mensagem o registrador inc CONTADOR call ESCREVE FINAL mov ah 4ch int 21h L12 pop dx pop ax ret MENSAGENS ENDP END 60 Laborat rio de Microprocessadores Wilson Ruiz 3 6 Projetos com TASM Escrever novamente alguns dos programas referentes aos projetos realizados anteriormente no DEBUG listados a seguir agora utilizando o TASM como ambiente de programa o Para conseguir enviar mensagens na tela nos projetos propostos estudar o exemplo 8 anterior e outro fornecido no cap tulo 5 programa ANA14 ASM um projeto completo que trabalha com d
104. ssembly Para o compilador indiferente o uso de letras mai sculas ou min sculas na escrita das instru es muito importante manter uma boa est tica durante a digita o do programa fonte pois assim ficar mais f cil o seu futuro estudo e ou a procura de eventuais erros Normalmente emprega se um tab entre o primeiro e o segundo token s mbolo de cada instru o e digita se o texto com as instru es alinhadas linha linha a uma certa dist ncia do lado esquerdo da tela o que facilita a coloca o dos labels para os desvios O TASM possibilita a manipula o de valores num ricos das formas mostradas nos exemplos seguintes MOV AL 55 o valor 55 est em decimal MOV AL 55h valor 55h est em hexadecimal MOV AL 5Fh o valor 5F est em hexadecimal a aus ncia do h no token leva a um erro de compila o MOV AL OF5h o valor F5h est em hexadecimal m s s reconhecido um valor num rico se iniciar se 5 com um caractere num rico aus ncia do 0 no token leva a um erro de compila o MOV AL O o token refere se ao c digo ASCII do caractere isto 40h vide tabela 48 Laborat rio de Microprocessadores Wilson Ruiz exemplol asm MODEL SMALL modelo de mem ria escolhido STACK espa o de mem ria para instru es do programa na pilha CODE as linhas seguintes s o instru es do programa MOV AH 0
105. tor selecionado dd dd PUBLIC MOVE M2 H PROC ax dx ESCREVE M2 H dx PB ah MIRROR M2 ah 1 MIRROR M2 ah ah OFH al dx al OFOH al ah dx al PAUSA 1 ah OBH 21H al OFFH M5 ah 07H 21H al 67H M5 ESCREVE M2 STOP dx ax ENDP mensagem byte espelho desloca atualiza byte espelho a porta B mascara move M2 de um passo pausa buffer do teclado verifica se existe tecla se n o existe tecla continua movimento l teclado compara com a tecla G min scula se diferente continua movimento mensagem finaliza o procedimento gt Subrotina gt MOVE_M2_AH push push call MOVE M2 AH L o byte espelho de movimento do motor 2 MIRROR M2 Move o motor 2 no sentido anti hor rio Atualiza MIRROR M2 Continua o movimento do motor ate que a tecla correspondente seja acionada pela segunda vez Aciona a escrita das mensagens correspondentes ao status do motor selecionado ooo oe do dede doe oo o da PUBLIC MOVE M2 AH PROC ax dx ESCREVE M2 AH mensagem 86 Laborat rio de Microprocessadores M6 mov mov ror mov and in and or out call mov int jnz mov int jnz call pop pop ret MOVE M2 AH dx PB ah MIRROR M2 ah 1 MIRROR M2 ah ah OFH al dx al OFOH al ah dx al PAUSA 1 ah OBH 21H al OFFH M6 ah 07H 21H al 68H M6 ESCREVE M2 STOP dx ax ENDP
106. trolar um motor de passo nem o mais elegante ou eficiente por m tem como vantagem uma estrutura bastante did tica 2 63 Exerc cio gt Executar o programa anterior alterando a velocidade e o sentido de rota o gt Testar a velocidade limite do motor usado 2 64 Exerc cio gt Modifique o programa anterior para utilizar as instru es de rota o de bytes consultar a tabela de instru es para obter um programa menor e mais bem elaborado gt Salvar o programa 2 65 Projeto 5 gt Escrever um programa que possibilite comandar atrav s do teclado o sentido de rota o do motor e a sua velocidade al m de enviar mensagens correspondentes para a tela gt Este programa deve possuir uma tecla de escape e ou um contador de revolu es gt Salvar o programa gt Apresentar o resultado para o Professor da disciplina 43 Laborat rio de Microprocessadores Wilson Ruiz 2 66 Projeto 6 gt Escrever um programa que fa a a bitura das chaves de fim de curso do kit de motor de passo utilizado no laborat rio e execute movimentos com as seguintes caracter sticas Inicie o movimento em um determinado sentido na m xima velocidade Ao se aproximar da chave de fim de curso diminua de velocidade Ao acionar a chave de fim de curso inverta o sentido de rota o agora com m xima velocidade 4 Repita o item 2 para esse sentido de movimento 5 Entre em loop ppp rs gt Este pr
107. uivale a 258h gt O intervalo de tempo entre cada passo controla a velocidade maior velocidade equivale a um menor intervalo de tempo sendo portanto necess ria a execu o de uma sub rotina de pausa entre cada um dos passos O valor dessa pausa depende das 41 Laborat rio de Microprocessadores Wilson Ruiz caracter sticas de velocidade do microcomputador onde o programa est sendo executado e tem um limite inferior que equivale a m xima velocidade do motor para este tipo de drive utilizado sendo que ap s esse valor o motor come a a perder passos e assim tem o seu torque drasticamente diminu do precis o comprometida e at em um caso extremo o sentido de rota o invertido gt Conectar o motor ou a placa de LED s no microcomputador gt Digitar o programa exemplo 0100 0150 MOV DX 0378 MOV CX 0258 MOV AL EE OUT DX AL CALL 0150 DEC CX JZ 012C MOV AL DD OUT DX AL CALL 0150 DEC CX JZ 012C MOV AL BB OUT DX AL CALL 0150 DEC CX JZ 012C MOV AL 77 OUT DX AL CALL 0150 DEC CX JZ 012C JMP 0106 INT 20 PUSH CX PUSH DX MOV CX 04FF MOV DX 04FF DEC DX JNZ 0158 Ajustar para a velocidade do microcomputador utilizado continua 42 Laborat rio de Microprocessadores Wilson Ruiz DEC CX JNZ 0155 POP DX POP CX RET gt Executar e analisar o funcionamento do programa anterior gt Salvar o programa gt Este n o o nico formato de um programa para con
108. vimento PUBLIC ESCREVE M3 H ESCREVE M3 PROC push ax push dx push bx necess rio pelo caractere colorido push cx necess rio pelo caractere colorido mov ah 09H lea dx MENS M3 H int 21H mensagem push bp cria caractere colorido mov ah 09H no final da mensagem mov al 16H mov bl 55H define atributo cor rosa mov cx 0009H int 10H pop bp pop cx pop bx pop dx pop ax ret ESCREVE M3 H ENDP gt Subrotina ESCREVE M3 AH Y Escreve a mensagem correspondente ao motor em movimento PUBLIC ESCREVE M3 AH ESCREVE M3 AH PROC push ax push dx push bx necess rio pelo caractere colorido push cx necess rio pelo caractere colorido mov ah 09H lea dx MENS M3 AH int 21H mensagem push bp cria caractere colorido mov ah 09H no final da mensagem mov al 16H mov bl 55H define atributo cor rosa mov cx 0009H int 10H pop bp pop cx pop bx pop dx pop ax ret ESCREVE M3 AH ENDP gt Subrotina ESCREVE MO STOP Escreve a mensagem correspondente ao motor parado PUBLIC ESCREVE_M0_STOP ESCREVE MO STOP PROC 94 Laborat rio de Microprocessadores push ax push dx push bx push cx mov ah 09H lea dx MENS STOPED int 21H push bp mov ah 09H mov al 16H mov bl 44H mov cx 0002H int 10H pop bp pop cx pop bx pop dx pop ax ret ESCREVE MO STOP ENDP Wilson Ruiz necess rio pelo caractere colorido necess rio pelo caractere colorido m
109. vimento call ESCREVE MO STOP mensagem pop dx pop ax ret MOVE MO AH ENDP finaliza o procedimento gt Subrotina gt gt MOVE MI H L o byte espelho de movimento do motor 1 MIRROR MI Move o motor 1 no sentido hor rio Atualiza MIRROR MI Continua o movimento do motor ate que a tecla correspondente seja acionada pela segunda vez Aciona a escrita das mensagens correspondentes ao status do motor selecionado jS ode oe oe ok oe oe oe oe oe oe oe o ae tente eae eae eae oe tete tek pete tete pee pete olle kkk PUBLIC MOVE MI MOVE MI H PROC push ax push dx call ESCREVE MI H mensagem M3 mov dx PA mov ah MIRROR MI byte espelho rol ah 1 desloca mov MIRROR MI ah atualiza byte espelho and ah 0 FOH in al dx l a porta A and al OFH or al ah mascara out dx al move de um passo call PAUSA 1 pausa mov ah OBH int 21H buffer do teclado cmp al OFFH verifica se existe tecla jnz M3 se n o existe tecla continua movimento mov ah 07H int 21H teclado cmp al 64H compara com a tecla D min scula jnz M3 se diferente continua movimento call ESCREVE MI STOP mensagem pop dx pop ax ret MOVE MI H ENDP finaliza o procedimento gt Subrotina gt MOVE_MI_AH L o byte espelho de movimento do motor 1 MIRROR Move o motor 1 no sentido anti hor rio Atualiza MIRROR
Download Pdf Manuals
Related Search
Related Contents
Product Manual Giant Manuale Utente Samsung SGH-E330 คู่มือการใช้งาน 移動型X線撮影装置及び保守一式 仕様書 ZUIKO DIGITAL ED 9-18mm F4.0-5.6 取扱説明書 PC-Scheme/Geneva 4.02 log Copyright © All rights reserved.
Failed to retrieve file