Escolar Documentos
Profissional Documentos
Cultura Documentos
Assembly para Iniciantes!
Assembly para Iniciantes!
Conte�do:
1.Introdu��o
2.Conceitos B�sicos
3.Programa��o Assembly
4.Instru��es Assembly
6.Macros e procedimentos
7.Exemplos de programas
8.Bibliografia
CAP�TULO 1: INTRODU��O
Conte�do:
1.2.Apresenta��o
1.2.Apresenta��o:
este tutorial dest�ina-se �quelas pessoas que nunca tiveram contato com a
Linguagem Assembly. O tutorial est�� completamente focado em computadores com
processadores 80x86 da fam�lia Intel, e considerando que a base da linguagem�o
funcionamento dos recursos internos do processador, os exemplos descritos n�o s�o
compat�veis com qualquer outra arquitetura. As informa��es est��o dispostas em
unidades ordenadas para permitir f�cil acesso a cada t�pico, bem como uma melhor
navega��o pelo tutorial.
A segunda raz�o�que voc� pode ter um controle total sobre o PC ao fazer uso
do assembler.
Uma outra raz�o�que programas assembly s�o mais r�pidos, menores e mais
poderosos do que os criados com outras linguagens.
Conte�do:
Sistema Computacional
2.1.1.Processador Central
2.1.2.Mem�ria Principal
esta se��o tem o prop�sito de fazer um breve coment�rio a respeito dos principais
componentes de um sistema computacional, o que ir� permitir ao usu�rio uma melhor
compreens�o dos conceitos propostos no decorrer do tutorial.
Conte�do:
Sistema Computacional
2.1.1.Processador Central
2.1.2.Mem�ria Principal
Sistema Computacional.
2.1.1.Processador Central.
� tamb�m conhecido por CPU ou Unidade Central de Processamento, que por sua
vez�composta pela unidade de controle e unidade de l�gica e aritm�tica. Sua fun��o
consiste na leitura e escrita do conte�do das c�lulas de mem�ria, regular o tr fego
de dados entre as c�lulas de mem�ria e registradores especiais, e decodificar e
executar as instru��es de um programa.
2.1.2.Mem�ria Principal.
Cada uma das c�lulas pode conter um valor num�rico e�capaz de ser
endere�ada, isto �, pode ser identificada de forma singular em rela��o �s outras
c�lulas pelo uso de um n�mero ou endere�o.
Para que o computador possa ser �til para n�s se faz necess�rio que o
processador se comunique com o exterior atrav�s de interfaces que permitem a
entrada e a sa�da de informa��o entre ele e a mem�ria. Atrav�s do uso destas
comunica��es � poss�vel introduzir informa��o a ser processada e mais tarde
visualizar os dados processados.
2.2.CONCEITOS B�SICOS
Conte�do:
2.2.1.Informa��o no computador:
2.2.1.1.Unidades de informa��o
2.2.1.2.Sistemas num�ricos
2.2.1.5.Sistema hexadecimal
2.2.2.m�todos de representa��o de dados num computador.
2.2.2.1.C�digo ASCII
2.2.2.2.m�todo BCD
2.2.1.1.Unidades de informa��o
2.2.1.2.Sistemas num�ricos
O sistema num�rico que n�s usamos diariamente � o decimal, mas este sistema
n�o � conveniente para m�quinas, pois ali as informa��es t�m que ser codificadas de
modo a interpretar os estados da corrente (ligado-desligado); este modo de c�digo
faz com que tenhamos que conhecer o c�lculo posicional que nos permitir� expressar
um n�mero em qualquer base onde precisarmos dele.
Binary: 1 1 0 0 1
43/2=21 e o rest�o�1;
21/2=10 e o rest�o�1;
10/2=5 e o rest�o�0;
5/2=2 e o rest�o�1;
2/2=1 e o rest�o�0;
1/2=0 e o rest�o�1.
2.2.1.5.Sistema hexadecimal
10;1011
0010;1011
A seguir, tomamos cada grupo como um n�mero independente e consideramos o
seu valor decimal:
0010=2;
1011=11
Entretanto, observa-se que n�o podemos representar este n�mero como 211,
isto seria um erro, uma vez que os n�meros em hexa maiores que 9 e menores que 16
s�o representados pelas letras A,B,...,F. Logo, obtemos como resultado:
2.2.2.1.C�digo ASCII
2.2.2.2.m�todo BCD
2.2.2.1.C�digo ASCII
deste modo, cada letra, d�gito ou caracter especial ocupa 1 byte na mem�ria
do computador.
2.2.2.2.m�todo BCD
BCD significa Binary Coded Decimal. Nest�e m�todo grupos de 4 bits s�o
usados para representar cada d�gito decimal de 0 a 9. Com este m�todo podemos
representar 2 d�gitos por byte de informa��o.
Vemos que este m�todo vem a ser muito mais pr�tico para representa��o
num�rica do que o c�digo ASCII. Embora ainda menos pr�tico do que o bin�rio, com o
m�todo BCD podemos representar d�gitos de 0 a 99. Com o bin�rio, vemos que o
alcance � maior, de 0 a 255.
este formato (BCD) � principalmente usado na representa��o de n�meros
grandes, aplica��es comerciais, devido �s suas facilidades de opera��o.
Por exemplo o n�mero decimal 1234000,� representado como 1.234*10^6, observamos que
o expoente ir indicar o n�mero de casas que o ponto decimal deve ser movido para a
direita, a fim de obtermos o n�mero original.
O expoente negativo, por outro lado, indica o n�mero de casas que o ponto
decimal deve se locomover para a esquerda.
2.3.PROGRAMA DEBUG
Conte�do:
2.3.2.Registradores da CPU
2.3.3.Programa debug
2.3.4.est�rutura Assembly
2.3.2.Registradores da CPU.
Voltar ao �ndice Geral
AX Registrador Acumulador
BX Registrador Base
CX Registrador Contador
DX Registrador de Dados
F Registrador de Flag
2.3.3.Programa Debug.
Debug pode apenas criar arquivos com a extens�o .COM, e por causa das
caracter�sticas deste tipo de programa, eles n�o podem exceder os 64 Kb, e tamb�m
devem iniciar no endere�o de mem�ria 0100H dentro do segmento espec�fico. �
importante observar isso, pois deste modo os programas .COM n�o s�o reloc�veis.
C:/>Debug [Enter]
-r[Enter]
0D62:0100 2E CS:
-rbx
BX 0000
add ah bh
Aqui "add"�o comando a ser executado, nest�e caso uma adi��o, e "ah" bem
como "bh" s�o os par�metros. Por exemplo:
mov al, 25
add al,[170]
a 100[enter]
mov ax,0002[enter]
mov bx,0004[enter]
add ax,bx[enter]
nop[enter][enter]
O que o programa faz? Move o valor 0002 para o registrador ax, move o valor
finaliza o programa.
C:\>debug
-a 100
0D62:0108 nop
0D62:0109
-t
Vemos o valor 0002 no registrador AX. Teclamos "t" para executar a segunda
instru��o:
-t
-t
N�o seria pr�tico ter que digitar o programa cada vez que inici�ssemos o
Debug. Ao inv�s disso, podemos armazen�-lo no disco. S� que o mais interessante
nisso�que um simples comando de salvar cria um arquivo com a extens�o .COM, ou
seja, execut�vel - sem precisarmos efetuar os processos de montagem e liga��o,
como veremos posteriormente com o TASM.
0C1B:0108 int 20
0C1B:010A
-h 10a 100
020a 000a
-n test�.com
CX 0000
:000a
-w
-n test�.com
-l
-u 100 109
Conte�do:
3.1.1.Software necess�rio
3.1.2.Programa��o Assembly
3.2.Processo Assembly
3.2.1.Segmentos
3.2.2.Tabela de equival�ncia
3.4.Tipos de instru��es
3.1.1.SOFTWARE NECESS�RIO
O editor pode ser qualquer um que dispusermos. O montador ser o TASM macro
assembler da Borland, e o linker ser o TLINK, tamb�m da Borland. N�s devemos criar
os programas fonte com a extens�o .ASM para que o TASM reconhe�a e o transforme no
programa objeto, um "formato intermedi�rio" do programa, 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 .OBJ, ou da combina��o de v�rios deles, um programa execut�vel, cuja
extens�o � normalmente .EXE, embora possa ser .COM dependendo da forma como for
montado e ligado.
3.1.2.PROGRAMA��O ASSEMBLY
.MODEL SMALL
.CODE
.STACK
END
Vamos programar
Primeiro passo
Primeiro exemplo
; use ; para fazer coment�rios em programas assembly
Segundo passo
Terceiro passo
Exemplo:
C:\>tasm exam1.asm
Passes: 1
O TASM s� pode criar programas no formato .OBJ, que ainda n�o pode ser
executado...
Quarto passo
Exemplo:
C:\>tlink exam1.obj
C:\>
Quinto passo
C:\>exam1[enter]
3.2.Processo Assembly.
3.2.1.Segmentos
3.2.2.Tabela de equival�ncia
3.2.1.SEGMENTOS
desta forma, para que o montador 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. Lembrando um programa no Debug, observe:
O modo usado para indicar ao montador com quais segmentos vamos trabalhar �
fazendo uso das diretivas .CODE, .DATA e .STACK.
3.2.2.TABELAS DE EQUIVAL�NCIA
Cada uma das partes numa linha de c�digo assembly�conhecida como token, por
exemplo:
MOV AX,Var
H� s�mbolos que o montador n�o consegue encontrar, uma vez que podem ser
declara��es externas. Nest�e caso o linker entra em a��o para criar a est�rutura
necess�ria a fim de ligar as diversas poss�veis partes de c�digo, dizendo ao loader
que o segmento e o token em quest�o s�o definidos quando o programa�carregado e
antes de ser executado.
Outro exemplo
Primeiro passo
;exemplo2
.model small
.stack
.code
mov ah,2h ;move o valor 2h para o registrador ah
Segundo passo
Terceiro passo
C:\>tasm exam2.asm
Passes: 1
Quarto passo
C:\>tlink exam2.obj
C:\>
Quinto passo
Executar o programa:
C:\>exam2[enter]
C:\>
este programa imprime o caracter * na tela.
3.4.Tipos de instru��es.
3.4.1.Movimento de dados
3.4.1.MOVIMENTO DE DADOS
� poss�vel mover blocos de dados atrav�s de instru��es movs, que copia uma
cadeia de bytes ou palavras; movsb copia n bytes de um local para outro; e movsw
copia n palavras. A �ltima das duas instru��es toma os valores dos endere�os
definidos por DS:SI como o grupo de dados a mover e ES:DI como a nova localiza��o
dos dados.
PUSH AX
PUSH BX
PUSH CX
POP CX
POP BX
POP AX
OUT DX,AX
IN AX,DX
As instru��es usadas para opera��es alg�bricas s�o: para adi��o add, para
subtra��o sub, para multiplica��o mul e para divis�o div.
Conte�do:
4.1.1.Instru��es de transfer�ncia
4.1.2.Instru��es de carga
4.1.3.Instru��es de pilha
4.1.1.Instru��es de transfer�ncia.
S�o usadas para mover o conte�do dos operadores. Cada instru��o pode ser
usada com diferentes modos de endere�amento.
MOV
INSTRU��O MOV
Sintaxe:
MOV Dest�ino,Fonte
Dest�ino�o lugar para onde o dado ser movido e Fonte�o lugar onde
o dado est� .
Exemplo:
MOV AX,0006h
MOV BX,AX
MOV AX,4C00h
INT 21h
este pequeno programa move o valor 0006h para o registrador AX, ent�o ele
move o conte�do de AX (0006h) para o registrador BX, e finalmente move o valor
4C00h para o registrador AX para terminar a execu��o com a op��o 4C da interrup��o
21h.
Sintaxe:
MOVS
este comando n�o necessita de par�metros uma vez que toma como endere�o
fonte o conte�do do registrador SI e como dest�ino o conte�do de DI. A seguinte
seq��ncia de instru��es ilustra isso:
MOVS
As instru��es MOVSB e MOVSW s�o usadas do mesmo modo que MOVS, a primeira
move um byte e a segunda move uma palavra.
LAHF
LDS
LEA
LES
Sintaxe:
LODS
esta instru��o toma a cadeia encontrada no endere�o especificado por SI, a
carrega para o registrador AL (ou AX) e adiciona ou subtrai, dependendo do estado
de DF, para SI se�uma transfer�ncia de bytes ou de palavras.
LODS
INSTRU��O LAHF
Sintaxe:
LAHF
SF ZF ?? AF ?? PF ?? CF
INSTRU��O LDS
Sintaxe:
LDS dest�ino,fonte
O operador fonte deve ser uma double word na mem�ria. A palavra associada
com o maior endere�o�transferida para DS, em outras palavras isto�tomado como o
endere�o de segmento. A palavra associada com o menor endere�o � o endere�o de
deslocamento e�depositada no registrador indicado como dest�ino.
INSTRU��O LEA
Sintaxe:
LEA dest�ino,fonte
� equivalente a:
LEA SI,VAR1
INSTRU��O LES
Sintaxe:
LES dest�ino,fonte
POP
POPF
PUSH
PUSHF
INSTRU��O POP
Sintaxe:
POP dest�ino
Sintaxe:
POPF
BIT FLAG
0 CF
2 PF
4 AF
6 ZF
7 SF
8 TF
9 IF
10 DF
11 OF
INSTRU��O PUSH
Sintaxe:
PUSH fonte
Sintaxe:
PUSHF
Conte�do:
4.2.1.Instru��es l�gicas
4.2.2.Instru��es aritm�ticas
4.2.1.Instru��es l�gicas
AND
NEG
NOT
OR
Test�
XOR
INSTRU��O AND
Sintaxe:
AND dest�ino,fonte
Com esta instru��o a opera��o l�gica "y" para ambos os operadores � usada
como na tabela:
INSTRU��O NEG
Sintaxe:
NEG dest�ino
NEG AX
Isto far� com o que o valor EDCCH fque armazenado no registrador AX.
INSTRU��O NOT
Sintaxe:
NOT dest�ino
INSTRU��O OR
Sintaxe:
OR dest�ino,fonte
A instru��o OR, faz uma disjun��o l�gica bit a bit dos dois operadores:
INSTRU��O Test�
Sintaxe:
Test� dest�ino,fonte
Realiza uma conjun��o, bit a bit, dos operadores, mas difere da instru��o
AND, uma vez que n�o coloca o resultado no operador de dest�ino. Tem efeito sobre o
registrador de flag.
INSTRU��O XOR
Sintaxe:
XOR dest�ino,fonte
ADC
ADD
DIV
IDIV
MUL
IMUL
SBB
SUB
INSTRU��O ADC
Sintaxe:
ADC dest�ino,fonte
esta instru��o efetua a soma entre dois operandos, mais o valor do flag CF,
existente antes da opera��o. Apenas o operando dest�ino e os flags s�o afetados.
Sintaxe:
ADD dest�ino,fonte
INSTRU��O DIV
Sintaxe:
DIV fonte
INSTRU��O IDIV
Sintaxe:
IDIV fonte
INSTRU��O MUL
Sintaxe:
MUL fonte
esta instru��o realiza uma multiplica��o n�o sinalizada entre o conte�do do
acumulador AL ou AX pelo operando-fonte, devolvendo o resultado no acumulador AX
caso a opera��o tenha envolvido AL com um operando de 8 bits, ou em DX e AX caso a
opera��o tenha envolvido AX e um operando de 16 bits.
INSTRU��O IMUL
Sintaxe:
IMUL fonte
esta instru��o faz o mesmo que a anterior, difere apenas pela inclus�o do
sinal.
INSTRU��O SBB
Sintaxe:
SBB dest�ino,fonte
INSTRU��O SUB
Prop�sito: Subtra��o.
Sintaxe:
SUB dest�ino,fonte
Conte�do:
4.3.1.Instru��es de salto
4.3.3.Instru��es de contagem
4.3.4.Instru��es de compara��o
4.3.5.Instru��es de flag
4.3.1.Instru��es de salto.
JMP
JA (JNBE)
JAE (JNBE)
JB (JNAE)
JBE (JNA)
JE (JZ)
JNE (JNZ)
JG (JNLE)
JGE (JNL)
JL (JNGE)
JLE (JNG)
JC
JNC
JNO
JNP (JPO)
JNS
JO
JP (JPE)
JS
INSTRU��O JMP
Sintaxe:
JMP dest�ino
esta instru��o�usada par adesviar o curso do programa sem tomar em conta as
condi��es atuais dos flags ou dos dados.
INSTRU��O JA (JNBE)
Sintaxe:
JA s�mbolo
Sintaxe:
JAE s�mbolo
INSTRU��O JB (JNAE)
Sintaxe:
JB s�mbolo
Sintaxe:
JBE s�mbolo
Sintaxe:
JE s�mbolo
Sintaxe:
JNE s�mbolo
INSTRU��O JG (JNLE)
Sintaxe:
JG s�mbolo
Sintaxe:
JGE s�mbolo
Sintaxe:
JL s�mbolo
A instru��o salta se est� less than, se est� not larger than ou se est�
equal.
Sintaxe:
JLE s�mbolo
A instru��o salta se est� less than, se est� equal ou se est� not larger.
INSTRU��O JC
Sintaxe:
JC s�mbolo
O salto � feito se CF = 1.
INSTRU��O JNC
Sintaxe:
JNC s�mbolo
O salto � feito se CF = 0.
INSTRU��O JNO
Prop�sito: Salto condicional, e o estado dos flags � tomado.
Sintaxe:
JNO s�mbolo
O salto � feito se OF = 0.
Sintaxe:
JNP s�mbolo
O salto � feito se PF = 0.
INSTRU��O JNS
Sintaxe:
JNP s�mbolo
O salto � feito se SF = 0.
INSTRU��O JO
Sintaxe:
JO s�mbolo
O salto � feito se OF = 1.
INSTRU��O JP (JPE)
Sintaxe:
JP s�mbolo
O salto � feito se PF = 1.
INSTRU��O JS
Sintaxe:
JS s�mbolo
LOOP
LOOPE
LOOPNE
INSTRU��O LOOP
Sintaxe:
LOOP s�mbolo
INSTRU��O LOOPE
Sintaxe:
LOOPE s�mbolo
Sintaxe:
LOOPNE s�mbolo
4.3.3.Instru��es contadoras.
DEC
INC
DEC INSTRUCTION
Sintaxe:
DEC dest�ino
INSTRU��O INC
Sintaxe:
INC dest�ino
4.3.4.Instru��es de compara��o.
CMP
CMPS (CMPSB) (CMPSW)
INSTRU��O CMP
Sintaxe:
CMP dest�ino,fonte
Sintaxe:
CMP dest�ino,fonte
4.3.5.Instru��es de flag.
CLC
CLD
CLI
CMC
STC
STD
STI
INSTRU��O CLC
Sintaxe:
CLC
INSTRU��O CLD
Sintaxe:
CLD
INSTRU��O CLI
Sintaxe:
CLI
INSTRU��O CMC
Sintaxe:
CMC
Sintaxe:
STC
INSTRU��O STD
Sintaxe:
STD
INSTRU��O STI
Sintaxe:
STI
Conte�do:
5.1.Interrup��es
5.1.3.Interrup��es de software
5.2.Gerenciamento de arquivos
Interrup��es internas s�o geradas por certos eventos que ocorrem durante a
execu��o de um programa.
Este tipo de interrup��es s�o gerenciadas, na sua totalidade, pelo hardware
e n�o � poss�vel modific�-las. Um exemplo claro deste tipo de interrup��es�a que
atualiza o contador do clock interno do computador, o hardware chama esta
interrup��o muitas vezes durante um segundo.
N�o nos � permitido gerenciar diretamente esta interrup��o, uma vez que n�o
se pode controlar a hora atualizada por software. Mas podemos usar seus efeitos no
computador para o nosso benef�cio, por exemplo para criar um virtual clock
atualizado continuamente pelo contador interno de clock. Para tanto, precisamos
apenas ler o valor atual do contador e o
5.1.3.Interrup��es de software
Conte�do
5.1.4.1.Interrup��o 21H
Sintaxe:
Int 21H
Esta interrup��o tem muitas fun��es, para acessar cada uma delas �
necess�rio que o n�mero correspondente da fun��o est�eja no registrador AH no
momento da chamada da interrup��o.
Nesta se��o s�o apenas especificadas as tarefas de cada fun��o, para uma
refer�ncia acerca dos conceitos usados, veja Introdu��o ao gerenciamento de
arquivos.
m�todo FCB
Handles
FUN��O 02H
Uso:
Registradores de chamada:
AH = 02H
Registradores de retorno:
Nenhum.
FUN��O 09H
Uso:
Registradores de chamada:
AH = 09H
Registradores de retorno:
Nenhum.
Esta fun��o mostra os caracteres, um por um, a partir do endere�o indicado
nos registradores DS:DX at� encontrar um caracter $, que�interpretado como fim da
cadeia.
FUN��O 40H
Uso:
Registradores de chamada:
AH = 40H
BX = N�mero do handle
Registradores de retorno:
CF = 1 se houve erro
AX = C�digo de erro
Para usar esta fun��o para mostrar a informa��o na tela, fa�a o registrador
BX ser igual a 1, que�o valor default para o v�deo no DOS.
FUN��O 01H
Uso:
Registradores de chamada
AH = 01H
Registradores de retorno:
AL = Caracter lido
Uso:
Registradores de chamada:
AH = 0AH
Registradores de retorno:
Nenhum.
FUN��O 3FH
Uso:
Registradores de chamada:
AH = 3FH
BX = N�mero do handle
Registradores de retorno:
Uso:
Registradores de chamada:
AH = 0FH
Registradores de retorno:
FUN��O 14H
Uso:
Registradores de chamada:
AH = 14H
Registradores de retorno:
FUN��O 15H
Uso:
Registradores de chamada:
AH = 15H
Registradores de retorno:
FUN��O 16H
Uso:
AH = 16H
Registradores de retorno:
FUN��O 21H
Uso:
Registradores de chamada:
AH = 21H
Registradores de retorno:
FUN��O 22H
Uso:
Registradores de chamada:
AH = 22H
Registradores de retorno:
FUN��O 3CH
Uso:
Registradores de chamada:
AH = 3CH
CH = Atributo do arquivo
Registradores de retorno:
Valor Atributos
00H Normal
02H Hidden
04H System
Uso:
Registradores de chamada:
AH = 3DH
AL = modo de acesso
Registradores de retorno:
BITS
7 6 5 4 3 2 1
. . . . 0 0 0 Apenas leitura
. . . . 0 0 1 Apenas escrita
. . . . 0 1 0 Leitura/Escrita
. . . x . . . RESERVADO
FUN��O 3EH
Uso:
Registradores de chamada:
AH = 3EH
Registradores de retorno:
Uso:
5.1.4.2.Interrup��o 10h
Sintaxe:
Int 10H
Esta interrup��o tem v rias fun��es, todas para entrada e sa�da de v�deo.
Fun��o 02h
Uso:
Registradores de chamada:
AH = 02H
DH = linha
DL = coluna
Registradores de retorno:
Nenhum.
Fun��o 09h
Uso:
Registradores de chamada:
AH = 09H
AL = Caracter a exibir
BL = Atributo do caracter
CX = N�mero de repeti��es.
Registradores de retorno:
Nenhum
Esta fun��o mostra um caracter na tela v rias vezes, de acordo com o n�mero
especificado no registrador CX, mas sem mudar a posi��o do cursor na tela.
Fun��o 0Ah
Uso:
Registradores de chamada:
AH = 0AH
AL = Caracter a exibir
CX = N�mero de repeti��es
Registradores de retorno:
Nenhum.
Uso:
Registradores de chamada:
AH = 0EH
AL = Caracter a exibir
Registradores de retorno:
Nenhum
5.1.4.3.Interrup��o 16H
Registradores de chamada:
AH = 00H
Registradores de retorno:
Quando se usa esta interrup��o, os programas executam at� que uma tecla
seja pressionada. Se�um valor ASCII, � armazenado no registrador AH. Caso
contr�rio, o c�digo � armazenado no registrador AL e AH=0.
Este valor de AL pode ser utilizado quando queremos detectar teclas que n�o
est�o diretamente representadas pelo seu valor ASCII, tais como [ALT][CONTROL].
Fun��o 01h
Uso:
Ler o estado do teclado
Registradores de chamada:
AH = 01H
Registradores de retorno:
5.1.4.4.Interrup��o 17H
Sintaxe:
Int 17H
Fun��o 00H
Uso:
Registradores de chamada:
AH = 00H
AL = Caracter a imprimir
DX = Porta de conex�o
Registradores de retorno:
AH = estado da impressora
1 -
2 -
4 1 Impressora selecionada
5 1 Fim de papel
6 1 Reconhecimento de comunica��o
A maioria dos BIOS suportam 3 portas paralelas, havendo alguns que suportam
4.
Fun��o 01h
Uso:
Registradores de chamada:
AH = 01H
DX = Porta
Registradores de retorno:
AH = Status da impressora
0 1 estado de time-out
1 -
2 -
4 1 Impressora selecionada
5 1 Fim de papel
6 1 Reconhecimento de comunica��o
7 1 A impressora est� pronta para o uso
Fun��o 02h
Uso:
Registradores de chamada:
AH = 01H
DX = Porta
Registradores de retorno
AH = Status da impressora
0 1 estado de time-out
1 -
2 -
4 1 Impressora selecionada
5 1 Fim de papel
6 1 Reconhecimento de comunica��o
Conte�do:
5.2.2.m�todo FCB
5.2.2.1.Introdu��o
5.2.2.2.Abertura de arquivo
5.2.2.3.Criar um novo arquivo
5.2.2.4.Escrita seq�encial
5.2.2.5.Leitura seq�encial
5.2.2.7.Fechar um arquivo
Para uma melhor facilidade, daqui por diante nos referiremos aos Blocos de
Controle de Arquivo como FCBs e aos Canais de Comunica��o como handles.
5.2.2.1.INTRODU��O
Se for usado 0, o drive que est� sendo usado no momento ser tomado como
op��o.
5.2.2.2.ABERTURA DE ARQUIVO
Caso ocorra problema, o valor FFH deve retornar em AL, de outra forma este
registrador conter o valor 0.
5.2.2.4.ESCRITA SEQUENCIAL
5.2.2.5.LEITURA SEQ�ENCIAL
5.2.2.7.FECHAR UM ARQUIVO
5.2.3.Canais de comunica��o.
Quando usamos este m�todo para trabalhar com arquivos, n�o h distin��o
entre acesso seq�encial ou rand�mico, o arquivo�simplesmente tomado como uma rede
de bytes.
Conte�do
6.1.Procedimentos
6.1.1.Defini��o de procedimento
6.1.2.Sintaxe de um procedimento
6.2.Macros
6.2.3.Bibliotecas de Macros
6.1.Procedimentos
6.1.1.Defini��o de um procedimento
6.1.2.Sintaxe de um procedimento
CALL NomedoProcedimento
Declara��o do procedimento
C�digo do procedimento
Diretiva de retorno
T�rmino do procedimento
Por exemplo, se quisermos uma rotina que soma dois bytes armazenados em AH
e AL, e o resultado da soma em BX: Soma Proc Near ; Declara��o do Procedimento Mov
BX, 0 ; Conte�do do Procedimento...
Mov BL, AH
Mov AH, 00
Add BX, AX
Call Soma
6.2.Macros
Declara��o da macro
C�digo da macro
PUSH AX
PUSH BX
PUSH DX
MOV BH, 0
INT 10H
POP DX
POP BX
POP AX
ENDM
Para usar uma macro basta cham -la pelo seu nome, tal como se fosse
qualquer instru��o na linguagem assembly: Pos 8, 6
6.2.3.Biblioteca de Macros
Supondo que o arquivo de macros tenha sido salvo com o nome de MACROS.TXT,
a instru��o Include seria utilizada do seguinte modo:
;In�cio do programa
Include MACROS.TXT
.MODEL SMALL
.DATA
.CODE
Inicio:
.STACK
;A pilha � declarada
End Inicio
;Fim do programa
CAP�TULO 8: BIBLIOGRAFIA
Id�ia Original
Vers�o Inglesa
Vers�o Portuguesa
Programadora Tcl/Tk
Designer Gr fico
J. Terry Godfrey
Mexico
Basic Assembler
A. Rojas
Mexico
Joshua Auerbach
Yale University
Organiza��o Estruturada de Computadores
Andrew S. Tanenbaum
Richard F. Ferraro
McGraw-Hill
Alan R. Miller
Peter Norton
John Socha
Editora Campus
C - Caixa de Ferramentas
Editora �rica
Eurico Soalheiro Br s
McGraw-Hill
Leland L. Beck
Editora Campus
Ross P. Nelson
McGraw-Hill