Arquitectura x86
COMP 3200
Registros de uso general
8 registros de 32-bits
Registro Función 16-bit (low ) 8-bit
eax Accumulator ax ah, al
ebx (base index) bx bh, bl
ecx (count) cx ch, cl
edx (data) dx dh, dl
edi (destination index) do
esi (source index) si
ebp Frame pointer bp
esp Stack pointer sp
COMP 3200
Registros de Sección
(segmentos)
6 16-bit Section Registers
Registro Function
cs Code section
ds Data section
ss Stack section
es (extra section)
fs (supplemental section)
gs (supplemental section)
COMP 3200
Flags y Program Counter
EFLAGS Register
S Sign
Z Zero
C Carry
P Parity
O Overflow
32-bit EFLAGS Register
32-bit EIP (Instruction Pointer Register)
COMP 3200
Modos de acceso a memoria
Implicito –
Código CS + IP
Stack SS + SP
Inmediato – los datos forman parte de
la instrucción (usa la memoria del
programa)
COMP 3200
Modos de acceso a memoria
Registro – usa el nombre del registro
Memoria – igual que inmediato, pero el
número es una dirección de memoria
COMP 3200
Modos de acceso a memoria
Indirecto – el valor de un registro base
es la direccion de memoria del dato
Base + desplazamiento
Indice * Escala + desplazamiento
Base + indice + desplazamiento
Base + (indice * escala) +
desplazamiento
COMP 3200
Modos indirectos
Base +( Indice * Escala )+ Desplazamiento
eax
eax
ebx
ebx
ecx 1
ecx Nombre
edx 2
edx (identificador)
esp 3
ebp número
ebp 4
esi
esi
edi
edi
COMP 3200
Sintaxis de assembler
Label: Mnem operandos ;comentario
Label – nombre simbólico para la posición en
memoria que tendrá esa instrucción
Mnem – mnemonico de una instrucción o
seudoinstruccion
Operandos - requeridos por la instrucción (si
alguno)
Comentario – documentación
COMP 3200
Programa “Dazzler.asm”
bits 16 ; Set 16 bit code generation
org 0x0100 ; Set code start address to 100h (COM file)
section .text ; Code segment
COMP 3200
Programa “Dazzler.asm”
BEGIN:
mov ax, $0001 ; Set video mode 1
int $10
mov ax, $0B800 ; Set ES to start of video page 0
mov es, ax
COMP 3200
Transferencia de datos:
La instruccion MOV
Transfiere datos entre memoria y/o
registros:
Sintaxis: mov dest , src
src: immediato, registro, memoria
dest: registro, memoria
excepto memoria, memoria
COMP 3200
Transferencia de datos:
Exchange, push y pop
“Exhange” – intercambia dos localizaciones
xchg sd1, sd2
Memoria, Registro
Registro, Memoria
Registro, Registro
Push y Pop – actuan sobre el stack
push src
src: Inmediato, Registro, o Memoria
pop dest
dest: Registro o Memoria
pusha – almacena todos los Registros al stack
popa- Trae los Registros del stack
COMP 3200