Explicação da instrução ROL |
INSTRUÇÕES USADAS NO SOFTWARE:
MOV: atribuição de valor
ROL: rotaciona o bit mais a esquerda para esquerda.(Vê la na imagem que é de boa)
JMP: jumpar, pular para
CMP: comparação. Se CL for igual a X, por exemplo
INC: Incrementa +1 no registrador. Exemplo: INC DH, incrementa +1 no registrador DH
JE: jump if equals/pule se for igual
JC: jump if carry. Pula se houver carry(1)
JNC: jump if no carry. Pula se não houver carry(0)
JMP: pulo incondicional.
Código disponível para cópia:
code segment start: ;comeca MOV DH,00000000B ;comeca com o numero 0 IMPRIME: MOV CL,0 ;deixa o CL com 0 ROTACIONA: ROL DH, 1 ;joga um numero(sempre o primeiro) para a esquerda, como demonstrado na imagem1 acima JC UM ;se o numero jogado p/ esquerda for 1, pula para sub-rotina UM: JNC ZERO ;se for 0, pula para sub-rotina ZERO: VERIFICA: ;verifica quantos numeros ja foram jogados para esquerda INC CL ;incrementa 1 um CL CMP CL,8 ;ate que CL seja igual a 8 JE PROXIMO ;quando CL for 8, pula para a sub-rotina PROXIMO: JMP ROTACIONA ;enquanto nao for, repete a sub-rotina ROTACIONA: UM: ;imprime o numero 1 MOV AH,2 ;rotina para imprimir um caracter MOV DL,"1" ;manda uma string com o numero '1' para o video INT 21H ;chama o servico de video p/ efetuar a impressao JMP VERIFICA ;pula para a sub-rotina VERIFICA: ZERO: ;imprime o numero 0 MOV AH,2 ;rotina para imprimir um caracter MOV DL,"0" ;manda uma string com o numero '0' para o video INT 21H ;chama o servico de video p/ efetuar a impressao JMP VERIFICA ;pula para a sub-rotina VERIFICA: PROXIMO: ;essa sub-rotina pula uma linha para imprimir o proximo numero e verifica se todos os numeros ja foram escritos MOV AH,2 MOV DL,13 INT 21H MOV AH,2 MOV DL,10 INT 21H INC DH ;incrementa 1 em DH CMP DH,43 ;ate DH ser 42 JE FIM ;se dh for 42. Pula para sub-rotina FIM: e encerra o programa JMP IMPRIME;se for diferente(nesse caso, menor que 42). Pula para IMPRIME: FIM: ends end start ;fim
ou faça download do projeto. (Só abrir com o EMU8086)
0 comentários:
Postar um comentário