Você está na página 1de 69

Assembly Language for Intel-Based Computers, 5th Edition

Kip Irvine

Captulo 3: Linguagem Assembly Fundamentos

Slides prepared by the author


Revision date: June 4, 2006
(c) Pearson Education, 2006-2007. All rights reserved. You may modify and copy this slide show for your personal use, or for use in the classroom, as long as this copyright statement, the author's name, and the title are not changed.

Linguagem de Mquina: Codificao de instrues Intel


Formato de instrues IA-32 Instrues de um byte Move imediato para registrador Instrues no modo registrador Prefixos para operandos no processador IA-32 Instrues no modo memria

Web site

Examples

Formato de instruo IA-32


Campos
Byte de prefixo de intruo (tamanho de operando) opcode Byte Mod R/M (modo de endereamento e operandos) Byte scale index (para escalar ndice de vetores) Deslocamento de endereos Dado imediato (constante)

Somente o opcode sempre requerido

Web site

Examples

Formato de instrues Intel IA-32

Web site

Examples

Instrues de um nico byte


Somente o opcode usado Nenhum operando
Exemplo: AAA

Um operando
Exemplo: INC DX

Web site

Examples

Move imediato para registrador


Op code seguido por um valor imediato Exemplo: move imediato para registrador de 16 bits Formato de cdigo: B8+rw dw (B8 = opcode, +rw um nmero de registrador, dw o operando imediato) Nmero de registrador adicionado a B8 para produzir um novo opcode

Web site

Examples

Instrues no modo registrador


O byte Mod R/M contem um nmero de registrador de 3-bits para cada operando registrador
Codificao de bits para nmeros de registradores:

Exemplo: MOV BX, AX opcode = 8B byte ModR/M = D8

Web site

Examples

Prefixo para tamanho de operando do IA-32


Modifica o atributo de segmento default (16-bit ou 32-bit) Valor especial reconhecido pelo processador: 66h A Intel desenvolveu opcodes para os processadores IA-32
Necessitando de compatibilidade com 8086

Em sistemas IA-32, usado um prefixo de um byte quando so usados operandos de 16 bits

Web site

Examples

Prefixo de tamanho de operando IA-32


Exemplo de cdigo para processador de 16-bits:

Codificao para processador de 32-bits:


overrides default operand size

OPCODE DE MOV AX,DX = 100010dw, onde d = 0 ou 1 (reg = fonte ou destino) e w = 0 ou 1 (8 ou 16 bits) Web site Examples

Instrues no modo de memria


Uma variedade de tipos de operandos (modos de endereamento) So possveis 256 combinaes de operandos
Determinadas pelo byte Mod R/M

Codificao Mod R/M:


mod = modo de endereamento reg = nmero de registrador r/m = indica registrador ou memria

Web site

Examples

10

Exemplos de instrues MOV


Formatos selecionados para instrues MOV de 8-bits e 16-bits:

Web site

Examples

11

Exemplos de instrues MOV


Assumir que myWord esteja localizado no deslocamento (offset) 0102h.

Web site

Examples

12

ndice sobre Linguagem Assembly


Elementos bsicos da linguagem Assembly Exemplo: adio e subtrao de inteiros Montagem, Linking, e execuo de programas Definio de dados Constantes simblicas Programao no modo de endereamento real

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

13

High-level language program (in C)

swap(int v[], int k) {int temp; temp = v[k]; v[k] = v[k+1]; v[k+1] = temp; }

Lembrana
Descendo no nvel de abstraes revelam-se outras informaes
Assembly language program (for MIPS)

C compiler

swap: muli $2, $5,4 add $2, $4,$2 lw $15, 0($2) lw $16, 4($2) sw $16, 0($2) sw $15, 4($2) jr $31

Assembler

Binary machine language program (for MIPS)

00000000101000010000000000011000 00000000100011100001100000100001 10001100011000100000000000000000 10001100111100100000000000000100 10101100111100100000000000000000 10101100011000100000000000000100 00000011111000000000000000001000

Web site

Examples

14

Prxima seo
Elementos bsicos da linguagem Assembly Exemplo: adio e subtrao de inteiros Montagem, Linking, e execuo de programas Definio de dados Constantes simblicas Programao no modo de endereamento real

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

15

Elementos bsicos da linguagem Assembly


Constantes de inteiros Expresses de inteiros Constantes de caracteres e cadeias Palavras reservadas e identificadores Diretivas e instrues Rtulos ou Labels Mnemnicos e operandos Comentrios Exemplos

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

16

Constantes de Inteiros
Opo de ser acompanhado pelos sinais + ou Dgitos: binrio, decimal, hexadecimal, ou octal Sufixos comuns:
h hexadecimal d decimal b binrio r real

Exemplos: 30d, 6Ah, 42, 1101b Hexadecimal comeando com letra: 0A5h

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

17

Expresses de Inteiros
Operadores e nveis de precedncia:

Exemplos:

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

18

Constantes de caracteres e cadeias


Cercar caracteres usando apstrofos ou aspas
'A', "x" Caractere ASCII = 1 byte

Cercar cadeias usando apstrofos ou aspas


"ABC" 'xyz' Cada caracter ocupa um byte numa cadeia

Cadeia dentro da outra:


'Say "Goodnight," Gracie'

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

19

Palavras reservadas e identificadores


Palavras reservadas (no podem ser usadas como identificadores)
Mnemnicos de instrues, diretivas, atributos de tipo, operadores, smbolos pr-definidos

Identificadores
1-247 caracteres, incluindo dgitos Insensvel caixa (maiscula e minscula) primeiro caractere deve ser letra, _, @, ?, ou $

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

20

Diretivas
Comandos que so reconhecidos pelo montador No fazem parte do conjunto de instrues do processador Usados para declarar reas de cdigo, reas de dados, selecionar modo de memria, declarar procedimentos, etc. Insensvel caixa Diferentes montadores podem ter diferentes diretivas Por exemplo, NASM no igual a MASM

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

21

Instrues
Montado em cdigo de mquina pelo montador(assembler) Executado em tempo de execuo pelo CPU Nesta disciplina usa-se as instrues do Intel IA-32 Todas as instrues contm:
Label Mnemnico Operandos Comentrio (opcional) (necessrio) (depende da instruo) (opcional)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

22

Labels (rtulos)
Funciona como marcadores de posio
marca o endereo de cdigos e dados

Segue a mesma regra dos identificadores Label para dados


deve ser nico exemplo: myArray
(no tem dois pontos)

Label para cdigos


posio de instrues de jump e loop exemplo: L1: (seguido por dois pontos)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

23

Mnemnicos e Operandos
Mnemnicos de instrues
ajuda a memorizao exemplos: MOV, ADD, SUB, MUL, INC, DEC

Operandos
constante expresso de constantes registrador memria (label de dados)

Constantes e expresses de constantes so tambm chamadas de valores imediatos


Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

24

Comentrios
Comentrios so teis!
explica o propsito do programa quando foi escrito e o autor informao de reviso tcnicas e detalhes de codificao explicao especfica da aplicao

Comentrios numa mesma linha


Inicia-se com ponto e vrgula (;)

Comentrios em mltiplas linhas


comea com a diretiva COMMENT e um caracter escolhido pelo programador termina com o mesmo caracter escolhido pelo programador

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

25

Exemplo de formato de instrues


Sem operandos
stc ; set Carry flag

Um operando
inc eax inc myByte ; register ; memory

Dois operandos
add ebx,ecx sub myByte,25 add eax,36 * 25 ; register, register ; memory, constant ; register, constant-expression

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

26

Prxima seo
Elementos bsicos da linguagem Assembly Exemplo: adio e subtrao de inteiros Montagem, Linking, e execuo de programas Definio de dados Constantes simblicas Programao no modo de endereamento real

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

27

Exemplo: Adio e Subtrao de Inteiros (AddSub.asm)


TITLE Add and Subtract (AddSub.asm)

; Este programa soma e subtrai inteiros de 32-bits. INCLUDE Irvine32.inc .code main PROC mov eax,10000h add eax,40000h sub eax,20000h call DumpRegs exit main ENDP END main

; ; ; ;

EAX = 10000h EAX = 50000h EAX = 30000h display registers

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

28

Exemplo de sada
Sada do programa, mostrando registradores e flags:

EAX=00030000 ESI=00000000 EIP=00401024

EBX=7FFDF000 EDI=00000000 EFL=00000206

ECX=00000101 EBP=0012FFF0 CF=0 SF=0

EDX=FFFFFFFF ESP=0012FFC4 ZF=0 OF=0

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

29

Sugesto de padres de codificao

(1 de 2)

Algumas abordagens para uso de maisculas


no usar maisculas usar s maisculas maisculas para palavras reservadas, incluindo mnemnicos de instrues e nomes de registradores maisculas somente para diretivas e operadores

Outras sugestes
nomes de identificadores descritivos espaos ao redor dos operadores aritmticos linhas em branco entre procedimentos

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

30

Sugesto de padres de codificao


Indentao e espaamento

(2 de 2)

labels de cdigo e dados sem indentao instrues executveis indentar 4-5 espaos comentrios: comear na coluna 40-45, alinhados verticalmente 1-3 espaos entre mnemnico da instruo e operandos
ex: mov ax,bx

1-2 linhas em branco entre procedimentos

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

31

Verso alternativa do AddSub.asm


TITLE Add and Subtract (AddSubAlt.asm) ; este programa soma e subtrai inteiros de 32-bits. .386 .MODEL flat,stdcall .STACK 4096 ExitProcess PROTO, dwExitCode:DWORD DumpRegs PROTO .code main PROC mov eax,10000h add eax,40000h sub eax,20000h call DumpRegs INVOKE ExitProcess,0 main ENDP END main
Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

; EAX = 10000h ; EAX = 50000h ; EAX = 30000h

Web site

Examples

32

Gabarito de programa
TITLE Program Template ; ; ; ; ; Program Description: Author: Creation Date: Revisions: Date: Modified by: (Template.asm)

Instructors: please customize as needed

INCLUDE Irvine32.inc .data ; (insert variables here) .code main PROC ; (insert executable instructions here) exit main ENDP ; (insert additional procedures here) END main

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

33

Prxima seo
Elementos bsicos da linguagem Assembly Exemplo: adio e subtrao de inteiros Montagem, Linking, e execuo de programas Definio de dados Constantes simblicas Programao no modo de endereamento real

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

34

Montagem, linking e execuo de programas


Assemble-Link-Execute Cycle make32.bat Listing File Map File

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

35

Ciclos de Montagem, Linkagem e Execuo


O seguinte diagrama descreve os passos a partir da criao do programa fonte at a execuo do programa. Se o cdigo fonte modificado, passos 2 a 4 devem se repetir.

Link Library Source File


Step 2: assembler

Object File Listing File

Step 3: linker

Executable File Map File

Step 4: OS loader

Output

Step 1: text editor

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

36

Arquivo de Listagem (List File)


Mostra como o programa montado Contem
cdigo fonte endereos cdigo objeto (linguagem de mquina) nomes de segmentos smbolos (variveis, procedimentos, e constantes)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

37

Arquivo de Mapeamento (Map File)


Informaes sobre cada segmento de programa
endereo de incio endereo de fim tamanho tipo de segmento

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

38

Prxima seo
Elementos bsicos da linguagem Assembly Exemplo: adio e subtrao de inteiros Montagem, Linking, e execuo de programas Definio de dados Constantes simblicas Programao no modo de endereamento real

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

39

Definio de dados
Tipos de dados intrnsecos Sentenas para definio de dados Definio de BYTE e SBYTE Definio de WORD e SWORD Definio de DWORD e SDWORD Definio de QWORD Definio de TBYTE Definio nmero Real Ordem Little Endian Adicionando variveis ao programa AddSub Declarao de dados no-inicializados

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

40

Tipos de dados instrnsecos (1 de 2)


BYTE, SBYTE
8-bit unsigned integer; 8-bit signed integer

WORD, SWORD
16-bit unsigned & signed integer

DWORD, SDWORD
32-bit unsigned & signed integer

QWORD
64-bit integer

TBYTE
80-bit integer

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

41

Tipos de dados instrnsecos (2 de 2)

REAL4
4-byte IEEE short real

REAL8
8-byte IEEE long real

REAL10
10-byte IEEE extended real

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

42

Sentena de definio de dados


Uma sentena de definio de dados define a forma de armazenamento da varivel na memria. Pode opcionalmente atribuir um nome (label) ao dado Sintaxe: [name] directive initializer [,initializer] . . .

value1 BYTE 10 Todos os inicializadores (initializers) so dados binrios na memria

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

43

Definio de dados BYTE e SBYTE


Cada sentena seguinte define o armazenamento de um byte:
value1 BYTE 'A'
value2 BYTE 0 value3 BYTE 255 value4 SBYTE -128 value5 SBYTE +127 value6 BYTE ?

; character constant
; smallest unsigned byte ; largest unsigned byte ; smallest signed byte ; largest signed byte ; uninitialized byte

Se for declarada uma varivel SBYTE, o Microsoft debugger mostra automaticamente o seu valor decimal com sinal.

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

44

Definio de Byte Arrays (vetores de bytes)


Usam mltiplos inicializadores:
list1 BYTE 10,20,30,40 list2 BYTE 10,20,30,40 BYTE 50,60,70,80

BYTE 81,82,83,84
list3 BYTE ?,32,41h,00100010b list4 BYTE 0Ah,20h,A,22h

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

45

Definio de cadeias (Strings)

(1 de 3)

Uma cadeia implementada como um vetor de caracteres


por convenincia, usualmente cercada com apstrofos ou aspas geralmente termina com zero

Exemplos:
str1 BYTE str2 BYTE str3 BYTE greeting "Enter your name",0 'Error: halting program',0 'A','E','I','O','U' BYTE "Welcome to the Encryption Demo program " BYTE "created by Kip Irvine.",0

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

46

Definio de cadeias (Strings)

(2 de 3)

Para continuar uma cadeia na linha seguinte, essa linha deve terminar com vrgula:
menu BYTE "Checking Account",0dh,0ah,0dh,0ah, "1. Create a new account",0dh,0ah, "2. Open an existing account",0dh,0ah, "3. Credit the account",0dh,0ah, "4. Debit the account",0dh,0ah, "5. Exit",0ah,0ah, "Choice> ",0

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

47

Definio de cadeias (Strings)


0Dh = carriage return 0Ah = line feed

(3 de 3)

Seqncia de caracteres de fim de linha e linha seguinte:

str1 BYTE "Enter your name: ",0Dh,0Ah BYTE "Enter your address: ",0 newLine BYTE 0Dh,0Ah,0

Idia: Definir todas as cadeias usadas no programa na mesma rea do segmento de dados.

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

48

Usando o operador DUP


Usar DUP para alocar (criar espao para) um vetor ou cadeia. Sintaxe: counter DUP ( argument )

Counter e argument devem ser constantes ou expresses de constantes counter indica o nmero de dados argument indica o valor do dado

var1 BYTE 20 DUP(0) var2 BYTE 20 DUP(?) var3 BYTE 4 DUP("STACK") var4 BYTE 10,3 DUP(0),20

; 20 bytes, all equal to zero ; 20 bytes, uninitialized ; 20 bytes: "STACKSTACKSTACKSTACK" ; 5 bytes

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

49

Definio de WORD e SWORD


Definio de armazenamento de inteiros de 16-bits

ou dupla de caracteres valor nico ou mltiplos valores


word1 word2 word3 word4 myList array WORD SWORD WORD WORD WORD WORD 65535 32768 ? "AB" 1,2,3,4,5 5 DUP(?) ; ; ; ; ; ; largest unsigned value smallest signed value uninitialized, unsigned double characters array of words uninitialized array

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

50

Definio de DWORD e SDWORD


Definio de armazenamento de inteiros no-sinalizados ou sinalizados de 32-bits:
val1 val2 val3 val4 DWORD SDWORD DWORD SDWORD 12345678h 2147483648 20 DUP(?) 3,2,1,0,1 ; ; ; ; unsigned signed unsigned array signed array

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

51

Definio de dados QWORD, TBYTE e Real


Definio de armazenamento para quadwords, tenbytes, e nmeros reais:
quad1 QWORD 1234567812345678h val1 TBYTE 1000000000123456789Ah rVal1 REAL4 -2.1 rVal2 REAL8 3.2E-260 rVal3 REAL10 4.6E+4096 ShortArray REAL4 20 DUP(0.0)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

52

Ordem Little Endian


Na arquitetura IA-32 todos os tipos de dados maiores que um byte armazenam os seus bytes em ordem reversa, o seja, byte menos significativo no menor endereo de memria. Exemplo:
val1 DWORD 12345678h

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

53

Adicionando Variveis ao AddSub


TITLE Add and Subtract, Version 2 (AddSub2.asm) ; este programa soma e subtrai inteiros no-sinalizados de 32-bits ; e armazena a soma numa variavel. INCLUDE Irvine32.inc .data val1 DWORD 10000h val2 DWORD 40000h val3 DWORD 20000h finalVal DWORD ? .code main PROC mov eax,val1 ; start with 10000h add eax,val2 ; add 40000h sub eax,val3 ; subtract 20000h mov finalVal,eax ; store the result (30000h) call DumpRegs ; display the registers exit main ENDP END main

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

54

Declarao de dados no-inicializados


Usar a diretiva .data? para declarar um segmento de dados no inicializados: .data? Dentro do segmento, declarar variveis com inicializadores "?" : smallArray DWORD 10 DUP(?)

vantagem: reduz o tamanho do arquivo EXE do programa.

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

55

Prxima seo
Elementos bsicos da linguagem Assembly Exemplo: adio e subtrao de inteiros Montagem, Linking, e execuo de programas Definio de dados Constantes simblicas Programao no modo de endereamento real

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

56

Constantes simblicas

(representao de constantes usando smbolos)


Diretiva de sinal de igual Clculo de tamanho de vetores e cadeias Diretiva EQU Diretiva TEXTEQU

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

57

Diretiva de sinal de igual (=)


name = expression
expression um inteiro de 32-bits (expresso ou constante) pode ser redefinido name chamado de constante simblica

Um bom estilo de programao usar smbolos


COUNT = 500 . .

mov al,COUNT

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

58

Clculo do tamanho de um vetor de bytes


endereo da posio atual, onde est sendo calculado dado pelo contador de posio: $
subtrair o endereo de list a diferena o nmero de bytes

list BYTE 10,20,30,40 ListSize = ($ - list)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

59

Clculo do tamanho de um vetor de Words (tamanho = nmero de words)


Divide o nmero total de bytes por 2 (tamanho de um word)

list WORD 1000h,2000h,3000h,4000h ListSize = ($ - list) / 2

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

60

Clculo do tamanho de um vetor de Doublewords


Divide o nmero total de bytes por 4 (tamanho de um doubleword)
list DWORD 1,2,3,4 ListSize = ($ - list) / 4

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

61

Diretiva EQU
Define um smbolo como um inteiro ou expresso de texto No pode ser redefinido
PI EQU <3.1416>

pressKey EQU <"Press any key to continue...",0>


.data prompt BYTE pressKey

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

62

Diretiva TEXTEQU
Define um smbolo como um inteiro ou expresso de texto. Chamado um macro de texto Pode ser redefinido
continueMsg TEXTEQU <"Do you wish to continue (Y/N)?"> rowSize = 5 .data

prompt1 BYTE continueMsg


count TEXTEQU %(rowSize * 2) setupAL TEXTEQU <mov al,count> .code ; evaluates the expression

setupAL

; generates: "mov al,10"

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

63

Prxima seo
Elementos bsicos da linguagem Assembly Exemplo: adio e subtrao de inteiros Montagem, Linking, e execuo de programas Definio de dados Constantes simblicas Programao no modo de endereamento real

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

64

Programao no modo de endereamento real


Gera programas em MS-DOS de 16 bits Vantagens
habilita a chamada do MS-DOS e funes BIOS sem restrio de acesso memria

(1 of 2)

Desvantagens
deve estar alerta a segmentos e offsets No pode chamar funes Win32 (Windows 95 em diante) Limitado a 640K para memria de programa

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

65

Programao no modo de endereamento real


Requisitos INCLUDE Irvine16.inc Initializar DS para o segmento de dados:
mov ax,@data mov ds,ax

(2 de 2)

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

66

Soma e subtrao, verso de 16-Bits


TITLE Add and Subtract, Version 2 (AddSub2r.asm) INCLUDE Irvine16.inc .data val1 DWORD 10000h val2 DWORD 40000h val3 DWORD 20000h finalVal DWORD ? .code main PROC mov ax,@data ; initialize DS mov ds,ax mov eax,val1 ; get first value add eax,val2 ; add second value sub eax,val3 ; subtract third value mov finalVal,eax ; store the result call DumpRegs ; display registers exit main ENDP END main

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

67

Resumo
expresso de inteiros, constantes de caracteres diretivas interpretadas pelo montador (assembler) instruo executa no runtime segmentos de cdigo, dados e pilha Arquivos: fonte, listing, objeto, map, executvel Diretivas para definio de dados:
BYTE, SBYTE, WORD, SWORD, DWORD, SDWORD, QWORD, TBYTE, REAL4, REAL8, e REAL10

operador DUP, contador de posio ($)

Constante simblica
EQU e TEXTEQU

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

68

46 69 6E 69 73

Irvine, Kip R. Assembly Language for Intel-Based Computers, 2007.

Web site

Examples

69

Você também pode gostar