Вы находитесь на странице: 1из 107

Flotantes I

MSI Jos Luis Carreo Arteaga jcarreno53@ yahoo.com.mx


Universidad Autnoma de Quertaro

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 1

Representacin de Flotantes

-12 en formato binario: -1100 Normalizando: -1.100 x 2 ^3 Exponente + offset binario = 3 + 127 = 130
11000001010000000000000000000000

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 2

Representacin de Flotantes

-12 en formato binario: -1100 Normalizando: -1.100 x 2 ^3 Exponente + factor de polarizacin = 3 + 127 = 130
11000001010000000000000000000000

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 3

Representacin de Flotantes
Cdigo Autogenerado

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 4

La mquina de flotantes [Irvine, Kip R.]


La Unidad de Punto Flotante (FPU) no utiliza registros de propsito general (como EAX o EBX). Tiene un conjunto propio de registros denominados, pila de registros. De esta forma, se carga el valor en la memoria en un registro de esa pila, se realiza el clculo necesario y el resultado de vuelve almacenar en la memoria. Las instrucciones FPU evalan las expresiones matemticas en formato post-fijo, de manera similar como lo realizan las calculadoras Hewlett-Packard. Ejemplo, supngase que se tiene la expresin infija (4*6)+4, su correspondiente expresin post-fija es 4 6 * 4 + La expresin infija (A+B)*C necesita de parntesis para sobre-escribir las reglas de precedencia por omisin (la multiplicacin antes de la adicin). Pero la expresin post-fija no requiere de parntesis

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 5

La mquina de flotantes [Irvine, Kip R.]


La pila de expresiones La pila contiene valores intermedios durante la evaluacin de expresiones en postfijo. La siguiente secuencia muestra los pasos necesarios para evaluar la expresin en postfijo 4 6 * 4 -. La pila utiliza los registros st(0) y st(1).

ST(0)

push 4

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 6

La mquina de flotantes [Irvine, Kip R.]


La pila de expresiones La pila contiene valores intermedios durante la evaluacin de expresiones en postfijo. La siguiente secuencia muestra los pasos necesarios para evaluar la expresin en postfijo 4 6 * 4 -. La pila utiliza los registros st(0) y st(1).

4
6

ST(1) ST(0) push 6

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 7

La mquina de flotantes [Irvine, Kip R.]


La pila de expresiones La pila contiene valores intermedios durante la evaluacin de expresiones en postfijo. La siguiente secuencia muestra los pasos necesarios para evaluar la expresin en postfijo 4 6 * 4 -. La pila utiliza los registros st(0) y st(1).

24

ST(0)

Multiplica ST(1) por ST(0) y el resultado lo almacena en ST(0)

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 8

La mquina de flotantes [Irvine, Kip R.]


La pila de expresiones La pila contiene valores intermedios durante la evaluacin de expresiones en postfijo. La siguiente secuencia muestra los pasos necesarios para evaluar la expresin en postfijo 4 6 * 4 -. La pila utiliza los registros st(0) y st(1).

24
4

ST(1) ST(0) push 4

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 9

La mquina de flotantes [Irvine, Kip R.]


La pila de expresiones La pila contiene valores intermedios durante la evaluacin de expresiones en postfijo. La siguiente secuencia muestra los pasos necesarios para evaluar la expresin en postfijo 4 6 * 4 -. La pila utiliza los registros st(0) y st(1).

20

ST(0)

Resta ST(0) de ST(1) y el resultado lo almacena en ST(0)

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 10

Instrucciones de carga a la pila de flotantes


m32 m64 FLD operando Carga un nmero de punto flotante en la cima de la pial

m80
st(1)st(n) m16 int

FILD operando

m32 int m64 int

Carga un entero lo convierte y lo almacena en la cima de la pila

FLD1 FLDZ

Carga un 1.0 en la cima de la pila Carga un 0.0 en la cima de la pila

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 11

Extraccin de la pila y envo a memoria


m32 (flotante) m64 (flotante) FST operando st(1)st(7) Carga un nmero de punto flotante en la cima de la pial

SIN extraccin de la pila


m32 (flotante) m64 (flotante) FSTP operando st(1)st(n) Carga un nmero de punto flotante en la cima de la pial

CON extraccin de la pila

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 12

Extraccin de la pila y envo a memoria


m16int m32int FIST operando m64int Almacena el valor de la cima de la pila convertido en entero a memoria

SIN extraccin de la pila


m16int m32int FISTP operando m64int

Almacena el valor de la cima de la pila convertido en entero a memoria

CON extraccin de la pila

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 13

Intercambio de Registros

FXCH st(n)

Intercambia el registro st(0) por el registro st(n)

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 14

Suma FADD

FADD

Suma st(0) y st(1) guardado en st(0) Suma m32 a st(0) resultado almacenado en st(0) Suma m64 a st(0) resultado almacenado en st(0) Suma st(0) a st(i) resultado almacenado en st(0)

FADD m32flotante FADD m64flotante FADD st(0), st(i) FADD st(i), st(0)

Suma st(i) a st(0) resultado almacenado en st(0)

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 15

Suma FADDP

FADDP st(i), st(0) FADDP st(i)

Suma y lo extrae y coloca en st(i) Suma y lo extrae y coloca en st(i)

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 16

Suma FIADD
m32 (entero) FIADD operando m16 (entero) Suma y los operandos y el resultado lo almacena en st(0)

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 17

RESTA FSUB

FSUB

st(1)=st(1)-st(0) m32 (flotante) st(0) = st(0) m32

FSUB operando

m64 (flotante) st(0) = st(1) m64 st(0) = st(0) st(i) st(i) = st(i) st(0)

FSUB operando ST(0),ST(i) FSUB operando ST(i),ST(0)

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 18

RESTA FSUBR (Forma inversa)

FSUBR

st(0)=st(0)-st(1) m32 (flotante) st(0) = m32f st(0)

FSUBR operando

m64 (flotante) st(0) = m64f st(0) st(0) = st(i) st(0) st(i) = st(0) st(i)

FSUBR ST(0),ST(i) FSUBR ST(i),ST(0)

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 19

Resta FSUBP (resta con extraccin)

FSUBP ST(i),ST(0)

ST(i) = ST(i) ST(0)

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 20

Resta FSUBRP inversa con extraccin

FSUBRP ST(i),ST(0)

ST(i) = ST(0) ST(i)

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 21

Resta FISUB con entero

FISUB m16int FISUB m32int

ST(0) = ST(0) m16int


ST(0) = ST(0) m32int

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 22

Resta FISUBR con entero e inverso

FISUBR m16int FISUBR m32int

ST(0) = m16int st(0)


ST(0) = m32int st(0)

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 23

Producto FMUL

FMUL FMUL FMUL FMUL m32fp m64fp st(0) * st(i)

ST(0) = st(0)*st(1) ST(0) = st(0)*m32fp ST(0) = st(0)*m64fp ST(0) = st(0)*st(i)

FMUL

st(i) * st(0)

ST(i) = st(i)*st(0)

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 24

Producto FMULP con extraccin


FMULP realiza la misma operacin de FMUL, pero extrae la informacin de la pila

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 25

FIMUL Multiplica por un entero

m16 (int) st(0) = m16i * st(0) FIMUL m32 (int) st(0) = m32i * st(0)

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 26

FDIV

FD IV FD IV m32fp FD IV m64fp FD IV st(0), st(i) FD IV st(i), st(0)

ST(1) = st(1)/st(0) ST(0) = st(0)/m32fp ST(0) = st(0)/m64fp ST(0) = st(0)/st(i) ST(i) = st(i)/st(0)

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 27

FDIVR

Divisin con operadores en forma inversa

FD IVR FD IVR m32fp FD IVR m64fp FD IVR st(0), st(i) FD IVR st(i), st(0)

ST(0) = st(0)/st(1) ST(0) = m32fp/st(0) ST(0) = m64fp/st(0) ST(0) = st(i)/st(0) ST(i) = st(0)/st(i)

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 28

FDIVRP

(inversa y extraccin)

FD IVRP st(i), st(0)

ST(i) = ST(0) / ST(i)

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 29

FIDIV

Multiplica con un entero

FID IV m32int FID IV m16int

ST(0) = ST(0) / m32int ST(0) = ST(0) / m16int

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 30

FIDIVR entero e inverso

FID IVR m32int FID IVR m16int

ST(0) = m32int /ST(0) ST(0) = m16int /ST(0)

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 31

ATOF K&R
Salta espacios frontales

1 3 . 5 4

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 32

ATOF K&R
Salta espacios frontales

1 3 . 5 4

i=3 potencia=

valor=
signo=

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 33

ATOF K&R
Verifica signo

1 3 . 5 4

i=3 potencia=

valor=
signo= 1

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 34

ATOF K&R
Salta el signo si es que existe

1 3 . 5 4

i=3 potencia=

valor=
signo= 1

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 35

ATOF K&R
Ciclo para verificar dgitos

1 3 . 5 4

i=3 potencia=

valor=0
signo= 1

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 36

ATOF K&R
Ciclo para verificar dgitos

1 3 . 5 4

i=3

valor=10.0*0+ascii(1)-ascii(0) =1

potencia=

signo= 1

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 37

ATOF K&R
Ciclo para verificar dgitos

1 3 . 5 4

i=4

valor=10.0*1+ascii(3)-ascii(0) =13

potencia=

signo= 1

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 38

ATOF K&R
Verifica el punto decimal

1 3 . 5 4

i=5 potencia=

Valor=13

signo= 1

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 39

ATOF K&R
Verifica el punto decimal

1 3 . 5 4

i=6 potencia=

Valor=13

signo= 1

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 40

ATOF K&R
Ciclo para dgitos despus del punto decimal

1 3 . 5 4

i=6 potencia=1.0

Valor=13

signo= 1

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 41

ATOF K&R
Ciclo para dgitos despus del punto decimal

1 3 . 5 4

i=6

Valor=10*13+ascii(5)-ascii(0) =135

potencia=1.0

signo= 1

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 42

ATOF K&R
Ciclo para dgitos despus del punto decimal

1 3 . 5 4

i=6 potencia=10

Valor=135

signo= 1

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 43

ATOF K&R
Ciclo para dgitos despus del punto decimal

1 3 . 5 4

i=7

Valor=10*135+ascii(4)-ascii(0) =1354

potencia=10

signo= 1

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 44

ATOF K&R
Ciclo para dgitos despus del punto decimal

1 3 . 5 4

i=7 potencia=100

Valor=1354

signo= 1

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 45

ATOF K&R
Regresa el clculo del nmero

1 3 . 5 4

i=8 potencia=100

Valor=1354

signo= 1

return 1*1354/100
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 46

Nmeros IEEE-754 64 bits


El procedimiento es similar para tratar los nmeros de 64 bits, pero esta vez el exceso que debe ser sumado es 1023

12 en formato binario: 1100 Normalizando: 1.100 x 2 ^3 Exponente + offset binario =

3 + 1023 = 1026

0100000000101000000000000000000000000000000000000000000000000000 4 0 2 8 0 0 0 0 0 0 0 0 0 0 0 0

1076363264
Jos Luis Carreo Arteaga Programacin de bajo nivel

0
Pgina 47

Bits Bajos y Altos de un QW


Calcula los bits altos de QW Calcula los bits bajos de QW

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 48

Cargando un nmero flotante a memoria

Almacenar los dobles en 64 bits Cargar el nmero de 64 bits en st(0) Regresar el valor a la variable
4(%esp) | 8(%esp)

Imprime el doble almacenado en 4(%esp) | 8(%esp)

CORRIDA DEL PROGRAMA ANTERIOR

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 49

Cargando un nmero flotante a memoria

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 50

Cadena de caracteres para calcular doble


PARTE II PARTE I

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 51

Construyendo biblioteca b60.s para manipulacin de dobles Actividad 8.1 Programa p60.c Programa b60.s parte I

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 52

Construyendo biblioteca b60.s para manipulacin de dobles Actividad 8.1

Programa b60.s parte III

Programa b60.s parte II

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 53

Construyendo biblioteca b60.s para manipulacin de dobles Actividad 8.1

Programa b60.s parte V

Programa b60.s parte IV

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 54

Comparando ATOF.s-ATOF.c Actividad 8.1

i=0;
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 55

Comparando ATOF.s-ATOF.c Actividad 8.1

Eax= *(s+i)
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 56

Comparando ATOF.s-ATOF.c Actividad 8.1

Jos Luis Carreo Arteaga

Ajusta el carcter al registro al y los bits ms altos los rellena a 0

Programacin de bajo nivel

Pgina 57

Comparando ATOF.s-ATOF.c Actividad 8.1

compara al con espacio


Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 58

Comparando ATOF.s-ATOF.c Actividad 8.1

Salta a etiqueta B
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 59

Comparando ATOF.s-ATOF.c Actividad 8.1

Compara el registro al con ascii 9 (tabulador)


Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 60

Comparando ATOF.s-ATOF.c Actividad 8.1

Si no es igual salta a etiqueta LF


Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 61

Comparando ATOF.s-ATOF.c Actividad 8.1

Compara el registro al con el ascii 10 (\n)


Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 62

Comparando ATOF.s-ATOF.c Actividad 8.1

Si no es igual ir a etiqueta salir_ciclo_blancos


Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 63

Comparando ATOF.s-ATOF.c Actividad 8.1

Incrementa i
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 64

Comparando ATOF.s-ATOF.c Actividad 8.1

Compara el registro al con ascii 45 (-)


Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 65

Comparando ATOF.s-ATOF.c Actividad 8.1

Si no es igual ir a etiqueta POS


Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 66

Comparando ATOF.s-ATOF.c Actividad 8.1

Asignar -1 a signo
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 67

Comparando ATOF.s-ATOF.c Actividad 8.1

Saltar a etiqueta SIG


Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 68

Comparando ATOF.s-ATOF.c Actividad 8.1

Asignar a signo el valor de 1


Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 69

Comparando ATOF.s-ATOF.c Actividad 8.1

Eax = *(s+i)
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 70

Comparando ATOF.s-ATOF.c Actividad 8.1

Ajusta *(s+i) en %eax y carga el carcter en el registro al y los bits altos los rellena con 0
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 71

Comparando ATOF.s-ATOF.c Actividad 8.1

Compara *(s+i) el cual se encuentra en el registro al con el ascii 43 (ascii del signo +)
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 72

Comparando ATOF.s-ATOF.c Actividad 8.1

Si es igual se va a la etiqueta INC1


Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 73

Comparando ATOF.s-ATOF.c Actividad 8.1

Compara *(s+i) el cual se encuentra en el registro al con el ascii 45 (ascii del signo -)
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 74

Comparando ATOF.s-ATOF.c Actividad 8.1

Si no es igual se va a etiqueta CONT


Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 75

Comparando ATOF.s-ATOF.c Actividad 8.1

Si no es igual se va a etiqueta CONT


Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 76

Comparando ATOF.s-ATOF.c Actividad 8.1

Guarda 10 en la variable temporal -28(%ebp)


Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 77

Comparando ATOF.s-ATOF.c Actividad 8.1

0
Guarda cero en la pila de FPU
Jos Luis Carreo Arteaga Programacin de bajo nivel

ST(0)

Pgina 78

Comparando ATOF.s-ATOF.c Actividad 8.1

ST(0)
Extrae cero de la pila de FPU y lo coloca en la variable valor -8(%ebp)
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 79

Comparando ATOF.s-ATOF.c Actividad 8.1

ST(0)
Guarda *(s+i) en eax
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 80

Comparando ATOF.s-ATOF.c Actividad 8.1

ST(0)
Ajusta *(s+i) en al y los bits ms altos los rellena con cero
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 81

Comparando ATOF.s-ATOF.c Actividad 8.1

ST(0)
Compara *(s+i) con el ascii 48 (ascii del 0)
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 82

Comparando ATOF.s-ATOF.c Actividad 8.1

ST(0)
Compara *(s+i) con el ascii 57 (nmero 9)
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 83

Comparando ATOF.s-ATOF.c Actividad 8.1

ST(0)
Si es mayor se va a etiqueta salir_ciclo2
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 84

Comparando ATOF.s-ATOF.c Actividad 8.1

valor
Carga valoren la pila del FPU
Jos Luis Carreo Arteaga Programacin de bajo nivel

ST(0) ST(1)

Pgina 85

Comparando ATOF.s-ATOF.c Actividad 8.1

10 valor
Carga la constante entera 10 en la pila del FPU
Jos Luis Carreo Arteaga Programacin de bajo nivel

ST(0) ST(1)

Pgina 86

Comparando ATOF.s-ATOF.c Actividad 8.1

10*valor
Multiplica valor por 10
Jos Luis Carreo Arteaga Programacin de bajo nivel

ST(0) ST(1)

Pgina 87

Comparando ATOF.s-ATOF.c Actividad 8.1

10*valor
Guarda la direccin de s en %eax
Jos Luis Carreo Arteaga Programacin de bajo nivel

ST(0) ST(1)

Pgina 88

Comparando ATOF.s-ATOF.c Actividad 8.1

10*valor
A la direccin de s le suma i
Jos Luis Carreo Arteaga Programacin de bajo nivel

ST(0) ST(1)

Pgina 89

Comparando ATOF.s-ATOF.c Actividad 8.1

10*valor
Guarda el contenido de eax en eax y la ajusta al registro al
Jos Luis Carreo Arteaga Programacin de bajo nivel

ST(0) ST(1)

Pgina 90

Comparando ATOF.s-ATOF.c Actividad 8.1

10*valor
Mueve el registro al ajustado al registro %eax
Jos Luis Carreo Arteaga Programacin de bajo nivel

ST(0) ST(1)

Pgina 91

Comparando ATOF.s-ATOF.c Actividad 8.1

10*valor
Resta el valor ascii 48 (ascii de 0) al valor contenido en %eax
Jos Luis Carreo Arteaga Programacin de bajo nivel

ST(0) ST(1)

Pgina 92

Comparando ATOF.s-ATOF.c Actividad 8.1

10*valor
Almacena el valor calculado en la variable temporal -36(%ebp)
Jos Luis Carreo Arteaga Programacin de bajo nivel

ST(0) ST(1)

Pgina 93

Comparando ATOF.s-ATOF.c Actividad 8.1

36(%ebp)=*(s+i)-0

ST(0) ST(1)

10*valor
El valor calculado almacenado en 36(%ebp) es guardado en la pila FPU
Jos Luis Carreo Arteaga Programacin de bajo nivel

Pgina 94

Comparando ATOF.s-ATOF.c Actividad 8.1

10*valor + (*(s+i)-0) ST(0)

ST(1)
Suma los dos valores contenidos en la pila del FPU= 10*valor + (*(s+i)-0)
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 95

Comparando ATOF.s-ATOF.c Actividad 8.1

ST(0) ST(1)
Extrae el valor del clculo y lo guarda en la variable valor
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 96

Comparando ATOF.s-ATOF.c Actividad 8.1

ST(0) ST(1)
Incrementa el valor de i
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 97

Comparando ATOF.s-ATOF.c Actividad 8.1

ST(0) ST(1)
Contina al siguiente ciclo
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 98

Comparando ATOF.s-ATOF.c Actividad 8.1

ST(0) ST(1)
Guarda i en %eax
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 99

Comparando ATOF.s-ATOF.c Actividad 8.1

ST(0) ST(1)
A i le suma la direccin de s y almacena el resultado en %eax
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 100

Comparando ATOF.s-ATOF.c Actividad 8.1

ST(0) ST(1)
El contenido de %eax lo guarda en eax y ajusta el resultado al registro %al
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 101

Comparando ATOF.s-ATOF.c Actividad 8.1

ST(0) ST(1)
Compara el contenido de al con el ascii 46 (ascii del punto)
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 102

Comparando ATOF.s-ATOF.c Actividad 8.1

ST(0) ST(1)
Si no es igual ir a etiqueta ciclo3
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 103

Comparando ATOF.s-ATOF.c Actividad 8.1

ST(0) ST(1)
Incrementa el valor de i
Jos Luis Carreo Arteaga Programacin de bajo nivel Pgina 104

Salida ATOF Actividad 8.1

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 105

Actividad 8.1
Completar el anlisis lnea por lnea del algoritmo anterior

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 106

Referencias
[Irvine, Kip R.]Assembly Language for X86 Processors. 2011. ISBN 0-13-602212-X [Kernighan, Brian W; Ritchie, Dennis M] The C programming language. Second Edition. April 1, 1988. ISBN-10: 0131103628

Jos Luis Carreo Arteaga

Programacin de bajo nivel

Pgina 107

Вам также может понравиться