Assembly: COpiar de um registo para outro

moody

Membro
Estou aqui com um "bloqueio mental" e gostaria que me ajudassem...Preciso de copiar o conteúdo do registo ch para o registo ax (tem de ser mesmo o registo de 16 bits pois pretendo fazer uma divisão),mas sei que não o posso fazer directamente pois não é possível copiar um registo de 8 bits para 16 bits e vice-versa...Como poderei fazer então?
 
Estou aqui com um "bloqueio mental" e gostaria que me ajudassem...Preciso de copiar o conteúdo do registo ch para o registo ax (tem de ser mesmo o registo de 16 bits pois pretendo fazer uma divisão),mas sei que não o posso fazer directamente pois não é possível copiar um registo de 8 bits para 16 bits e vice-versa...Como poderei fazer então?

copias o conteúdo do registo para memória e daí para o outro registo.
 
mov %ch, %ah #nao me lembro se é para o %ah ou %al
CBTW #convert byte do word, ficas com o resultado em %ax

Ou então usas a solução dada pelo Datwo.

De 16bits para 8bits penso que não resulta, mas verifica a documentação.
A linguagem assembly que usei acima é do GAS-GNU.
 
Já não me lembro bem disso, mas penso que será assim:

mov ax,0 ;;;;;; ou xor ax,ax ,coloca o registo a 0, para não ficar lixo em ah
mov al, ch ;;;;;; al é a parte menos significativa de ax (ex: se ax for 0000 0011 - 0000->ah;0011->al)
 
Última edição:
Já não me lembro bem disso, mas penso que será assim:

mov ax,0 ;;;;;; ou xor ax,ax ,coloca o registo a 0, para não ficar lixo em ah
mov al, ch ;;;;;; al é a parte menos significativa de ax (ex: se ax for 0000 0011 - 0000->ah;0011->al)

ou em alternativa à primeira instrução:

xor ax, ax ;; coloca o registo a zeros

mais rápido ;)

cumprimentos.
 
Back
Topo