Vous êtes sur la page 1sur 4

Lenguaje de interfaz

Instrucciones Aritmticas

Instrucciones Aritmticas
Este tipo de instrucciones realizan operaciones aritmticas con los operandos. Y son:
ADD, ADC, DAA, AAA, SUB, SBB, DAS, AAS, NEG, MUL, IMUL, AAM, DIV, IDIV, AAD, CBW,
CWB, INC, DEC.
ADD y ADC realizan la suma y la suma con acarreo (bit CF del registro de estado) de
dos operandos, respectivamente, y guardan el resultado en el primero de ellos.
Admiten todos los tipos de direccionamiento (excepto que ambos operando estn en
memoria).
ADD/ADC
ADD/ADC
ADD/ADC
ADD/ADC
ADD/ADC

reg, reg
mem, reg
reg, mem
reg, inmediato
mem, inmediato

Ejemplo:
; J = 34+f
MOV AX, F
ADD AX, 34
MOV J, AX
SUB y SBB realizan la resta y la resta con acarreo, respectivamente, de dos operandos
y guardan el resultado en el primero de ellos. Admiten todos los modos de
direccionamiento, excepto dos operando en memoria.
SUB/SBB reg, reg
SUB/SBB mem, reg
SUB/SBB reg, mem
SUB/SBB reg, inmediato
SUB/SBB mem, inmediato
Ejemplo:
; J = F-34
MOV AX, F
SUB AX, 34
MOV J, AX
Estas instrucciones afectan a los bits OF, SF, ZF, AF, PF, CF del registro de estado.
DAS realizan la correccin BCD empaquetado del resultado de una resta en AL. Actan
de manera similar a la instruccin de ajuste de la suma.
NEG realiza la operacin aritmtica de negado de un operando y guarda el resultado en
el mismo operando. Admite todos los tipos de direccionamiento, excepto inmediato.
NEG reg
NEG mem
La operacin que realiza es: 0 operando.
Estas instrucciones afectan a los bits OF, SF, ZF, AF, PF, CF del registro de estado.
DAA realizan la correccin BCD empaquetado del resultado de una suma en AL.
El 8086/88 realiza las sumas asumiendo que los operados son ambos valores binarios,
de manera que se suman dos valores codificados en BCD empaquetado el resultado
puede no ser un valor vlido en este formato:

Pgina 1 de 4

Lenguaje de interfaz
Instrucciones Aritmticas
La mayora de las computadoras son grandiosas para las matemticas, esto viene a
sorprender que el lenguaje ensamblador solo tiene unos operadores matemticos
relativamente primitivos. No hay smbolos de exponenciacin, no hay punto flotante,
no hay raz cuadradas, y no existen funciones SENO y COSENO dentro del grupo de
instrucciones del 8086. Las instrucciones Matemticas en lenguaje ensamblador estn
restringidas a sumar, multiplicar, dividir y restar valores enteros con signo o sin signo.
Instrucciones
Generales
Descripcin
Mnemnico/Operand
o
Instrucciones de Adicin
aaa
Ajuste ASCII para adicin
adc destino, fuente
Suma con acarreo
add destino, fuente
Suma bytes o palabras
daa
Ajuste decimal para adicin
inc destino
Incremento
Instrucciones de Substraccin
aas
Ajuste ASCII para substraccin
cmp destino, fuente
Compara
das
Ajuste decimal para substraccin
dec destino
Decrementa byte o palabra
neg destino
Negar (complemento a dos)
sbb destino, fuente
Substrae
sub destino, fuente
Substrae
Instrucciones de Multiplicacin
aam
Ajuste ASCII para multiplicacin
imul fuente
Multiplicacin con enteros
mul fuente
Multiplicar
Instrucciones de Divisin
aad
Ajuste ASCII para divisin
cbw
Convierte bytes a palabras
cwd
Convierte palabras a dobles palabras
div fuente
Divide
idiv fuente
Divisin de Enteros
Existen dos formas de incrementar el poder matemtico del lenguaje ensamblador.
Primero, se puede comprar )o escribir) un paquete de funciones matemticas con
rutinas que implementan las funciones matemticas de alto nivel que se necesitan.
Otra solucin es comprar un chip coprocesador matemtico, aunque esto puede ser
muy caro. Como una tercera opcin , y probablemente la mejor, es utilizar un lenguaje
de alto nivel como Pascal o C para codificar las expresiones de punto flotante. Estos
lenguajes vienen con un detector automtico de presencia de coprocesador
matemtico o cambiar a un software emulador para sistemas que carezcan del chip
opcional. Despus de escribir el programa, se puede combinar el cdigo compilado de
alto nivel, con nuestro programa en lenguaje ensamblador. Ya que el coprocesador
matemtico tiene requerimientos estrictos acerca de los datos y
formatos de
instrucciones, la mayora de los compiladores generan cdigo mquina optimizado, y
hay poca ventaja en escribir expresiones de punto flotante directamente en lenguaje
ensamblador.

Pgina 2 de 4

Lenguaje de interfaz
Instrucciones Aritmticas

Pero no tome esto como una pronunciada negativa en matemticas del lenguaje
ensamblador. An sin una librera matemtica o coprocesador, se pueden utilizar
plenamente instrucciones de enteros.

Pgina 3 de 4

Lenguaje de interfaz
Instrucciones Aritmticas
Por ejemplo, no se necesitan nmeros de punto flotante para totalizar los bytes en un
directorio de un disco o contar el nmero de palabras en un archivo de texto. Para
stas y otras operaciones, la matemtica entera es ms que adecuada. En lenguaje
ensamblador puro, tales trabajos frecuentemente trabajan ms rpidamente que
cdigo equivalente de lenguajes de alto nivel.

Pgina 4 de 4

Vous aimerez peut-être aussi