Pergunta

Eu não entendo qual é a diferença.

Foi útil?

Solução

Quando você estiver usando instruções como movsb, si é considerado como o s ource registo, enquanto que di é considerado como o d destno registo. Mas eles são ambos os registos x86 normais.

Outras dicas

Meu montagem é um pouco enferrujado, mas é o Índice de Fonte, o outro o destino Index. Uma instrução como movsb irá copiar um byte a partir da localização de memória apontada por SI, e movê-lo para a posição de memória apontada por DI, e, em seguida, incrementar tanto, então se você deseja copiar o byte armazenado a SI+1 para DI+1, ele só toma uma instrução adicional movsb.

SI significa índice fonte. index Fonte é usado como um ponteiro para o caractere atual que está sendo lido em uma instrução string (LODS, MOVS, ou CMPS). Índice fonte também está disponível como uma compensação para adicionar Bx ou Bp ao fazer endereçamento indireto.
exemplo:

MOV [Bx + SI] , Ax  

Esta instrução copia o conteúdo de machado no local de memória cujo endereço é a soma do Bx e SI.

DI significa índice de destino, usado como um ponteiro para o caractere atual que está sendo escrito ou comparado em uma instrução de cadeia.

Ele também está disponível como uma compensação apenas como SI.

como dito acima di significa índice de destino e si significa índice fonte, quando queremos mover dados de memória que usamos si por exemplo, mov ax, [si]. e quando queremos mover dados para a memória usamos di. por exemplo, MOV [di], ax

ambos são de 16 bits registo e não pode ser dividido em 8 bits

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top