Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clase Recupera
Clase Recupera
DIRECTO:
MOV AX,BX
MOV AH,CL
INDIRECTO :
MOV AX,[500] ; DEFECTO:DATOS
INDIRECTO POR REGISTRO BASE:
MOV AX,[BX] ; DATOS
MOV AX,[BP] ;PILA
MOV REGISTRO,[DESPLAZAMIENTO]
Puede mover 1 byte, 2 bytes o
cuatro byte.
MOV EAX,[EBX]
Registros extendidos: 4bytes
DIRECCIONAMIENTO INDIRECTO
BASE + INDICE:
MOV DH,[BX+DI]
Segmento:datos desplaza= BX+DI;
(MOV BX,40) solo para la base
(MOV DI,0) para los siguientes
(MOV DI,1) posiciones
(ADD DI,1) (INC DI) aumentan 1
MOV DH,[BP+SI]
MOV DH,[BX+SI]
MOV [BX+DI],BL
DIRECCIONAMIENTO INDEXADO:
Hace uso de una etiqueta.
Etiqueta equivale a un
desplazamiento. NUEVO=03F0
Direccionamiento=NUEVO+DI
MOV AL,NUEVO[DI]
El valor de la etiqueta no es asignada
por el programador.
Registros BX,DI y SI. (exclusivo del
segmento de datos).
Direccionamiento indexado por
registro base.
Direccionamiento indexado por
registro índice.
Direccionamiento indexado por
registro base+indice.
INSTRUCCIONES X86.
ARITMETICAS:
ADD AX,BX ; AX=AX+BX
ADD BL,DH ; BL = BL+DH
SUB AX,BX ; AX=AX-BX
MUL BL ; AX=AL*BL
El registro acumulador siempre es
AX.
MUL AL; AX=AL*AL
MUL BX; DX AX = AX*BX
BX=DC00 AX=1A35 16858C00
DX AX= 16858C00
AX=8C00 Y DX=1685
Multiplicación de 32 bits. (DX AX)
DIV CL ; AL = AX/CL
DIV CX ; AX = DX AX / CX
AX=5FFA BX=D5A7
AND AX,BX; AX=……….. 55A2
AX= 0101 1111 1111 1010
BX= 1101 0101 1010 0111
(resultado)=0101 0101 1010 0010
INSTRUCCIONES DE BIFURCACION
Inician con una instrucción de
comparación:
CMP AX,CX
JE SALTO
SALTO es una etiqueta
JE es jump equal
Cambiar el valor de IP=salto si es
que es igual AX con CX
EJEMPLO:
CS:0230 MOV AX,BX
CS:0232 ……
…….CODIGO modifica valor de cx
CS:0245 MOV AX,[BX+DI]
CS:0248 CMP AX,CX
CS:024A JNE 0230 ; SALTA SI AX<>CX
CS:024C ; SIGUE SI ES QUE AX=CX
JA : MAYOR
JB : MENOR
JAE : MAYOR IGUAL
JNAE : NO ES MAYOR NI IGUAL
JBE : MENOR IGUAL
bifurcation unconditional
JMP salto ; siempre salta a salto
INSTRUCCIONES DE DESPLAZAMIENTO Y
ROTACION
AX=FA7B
MOV CL,03
SHR AX,CL ; shift right ; siempre en cl
AX= 1 1 1 1 1 0 1 0 0 1 1 1 1 0 1 1
———→ 3BITS
AX= 0 0 0 1 1 1 1 1 0 1 0 0 1 1 1 1
AX=1F4F
INSTRUCCION DE BUCLE
MOV CX,05
Salto: MOV AX,[BX]
Push cx
…..
…..
Pop cx
LOOP salto ; cx=cx-1
Compara cx=0
Si no es igual bifurca a salto