Programación General > ASM (Ensamblador)

 Sobre Los Registros Aritmeticos

(1/1)

tirengarfio:
Saludos,

en este codigo que pongo aqui abajo, el acarreo de la suma se pasa a bl.

Segun he visto, el registro bl se usa en transferencias de datos entre la memoria y el procesador.

¿Por que se usa entonces bl si no estamos haciendo una transferencia entre la memoria y el procesador?¿Se podria haber usado cualquier otro registo aritmetico(bh, dl, dh...)?



--- Código: Text ---  DOSSEG  .MODEL SMALL  .STACK 100h  .DATA   ;Segmento de datos.dato1   DB 35h   ;Primer operandodato2   DB 47h   ;Segundo operandoresul   DW ?   ;Para almacenar el resultado .CODE INICIO:  mov ax,@data   mov ds,ax   mov ah,dato1&#59;Primer operando   mov al,dato2&#59;Segundo operando   xor bl,bl&#59;Pone a cero BL. Donde se guardará el acarreo...ANTES DE LA SUMA!!!   add al,ah&#59;Suma AL+AH y guarda el resultado en AL. CF se puede activar   adc bl,0&#59;Esta es la manera de almacenar el valor del acarreo (CF) de la suma    ;(0 ó 1) en bl...    mov ah,bl&#59;En AX el resultado completo (2 bytes): SUMA + ACARREO.    mov resul,ax&#59;Guarda el resultado  FIN:  mov ah,4ch  int 21h  END inicio 

Un saludo

Javier

Eternal Idol:
Se les dio la gana; podian usar 8 bits de cualquier registro general.

http://en.wikipedia.org/wiki/X86_architecture#x86_registers
http://pdos.csail.mit.edu/6.828/2006/readings/i386/ADC.htm

tirengarfio:

--- Cita de: "Eternal Idol" --- Se les dio la gana; podian usar 8 bits de cualquier registro general.

 
--- Fin de la cita ---


Pero por ejemplo, el enlace de de la wikipedia que me has dejado, dice que solo se puede usar CX como contador de la instruccion loop.

A pesar de esa restriccion, ¿podria entonces usar CL o CH en mi codigo en vez de BL?

Gracias

Javi

Eternal Idol:

--- Cita de: "tirengarfio" --- Pero por ejemplo, el enlace de de la wikipedia que me has dejado, dice que solo se puede usar CX como contador de la instruccion loop.

A pesar de esa restriccion, ¿podria entonces usar CL o CH en mi codigo en vez de BL?

Gracias

Javi
--- Fin de la cita ---

Si, esa restriccion se refiere a los loops, en ese codigo no hay ninguno.

Igual lo deberias haber probado ya, con ese codigo no tiene mucho sentido ya que no hay acarreo ... cambialos asi:

dato1   DB 35h   ;Primer operando
dato2   DB 0ffh   ;Segundo operando

Fijate cual es el resultado.

Cambia los lugares donde se usa bl por cl:
xor cl, cl
adc cl, 0
mov ah,cl

Fijate cual es el resultado.

Navegación

[0] Índice de Mensajes

Ir a la versión completa