Sie sind auf Seite 1von 43

ARITMTICA DE

ENTEROS
Introduccin

Todo lenguaje tiene instrucciones que mueven bits en el


interior de los operandos. Las instrucciones de
desplazamiento y rotacin, como se conocen, son en
especial tiles para controlar dispositivos de hardware,
cifrar datos e implementar grficos de alta velocidad.
Instrucciones de desplazamiento y
rotacin
Intel proporciona un conjunto
bastante completo de
instrucciones en esta rea (Tabla
7-1), todas las cuales afectan a
las banderas Desbordamiento
y Acarreo.
Desplazamientos lgicos y
desplazamientos aritmticos
Instruccin SHL
Instruccin ROL
Instruccin ROR
Instrucciones RCL y RCR
Desbordamiento con signo
Instrucciones SHLD/SHRD
Aplicaciones de desplazamiento y
rotacin
Desplazamiento y varias dobles
palabras
Multiplicacin Binaria
Visualizacin de bits binarios

Una tarea comn de programacin es convertir un


entero binario en cadena ASCII binaria, para poder
visualizarla en pantalla. La instruccin SHL es til para
esto, ya que copia el bit mas alto de un operando a la
bandera Acarreo, cada vez que el operando se desplaza
a la izquierda.
OPERADORES ARITMTICOS
Aritmtica ASCII y con decimales
desempaquetados
A continuacin se muestra un ejemplo de resultado, en donde el
usuario Introdujo los nmeros 3402 y 1256:
Escriba el primer numero: 3402
Escriba el segundo nmero: 1256
La suma es: 4658
Tenemos dos opciones al calcular y mostrar la suma:
1. Convertir ambos operandos a binario, sumar los valores
binario a cadenas de dgitos ASCII.
1. Sumar las cadenas de dgitos directamente, mediante una
suma sucesiva de cada par de dgitos ASCII (2+6,0+5,4+2 y
3+1). La suma es una cadena de dgitos ASCII, por lo que puede
mostrarse directamente en la pantalla.
Lasegunda opcin requiere el uso de instrucciones especializadas
para ajustar la suma despus de sumar cada par de dgitos ASCII. A
continuacin se muestran las cuatro instrucciones que tratan con la
suma, resta, multiplicacin y divisin ASCII:
AAA (Ajuste ASCII despus de la suma)
AAS (Ajuste ASCII despus de la resta)
AAM (Ajuste ASCII despus de la multiplicacin)
AAD (Ajuste ASCII antes de la divisin )
Instruccin AAA
El siguiente ejemplo muestra como sumar los dgitos ASCII 8 y 2
de manera correcta, usando la instruccin AA.
, 0
, "8" ; = 0038
, "2" ; = 006
; = 0100 (resultando del ajuste ASCII)
, 3030 ; = 3130 = 10 (se convierte a ASCII)
Instruccin AAS
Por ejemplo, las siguientes instrucciones restan el 9 del 8 ASCII:
.
1 "8
2 "9"
.
, 0
, 1 ; = 0038
, 2 ; = 00
; = 09
; guarda la bandera Acarreo
, 30 ; = 39
; guarda la bandera Acarreo
Instruccin AAM
En el siguiente ejemplo, multiplicamos 5 por 6 ajustamos el resultado
en AX. Despus del ajuste, AX = 300h, la representacin de 30 en
decimal desempaquetado:
.
05, 06
.
, ;
, + 1 ;
; = 001
; = 0300
Instruccin AAD
El siguiente ejemplo convierte el numero 0307h desempaquetado a
binario, y despus lo divide entre 5. DIV produce un cociente de 07h
en AL y un residuo de 02h en AH:
.
?
?
.
, 0307 ;
; = 0025
, 5 ;
; = 0207
,
,
Aritmtica con decimales
empaquetados
Los enteros decimales empaquetados almacenan dos dgitos decimales de
byte. Cada digito se representa mediante cuatro bits. Si hay un numero
impar de dgitos, el nibble ms alto se llena con un cero. Los tamaos de
almacenamiento pueden variar:
1 2345673928737285 ; 2,345,673,928,737,285
2 12345678 ; 12,345,678
3 08723654 ; 8,723,654
4 9345 ; 9,345
5 0237 ; 237
6 34 ; 34
El almacenamiento de decimales empaquetados tiene por lo
menos dos puntos fuertes:
Los nmeros pueden tener casi cualquier numero de dgitos
significativos. Esto hace posible realizar clculos con mucha precisin.
La conversin de nmeros decimales empaquetados a ASCII (y
viceversa) es relativamente simple.
Dos instrucciones, DAA (ajuste decimal despus de la suma) y
DAS (ajuste decimal despus de la resta), ajustan el resultado de
una operacin de suma o resta con decimales empaquetados.
Por desgracia, no existen. Instrucciones as para la multiplicacin
y la divisin. En estos casos, el nmero debe desempaquetarse,
multiplicarse o dividirse, y luego volver a empaquetarse.
Instruccin DAA
Por ejemplo, las siguientes instrucciones suma los decimales
empaquetados 35 y 48. La suma binaria (7Dh) se ajusta a 83h, la
suma decimal empaquetada de 35 y 48.
, 35
, 48 ; = 7
; = 83 ( )
Instruccin DAS
Por ejemplo, las siguientes instrucciones restan los decimales
empaquetados 48 y 85, y ajustan el resultado:
, 48
, 85
, ; = 3
; = 37 ( )

Das könnte Ihnen auch gefallen