jueves, 31 de octubre de 2013

Instrucciones de Desplazamiento, Rotación y Adeudos.

SHL, SAL desplazar a la izquierda(desplazamient o aritmético)


DESPLAZAMIENTO O Corrimiento de bits a la izquierda.

Los corrimientos hacia la izquierda (SHL y SAL) mueven los bits a la izquierda, en el registro designado. SHL y SAL son idénticos en su operación. El bit desplazado fuera del registro ingresa a la bandera de acarreo. Las instrucciones de corrimiento hacia la izquierda estipulan datos lógicos (sin signo) y aritméticos (con signo):

 
 SHL: Desplazamiento lógico a la izquierda    SAL: Desplazamiento aritmético a la izquierda

Las siguientes instrucciones relacionadas ilustran SHL para datos sin signo:
 

   INSTRUCCION                        COMENTARIO

    MOV    CL, 03

    MOV    AL, 10110111B          ; AL = 10110111

    SHL   AL, 01                           ; AL = 01101110    Un corrimiento a la izquierda

    SHL    AL, CL                         ; AL = 01110000   Tres corrimientos mas

 
El primer SHL desplaza el contenido de AL un bit hacia la izquierda. El bit de más a la izquierda ahora se encuentra en la bandera de acarreo, y el último bit de la derecha del AL se llena con cero. El segundo SHL desplaza tres bits más a AL. La bandera de acarreo contiene en forma sucesiva 0, 1 y 1, y se llena con tres ceros a la derecha del AL.

Los corrimientos a la izquierda llenan con cero el bit de mas a la derecha. Como resultado de esto, SHL y SAL don idénticos. Los corrimientos a la izquierda en especial son útiles para duplicar valores y son mucho más rápidos que usar una operación de multiplicación.

Al terminar una operación de corrimiento, puede utilizar la instrucción JC (Salta si hay acarreo) para examinar el bit que ingreso a la bandera de acarreo.



· SHR desplazar a la derecha


SHR (Shift Right = desplazamiento a la derecha)

(s) shr {R|M}, {cl|I8}

(explicación)

La instrucción shr funciona de la misma forma que shl, pero desplazando los bits a la derecha en lugar de a la izquierda, tal y como se muestra en la figura siguiente.

· SAR desplazamientoaritmético a la derecha



SAR (Shift Arithmetic Right = desplazamiento aritmético a la derecha)

(s) sar {R|M}, {cl|I8}

(explicación)

Esta instrucción desplaza los bits del operando destino a la derecha tantos bits como indique el operando fuente. Esta forma de funcionamiento es similar a la de la instrucción shr; sin embargo, ambas instrucciones se diferencian en que sar, en vez introducir ceros por la izquierda del operando, replica el bit de mayor peso (bit de signo) en cada desplazamiento. esquemáticamente, la instrucción sar trabaja de la siguiente forma:

El desplazamiento a la derecha realizado por la instrucción sar recibe el nombre de aritmético porque sirve para dividir un operando entre una potencia entera de 2.

El desplazamiento aritmético a la derecha de un operando (considerado con signo) n posiciones equivale a la división entera del operando entre 2n.

(ejemplo)

Supongamos que se desea desplazar aritméticamente el contenido del registro AL dos posiciones a la izquierda, y que el contenido de este registro antes de realizar el desplazamiento es B0h, que interpretado en complemento a 2 equivale al entero -80.


· ROL rotación a la izquierda

Rotación a la izquierda de bits

Las rotaciones a la izquierda (ROL y RCL) desplazan a la izquierda los bits del registro designado. Las instrucciones de rotación a la izquierda estipulan datos lógicos (sin signo) y aritméticos (con signo):
Las siguientes instrucciones relacionadas ilustran ROL:



MOV CL, 03
MOV BL, 10110111B ; 10110111
SHR BL, 01 ; 11011011 Una rotación a la izquierda
SHR BL, CL ; 00001011 Tres rotaciones a la izquierda
SHR BX, 03 ; Válido para 80186 y procesadores posteriores
El primer ROL desplaza el bit de mas a la izquierda del BL a la posición vacante de mas a la derecha. La segunda y tercera operaciones ROL realizan la rotación de los tres bits de mas a la izquierda.




· ROR rotación a la derecha


Rotación a la derecha de bits

Las rotaciones a la derecha (ROR y RCR) desplazan a la derecha los bits en el registro designado. Las instrucciones de rotación a la derecha estipulan datos lógicos (sin signo) o aritméticos (con signo):


Las siguientes instrucciones relacionadas ilustran ROR:

 

INSTRUCCION                      COMENTARIO

MOV    CL, 03

MOV    BH, 10110111B          ; BH = 10110111

ROR    BH, 01                          ; BH = 11011011    Una rotación a la derecha

ROR    BH, CL                         ; BH = 00001011    Tres rotaciones a la derecha

 

El primer ROR desplaza el bit de más a la derecha del BH a la posición vacante de más a la izquierda. La segunda y tercera operaciones ROR realizan la rotación de los tres bits de mas a la derecha.

 

RCR provoca que la bandera de acarreo participe en la rotación. Cada bit que se desplaza fuera de la derecha se mueve al CF y el bit del CF se mueve a la posición vacante de la izquierda.


· RCL rotación con acarreo a la izquierda

Rotación a la izquierda de bits

Las rotaciones a la izquierda (ROL y RCL) desplazan a la izquierda los bits del registro designado. Las instrucciones de rotación a la izquierda estipulan datos lógicos (sin signo) y aritméticos (con signo):
 
 
Las siguientes instrucciones relacionadas ilustran ROL:

 

INSTRUCCION                     COMENTARIO

MOV    CL, 03

MOV    BL, 10110111B          ; BL = 10110111

SHR    BL, 01                          ; BL = 11011011    Una rotación a la izquierda

SHR    BL, CL                         ; BL = 00001011    Tres rotaciones a la izquierda

 

El primer ROL desplaza el bit de mas a la izquierda del BL a la posición vacante de mas a la derecha. La segunda y tercera operaciones ROL realizan la rotación de los tres bits de mas a la izquierda.

 

De manera similar a RCR, RCL también provoca que la bandera de acarreo participe en la rotación. Cada bit que se desplaza fuera por la izquierda se mueve al CF, y el bit del CF se mueve a la posición vacante de la derecha.

 

Puede usar la instrucción JC (salta si hay acarreo) para comprobar el bit rotado hacia la CF en el extremo de una operación de rotación.


· CLC borrar acarreo


Propósito: Limpiar bandera de acarreo.

Sintaxis:

CLC

Esta instrucción apaga el bit correspondiente a la bandera de acarreo, o sea, lo pone en cero.


·STC poner acarreo a 1
 
 
 
 
 
 
 

 


 

 



martes, 29 de octubre de 2013

comprobar con el debug




reverse






en este programa no tuvimos ningun tipo de mensaje al final pero cuando me saca del debug pongo un nombre o cualquier palabra y al darle enter me pone de forma reversa esa palabra. 

jueves, 3 de octubre de 2013

cuestionario

1)

Un lenguaje ensamblador proporciona mas control sobre el manejo particular de los requerimientos de hardware. Genera módulos ejecutables mas pequeños  y mas compactos, con mayor probabilidad tiene una ejecución mas rápida. 
El lenguaje de alto nivel es el que utiliza el compilador y el de bajo nivel utiliza un ensamblador.



2)
Ciertas palabras en lenguaje ensamblador están reservadas para sus propósitos propios y son usadas solo bajo condiciones especiales.por categorías, las palabras reservadas incluyen :

Instrucciones como MOV  y  ADD
Directivas como END o SEGMENT
Operadores como  FAR y SIZE

3)

Nombre : que se refiere a la dirección de un elemento de dato
Etiqueta : se refiere a la dirección de una instrucción

4)


a) PC_AT: Válido

b) $50: Válido

c) @$_Z: Válido

d) 34B7: No Válido

e) AX: No válido

5)

Las directivas actúan solo durante el ensamblado de un programa y no generan código ejecutable de maquina.

6)

PAGE y TITLE

 
7)

  
DIRECTIVA PROC
El segmento de código contiene el código ejecutable de un programa. También tiene uno o mas procedimientos. Definidos con la directiva PROC.


DIRECTIVA ASSUME
 Un programa utiliza el registro SS para direccionar la pila, al registro DS para direccionar el segmento de datos y al registro CS para direccionar el segmento de código. Para este fin, usted tiene que indicar al ensamblador el propósito de cada segmento en el programa.


 DIRECTIVA END
Como ya se menciono, la directiva ENDS finaliza un segmento y la directiva ENDP finaliza un procedimiento. Una directiva END finaliza todo el programa.

8)

  
TIPO ALINEACIÓN : la entrada alineación indica el limite en el que inicia el segmento. Para el requerimiento típico.

TIPO COMBINAR :  la entrada combinar indica si se combina el segmento con otros segmentos cuando son enlazados después de ensamblar.


TIPO CLASE : la entrada clase, encerrada entre apóstrofos, es utilizada para agrupar segmentos cuando se enlazan. Este libro utiliza la clase “code” para el segmento de códigos.


 9)

FAR Cuando solicita la ejecución  de un programa, el cargador de programas del DOS utiliza este nombre de procedimiento como el punto de entrada para la primera instrucción a ejecutar.
NEAR cada procedimiento adicional por lo común se codifica con (o por omisión) el operando NEAR.




10)
ENDS finaliza un segmento
ENDP finaliza un procedimiento
END finaliza todo el programa

11)

Los enunciados que finalizan un ensamblado es para terminar todo el proceso de ensamblado, en cambio los que finalizan una ejecución solo terminan un segmento o un procedimiento.
12)

STKSEG SEGMENT PARA STACK 'Stack'
STKSEG ENDS

DATSEG SEGMENT PARA 'Data'
DATSEG ENDS

CDSEG SEGMENT PARA 'Code'
BEGIN PROC FAR
ASSUME SS: STKSEG, DS: DATSEG, CS: CDSEG
MOV AX, DATSEG
MOV DS, AX
MOV AX, FLDA
ADD AX, FLDB
MOV FLDC,AX
MOV AX,AC00H
INT 21H
BEGIN ENDP
CDSEG ENDS
END BEGIN

13)

Salida a DOS

El código de regreso para una terminación normal de un programa por lo común es  0 {cero }
La funcion 4CH del DOS ha sustituido las operaciones originales de terminacion INT 20H e INT 21H, funcion 00H.

14)
  • El modelo TINY esta destinado para uso exclusivo de programas .COM, los cuales tienen sus datos, código y pila en un segmento.
  • El modelo SMALL exige que el código quepa en un segmento de 64K y los datos en otro segmento de 64K.
  • El modelo MEDIUM se usaría cuando tengamos más de un segmento de código y un solo segmento de datos.
  • El modelo COMPACT se utilizaría cuando se tenga un segmento de código pero más de 1 segmento de datos.
  • El modelo LARGE se usaría cuando tengamos más de un segmento de código y más de un segmento de datos.
15)

a) DD: 4 bytes

b) DW: 2 bytes

c) DT: 10 bytes

d) DQ: 8 bytes

e) DB: 1 byte


16)
    R= TITLE1 DB 'RGB Electronics'

17)



a) Un elemento de cuatro bytes con el equivalente hexadecimal del 215 decimal:

FIELDA DD EQU D7H

b) Un elemento de un byte con el equivalente hexadecimal del 35 decimal:

FIELDB DB EQU 25H

c) Un elemento de dos bytes con un valor no definido:

FIELDC DW EQU (?)

d) Un elemento de un byte con el equivalente binario del 25 decimal:

FIELDD DB EQU 11001

e) Un DW con los valores consecutivos 17, 19, 21, 26 y 31:

FIELDE DW EQU 17
FIELDE 19 EQU DW
FIELDE 21 EQU DW
FIELDE 26 EQU DW
FIELDE 31 EQU DW

18)

a) DB '28' = 0001 22 28

b) DB 28 = 0001 1C


19)


a) DB 28H = 0001 28

b) DW 2845H = 0030 2845

c) DD 28733AH = 004A 3A732800

d) DQ 28733AH = 0062 3A73280000000000