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

OPERACIONES ARITMTICAS

EQUIPO 2.

SUMA Y RESTA

Las instrucciones ADD y SUB realizan sumas y restas de datos binarios.

Como en otras instrucciones, no existen operaciones directas de memoria a memoria.

Operador destino, fuente -> destino = destino (operador) fuente

SUMA Y RESTA
Ejemplo

SUMA Y RESTA
Por lo tanto podemos manejar las instrucciones de la siguiente manera.

Registro a registro Memoria a registro (viceversa) Constante a registro (viceversa) Constante a memoria (viceversa)

SUMA Y RESTA

Ejemplo.

Si AL=60H, entonces la instruccin: ADD AL,20H Genera una suma de AL=80H La suma valdra -128 en vez de +128; esto es porque 80H=10000000 pero podemos evitar esto, ya que AL es un registro pequeo para la suma, por lo tanto debemos usar AX.

SUMA Y RESTA
Las instrucciones ADD y SUB no distinguen entre datos con y sin signo; slo suman y restan bits.

Ejemplo.
Sin signo. 249+2=251 Con signo. -7+2=-5

11111001 +00000010 11111011

SUMA Y RESTA
Aritmtica con acarreo. Pone la bandera de acarreo en encendido. CF=1

Ejemplo.
Sin signo. 252+5=1 No vlido. Con signo. -4+5=1 Vlido

11111100 + 00000101 (1) 00000001

SUMA Y RESTA

Desbordamiento aritmtico. Pone la bandera de desbordamiento en encendido. OF=1

Ejemplo.
Sin signo. 121+11=132 Vlido. Con signo. 121+11= -124 No vlido

01111001 + 00001011 10000100

SUMA Y RESTA

Las instrucciones ADC y SBB se utilizan para la suma y resta con acarreo y desbordamiento.

SUMA Y RESTA

SUMA Y RESTA

Donde asignamos los siguientes valores: Mem1=2, mem5=0 Para sumar AL a BX usamos la bandera y la instruccin de suma para acarreo. Y PTR es un apuntador

INCREMENTO Y DECREMENTO

Las instrucciones INC y DEC incrementa y decrementa en unidad el operando. INC (destino) DEC (destino)

INCREMENTO Y DECREMENTO

Las instrucciones INC y DEC no afectan las banderas de acarreo ni desbordamiento.

MULTIPLICACION Y DIVISION

Las instrucciones MUL y DIV multiplican y dividen datos sin signo, ambas afectan las banderas de acarreo y desbordamiento.

MULTIPLICACION Y DIVISION

Instruccin MUL DL MUL BX

Multiplicador BYTE (DL) WORD (BX)

Multiplicando AL AX

Producto AX DX:AX

DX (parte alta del producto):AX (parte baja del producto)

MULTIPLICACION Y DIVISION

La instruccin IMUL multiplica datos con signo de la misma manera que MUL.

MULTIPLICACION Y DIVISION

USANDO MUL

MULTIPLICACION Y DIVISION
USANDO IMUL

MULTIPLICACION Y DIVISION

Donde en el primer ejemplo multiplica 80H (128) por 40H (64). El producto en el AX es 2000H (8192). Con la instruccin IMUL trata a 80H como -128. As que al multiplicar 80H por 40H nos da E000H (-8192H)

MULTIPLICACION Y DIVISION

Instruccin DIV DL DIV CX

Divisor BYTE (DL) WORD (CX)

Dividendo AX DX:AX

Cociente AL AX

Residuo AH DX

DX (parte alta del dividendo):AX (parte baja del dividendo)

MULTIPLICACION Y DIVISION

La instruccin IDIV divide datos con signo de la misma manera que DIV.

MULTIPLICACION Y DIVISION

USANDO DIV

MULTIPLICACION Y DIVISION
USANDO IDIV

MULTIPLICACION Y DIVISION

Donde en el primer ejemplo divide 2000h (8092) entre 80h (128) el residuo en AH es 00h y el cociente en AL es 40h(64). El segundo ejemplo necesitamos extender byte1 a una palabra.

MULTIPLICACION Y DIVISION

Cuando usamos IDIV estamos dividiendo datos con signo, por lo tanto en el primer ejemplo divide 2000h(+) entre 80h(-); el residuo es 00h en AH y el cociente es C0H (-64) en AL

MULTIPLICACION Y DIVISION
OPERACIONES CON NUMEROS GRANDES

MULTIPLICACION Y DIVISION
OPERACIONES CON NUMEROS GRANDES

NUMEROS CON SIGNO

Los ordenadores slo son capaces de almacenar dgitos binarios, no signos. Por lo que en vez de anteponer un signo (-) a un nmero negativo, su bit ms significativo (izquierdo) anteponemos; 0(+), 1(-).

NUMEROS CON SIGNO

Para convertir un nmero positivo a negativo (viceversa): Se invierten todos los bits del nmero y luego se le suma 1 al resultado.

NUMEROS CON SIGNO

Ejemplo:

35d = 00100011b -> (invirtiendo) -> 11011100b -> +1 -> 11011101b = -35d -35d = 11011101b -> (invirtiendo) -> 00100010b -> +1 -> 00100011b = 35d

NUMERO OPUESTO

Un nmero es opuesto a otro si al sumarlos obtenemos el elemento neutro, es decir el cero. La instruccin NEG (negar) invierte los bits y despus suma 1 al resultado.

NUMERO OPUESTO
.MODEL tiny .STACK .DATA numero db 10 .CODE inicio: mov ax,@data mov ds,ax NEG numero inc numero mov ah,4ch int 21h END inicio

ROTACIN Y DESPLAZAMIENTO

Existen instrucciones que sirven para mover el contenido de cada bit hacia la izquierda o derecha, segn el caso.

ROTACIN Y DESPLAZAMIENTO

Una rotacin a la izquierda mueve el valor de cada bit en el de su izquierda y copia el contenido previo del bit de mayor peso en el de menor peso. Una rotacin a la derecha mueve el valor de cada bit en el de su derecha y copia el contenido previo del bit de menor peso en el de mayor peso

ROTACIN Y DESPLAZAMIENTO

ROL destino, contador (Rota a la izquierda los bits del operando destino el nmero de bits especificado en el segundo operando. Si el nmero de bits es 1 se puede poner directamente, en caso contrario debe ponerse a travs de CL y especificar CL como segundo operando). ROR destino, contador (Rota a la derecha los bits del operando destino y la misma dinmica en contador que anterior). RCL destino, contador (Rotar a la izquierda los bits del operando destino junto con el indicador de acarreo CF y la misma dinmica en contador que anterior). RCR destino, contador (Rotar a la derecha los bits del operando destino junto con el indicador de acarreo CF y la misma dinmica en contador que anterior).

ROTACIN Y DESPLAZAMIENTO
.MODEL tiny .STACK .DATA numero dw 0fffh .CODE inicio: mov ax,@data mov ds,ax mov cl,4 mov bx,numero rol numero,cl mov bx,numero ror numero,cl mov bx,numero mov ah,4ch int 21h END inicio

ROTACIN Y DESPLAZAMIENTO

Un desplazamiento a la izquierda mueve el valor de cada bit en el de su izquierda, el valor del bit de mayor peso pasa al acarreo y el de menor peso se anula. Un desplazamiento a la derecha mueve el valor de cada bit en el de su derecha, el valor del bit de menor peso pasa al acarreo y el de mayor peso se anula.

ROTACIN Y DESPLAZAMIENTO

SAL/SHL destino, contador (Desplaza a la izquierda los bits del operando destino el nmero de bits especificado en el segundo operando. Si el nmero de bits es 1 se puede poner directamente, en caso contrario debe ponerse a travs de CL y especificar CL como segundo operando). SAR destino, contador (Desplaza a la derecha los bits del operando destino. Los bits de la izquierda se rellenan con el bit de signo del primer operando). SHR destino, contador (Desplaza a la derecha los bits del operando destino el nmero de los bits especificados en el segundo operando. Los bits de la izquierda se llena con cero.

ROTACIN Y DESPLAZAMIENTO
.MODEL tiny .STACK .DATA valor db 10110011b .CODE inicio: mov ax,@data mov ds,ax mov cl,4 mov bx,valor shl valor,cl mov bx,valor shr valor,cl mov bx,valor mov ah,4ch int 21h END inicio

GRACIAS

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