representación de datos y aritmética básica en sistemas ... · suma bcd de dos dígitos se puede...

52
1 Representación de datos y aritmética básica en sistemas digitales DIGITAL II - ECA Departamento de Sistemas e Informática Escuela de Ingeniería Electrónica Rosa Corti

Upload: others

Post on 22-Aug-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

1

Representación de datos y aritmética básica en sistemas digitales

DIGITAL II - ECA

Departamento de Sistemas e Informática

Escuela de Ingeniería Electrónica Rosa Corti

Page 2: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

2

Sistemas de Numeración:

Alfabeto: Símbolos utilizados

Base: Cantidad de símbolos del alfabeto

Sistemas Posicionales: La posición del dígito en la tira de símbolos da un “peso” a su valor

Page 3: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

3

Sistemas de Numeración:

Sistema binario {0,1}

Sistema octal {0,1,2,3,4,5,6,7}

{ 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F} Sistema hexadecimal

Page 4: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

4

Representación decimal: Código BCD

Dígito decimal Dígito decimal codificado en binario

0 00001 00012 00103 00114 01005 01016 01107 01118 10009 1001

Page 5: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

5

Representación y operaciones básicas con enteros.

Page 6: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

6

Representación de enteros

Magnitud y signo Utilizada en la vida diaria

Complemento a la base

Complemento a la base menos 1

Complementos

Page 7: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

7

Complemento a la base menos 1

Dado un número N en base r con n dígitos, el complemento (r – 1) de N se define como ( rn – 1) – N.

Ejemplo en binario:

N = (01101)2-N = (10010)2

Ventaja: Implementación muy simple

Inconveniente: Doble representación del cero

Ejemplo en decimal:N = (31.479)10

-N = (68.520)10

Page 8: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

8

Complemento a la base

Dado un número N en base r con n dígitos, el complemento a r de N se define como rn – N.

Ejemplo en binario:

N = (01101)2-N = (10011)2

Ejemplo en decimal:

N = (31.479)10-N = (68.521)10

Es el complemento más utilizado en sistemas digitales

Page 9: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

9

Representación del signo:

Ejemplo en binario:

N = (14)10 = (0 00001110)2-N = (- 14)10 = (1 11110010)2 Utilizando complemento a 2.-N = (- 14)10 = (1 11110001)2 Utilizando complemento a 1.

Ejemplo en decimal:

N = (+ 258)10 = ( 0000 0010 0101 1000 ) BCD-N = (- 258)10 = ( 1001 0111 0100 0010 ) BCD , en C10.

Page 10: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

10

Suma en C2

Sumador Binario

CinCout

BA

S

• Caso 1: A > 0 y B > 0

S = A + B Resultado correcto

Sistema decimal Sistema binarioA + 6 0 0000110B +13 0 0001101

S = A + B +19 0 0 0010011

Page 11: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

11

Suma en C2

• Caso 2: A < 0 y B < 0

Resultado correcto

S = (rn – A) + ( rn – B) = rn + rn – ( |A| + |B| )

Sistema decimal Sistema binarioA - 6 1 1111010B -13 1 1110011

S = A + B -19 1 1 1101101

Page 12: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

12

Suma en C2

• Caso 3: A < 0 y B > 0 y |A| < |B|Resultado correcto

S = (rn – A) + B = rn + ( |B| - |A| )

Sistema decimal Sistema binarioA - 6 1 1111010B +13 0 0001101

S = A + B + 7 1 0 0000111

Page 13: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

13

Suma en C2

• Caso 4: A > 0 y B < 0 y |A| < |B|Resultado correcto

S = A + (rn – B) = rn - ( |B| - |A| )

Sistema decimal Sistema binarioA + 6 0 0000110B -13 1 1110011

S = A + B - 7 0 1 1111001

Page 14: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

14

Sumador binario en C2

ΣSumador Binario

CinCout

BA

S

Cuando sumamos números positivos y negativos utilizando complemento a r, se obtendrá el resultado correcto siempre, si se ignora rn.

Page 15: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

15

Sobreflujo (Overflow)

El sobreflujo ocurre cuando al sumar dos números de n bits, el resultado ocupa n + 1bits.

Es un problema de la representación ligado al tamaño finito de los registros del sistema

En general se detecta y se informa.

Page 16: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

16

Bibliotecas Unificadas: Sumador binario

Se disponen en distinto tamaño: 4, 8, 16 bits

Son encadenables

Números sin signo o C2

Sumadores de mayor tamaño

Interpretación de los operandos

Page 17: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

17

Suma Binaria Suma BCD Valor decimalK Z8 Z4 Z2 Z1 C S8 S4 S2 S1

0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 1 0 0 0 0 1 1

0 0 0 1 0 0 0 0 1 0 2

0 0 0 1 1 0 0 0 1 1 3

0 0 1 0 0 0 0 1 0 0 4

0 0 1 0 1 0 0 1 0 1 5

0 0 1 1 0 0 0 1 1 0 6

0 0 1 1 1 0 0 1 1 1 7

0 1 0 0 0 0 1 0 0 0 8

0 1 0 0 1 0 1 0 0 1 9

0 1 0 1 0 1 0 0 0 0 10

0 1 0 1 1 1 0 0 0 1 11

0 1 1 0 0 1 0 0 1 0 12

0 1 1 0 1 1 0 0 1 1 13

0 1 1 1 0 1 0 1 0 0 14

0 1 1 1 1 1 0 1 0 1 15

1 0 0 0 0 1 0 1 1 0 16

1 0 0 0 1 1 0 1 1 1 17

1 0 0 1 0 1 1 0 0 0 18

1 0 0 1 1 1 1 0 0 1 19

Suma BCD de dos dígitos

Se puede obtener utilizando un

sumador binario ?

Page 18: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

18

Suma en BCD

• Ejemplo 1: S = A + B, dónde A = (+ 184) y B = (+ 576)

Acarreo BCD

Suma Binaria

Corrección

Signo Centena Decena Unidad Suma Decimal1 1

0000 0001 1000 0100 1840000 0101 0111 0110 + 5760000 0111 1 0000 1010

0110 0110

0000 0111 0110 1 0000 760Suma BCD

Page 19: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

19

Suma en BCD

• Ejemplo 2: S = A + B, dónde A = (- 184) y B = (- 576)

C10(A) = 9 816 C10(B) = 9 424

Signo Centena Decena Unidad Suma Decimal1 1

1001 1000 0001 0110 - 1841001 0100 0010 0100 - 576

1 1011 1100 0100 1010

0110 0110 0110

1 1001 1 0010 0100 1 0000 - 760

Acarreo BCD

Suma Binaria

Corrección

Suma BCD

Page 20: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

20

Suma en C1

Sumador Binario

CinCout

BA

S

• Caso 1: A > 0 y B > 0

S = A + B Resultado correcto

Sistema decimal Sistema binarioA + 6 0 0000110B +13 0 0001101

S = A + B +19 0 0 0010011

Page 21: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

21

Suma en C1

Resultado correcto• Caso 2: A < 0 y B < 0

S = (rn – 1 – A) + ( rn – 1 – B) = rn – 1 + rn – 1 – ( |A| + |B| )

Sistema decimal Sistema binarioA - 6 1 1111001B -13 1 1110010

S = A + B -19 1 1 1101011 (- 20)1

1 1101100

Page 22: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

22

Suma en C1

• Caso 3: A < 0 y B > 0 y |A| < |B|Resultado correcto

S = (rn – 1 – A) + B = rn – 1 + ( |B| – |A| )

Sistema decimal Sistema binarioA - 6 1 1111001B +13 0 0001101

S = A + B + 7 1 0 0000110 ( + 6)1

00000111

Page 23: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

23

Suma en C1

• Caso 4: A > 0 y B < 0 y |A| < |B|

Resultado correcto

S = A + (rn – 1 – B) = rn – 1 – ( |B| – |A| )

Sistema decimal Sistema binarioA + 6 0 0000110B -13 1 1110010

S = A + B - 7 0 1 1111000

Page 24: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

24

Sumador binario en C1

ΣSumador Binario

CinCout

BA

S

Cuando sumamos números positivos y negativos utilizando complemento a r – 1, se obtendrá el

resultado correcto siempre, si se suma rn al dígito menos significativo.

Page 25: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

25

Resta binaria

R = A + (- B)R = A - B

Se complementa el sustraendo ( C2 ó C1)

Se obtiene a partir del bloque sumador

Page 26: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

26

Bibliotecas Unificadas: Sumador/Restador binario

Se disponen en distinto tamaño: 4, 8, 16 bits

Son encadenables Operandos de mayor tamaño

Números sin signo o C2

Interpretación de los operandos

Page 27: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

27

Multiplicación y división binarias

Se obtienen a partir de la suma y resta binarias , realizando los corrimientos correspondientes.

Se opera con los valores absolutos y se obtiene el signo del resultado a partir de los signos de los operandos.

• Operaciones aritméticas• Operaciones lógicas• Corrimientos y rotaciones

ALU

Page 28: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

28

Representación de números reales.

Page 29: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

29

Representación de números reales

Se considera la coma o punto, fijo en cierta posición.

Representación de punto fijo

Se almacena la posición que ocupa la coma o punto.

Representación de punto flotante

Page 30: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

30

Representación en punto fijo

El punto en el extremo izquierdo

El número es una fracción

El punto en el extremo derecho

El número es un entero

Page 31: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

31

Representación en punto flotante

N = m x re

Mantisa: Número de punto fijo con signo

Exponente: Representa la posición del punto

La mantisa y el exponente se representan físicamente

Page 32: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

32

Normalización en punto flotante

Un número con punto flotante está normalizado si el dígito más significativo de la mantisa es distinto de cero.

Ejemplo: Mantisa fraccionaria (magnitud y signo 8 bits), exponente (C2, 6 bits)

Mantisa Exponente Mantisa Exponente0 0011011 0 00100 0 1101100 0 0010

Número sin normalizar Número normalizadoNro. binario+ 0011,011

Bit de signo

El punto está a la derecha del bit de signo

Page 33: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

33

Representación restringida a n bits: Parámetros

Capacidad de representación

Número máximo de tiras de símbolos diferentes que se pueden representar

Ejemplo:

Sistema con alfabeto binario restringido a 5 bits

25 = 32Número de representaciones posibles

Page 34: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

34

Representación restringida a n bits: Parámetros

Intervalo entre los números mínimo y máximo de la representaciónRango

Ejemplo:

Sistema binario sin signo de punto fijo con 5 bits

[0 , 31]Intervalo representable

Page 35: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

35

Representación restringida a n bits: Parámetros

Diferencia entre dos representaciones sucesivas Resolución

Ejemplo:

Sistema con alfabeto binario y dos bits fraccionarios

(0.01)2 = (0,25)10Resolución

Page 36: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

36

Punto fijo versus punto flotante

Sistema restringido a n bits

Capacidad de representación 2n en ambos

Rango representable: Mayor en punto flotante

En punto fijo la resolución es constante, en punto flotante no.

Resolución:

Page 37: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

37

Representación computacional de datos.

Page 38: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

38

Representación computacional de datos

Enteros o en punto fijo

Reales en punto flotante

Decimales

Código ASCIICaracteres

Page 39: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

39

Representación computacional de enteros

BYTE

8 BitsSBYTE

WORD16 Bits

SWORD

DWORD

32 BitsSDWORD

Page 40: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

40

Conversión entre distintas longitudes

Ejemplo:

+ 18 = 00010010 (complemento a dos, 8 bits).

+ 18 = 0000000000010010 (complemento a dos, 16 bits).

-18 = 11101110 (complemento a dos, 8 bits).

- 18 = 1111111111101110 (complemento a dos, 16 bits).

Debe completarse el formato usando el bit de signo

Page 41: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

41

Representación computacional de decimales

BCD EmpaquetadoBCD DesempaquetadoModo Carácter

Nº BCD Empaquetado BCD Desempaquetado12 0001 0010 0000 0001 0000 0010623 0000 0110 0010 0011 0000 0110 0000 0010 0000 0011910 0000 1001 0001 0000 0000 1001 0000 0001 0000 0000

ASCII0011 0001 0011 00100011 0110 0011 0010 0011 00110011 1001 0011 0001 0011 0000

Nº12623910

Page 42: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

42

Representación computacional en punto flotante

Representada en magnitud y signo

Se asume que es fraccionaria

Mantisa normalizada

Se suma un valor fijo para que sea siempre positivo

Exponente sesgado

La base se conoce y por lo tanto no se representa

Page 43: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

43

Estándar 754 de IEEE para punto flotante

Los distintos formatos del esquema tienen la misma estructura

La mantisa se normaliza y no se representa el bit más significativo SIGNIFICANTE

El significante es un número entre 1 y 2.

Page 44: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

44

Estándar 754 de IEEE para punto flotante

Page 45: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

45

Estándar 754 de IEEE para punto flotante

Page 46: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

46

Estándar 754 de IEEE: Ejemplos

Page 47: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

47

Estándar 754 de IEEE para punto flotante

Los bits disponibles en cada formato de la norma se reparten entre significante y exponente

Existe un compromiso entre rango representable y resolución.

Page 48: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

48

Suma y resta en punto flotante

Se siguen los siguientes pasos:

Verificación de operandos nulos

Alineación de significantes

Suma o resta de significantes

Normalización y redondeo del resultado

Page 49: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

49

Suma y resta en punto flotante

La suma y la resta obligan a realizar un alineamiento de significantes

Se pierden dígitos significativosLos exponentes deben ser iguales

Se desplaza el significante del número más chico

Ejemplo en decimal:

S = 123 100 + 456 10-2 = 123 100 + 4,56 100 = 127,56 100

Page 50: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

50

Estándar 754 de IEEE: Bits de guarda

Z = X – Y = 1,000 … 00 21 – 1,111 … 11 20

Sin bits de guarda: Con bits de guarda:X = 1,000.........00 0000 x 21

- Y = 0,111.........11 1000 x 21

Z = 0,000.........00 1000 x 21

Z = 1, 000........00 0000 x 2-23

X = 1,000.........00 x 21

- Y = 0,111.........11 x 21

Z = 0,000.........01 x 21

Z = 1, 000........00 x 2-22

Sirven para reducir los errores al operar

Page 51: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

51

Estándar 754 de IEEE: Redondeo

Trunca los bits de guardaRedondeo a cero

Redondeo al más próximo Usada por defecto

Redondeo hacia + ∞

Redondeo hacia - ∞

Se utilizan sólo si las necesidades de exactitud son muy altas

Page 52: Representación de datos y aritmética básica en sistemas ... · Suma BCD de dos dígitos Se puede obtener utilizando un ... Suma BCD 0000 0111 0110 1 0000 760. 19 Suma en BCD

52

Multiplicación y división en punto flotante

Se siguen los siguientes pasos:

Verificación de operandos nulos

Suma o resta de exponentes

Multiplicación o división de significantes

Normalización y redondeo del resultado