No passado
[Notas da linguagem Assembly] 0: (meu primeiro assembler)
[Notas da linguagem Assembly] Dois: representação de dados
[Notas da linguagem Assembly] Três: Endereçamento de dados
[Notas da linguagem Assembly] Quatro: Instruções gerais de processamento de dados
[Notas da linguagem Assembly] Cinco: Estrutura sequencial do programa
Diretório
Programa para contar o número de cadeias que terminam em 0
Estrutura do programa de loop
Instrução de loop
Instrução LOOP
A instrução LOOP diminui em 1 e depois julga
ECX = 0, loop 2 até a 32ª potência
Instrução JECXZ
Programa de soma de matrizes
Registre a indexação para acessar os elementos da matriz
mov ebx, 0; aponte para o primeiro elemento
aginn: add eax, arry [ebx * (tipo arry)]; sum
adicione ebx, 1; aponte para o próximo elemento da matriz
Registre o endereçamento relativo para acessar os elementos da matriz
mov ebx, 0; aponte para o primeiro elemento
aginn: add eax, arry [ebx]; soma
adicione ebx, 4; aponte para o próximo elemento da matriz
Endereçamento indireto de registradores para acessar os elementos da matriz
mov ebx, offset arry; aponte para o primeiro elemento
novamente: add eax, [ebx]; sum
add ebx, 4; aponte para o próximo elemento da matriz
arry dword 136,-138,133,130,-161 ;数组
sum dword ? ;结果变量
mov ecx, legthof arry ;ECX=数组元素的个数
xor eax, eax ;求和初值为0
mov ebx, eax ;数组指针为0
again: add eax, arry[ebx*(type arry)] ;求和
inc ebx ;指向下一个数组元素
loop again
mov sum,eax ;保存结果
Loop de controle de contagem
Visão geral:
Programa máximo de busca
;数据段
arry dword -3,0,20,900,-56
count = lengthof arry
max dword ?
1)
;代码段
mov ecx, count-1
xor esi, esi
mov eax, arry[esi*(type arry)]
again: add esi, 1
cmp eax, arry[esi*(type arry)] ;比较
jge next ;已是较大值,继续
mov eax, arry[esi*(type arry)]
next: loop again
mov max, eax
2)
;代码段
mov ecx, count-1
xor esi, esi
mov eax, arry[esi*(type arry)]
again: add esi, 1
cmp eax, arry[esi*(type arry)] ;比较
jge next ;已是较大值,继续
mov eax, arry[esi*(type arry)]
next: cmp esi, count-1
jb again
mov max, eax
Loop de controle condicional
Visão geral:
Programa para contar o número de cadeias que terminam em 0
Julgue primeiro, recicle
;数据段
string byte 'Do you have fun?',0
;代码段
xor ebx, ebx
again: mov al, string[ebx]
cmp al, 0
jz done ;是0就跳转
inc ebx
jmp again
done: mov eax, ebx
call dispuid
Faça um loop primeiro e depois julgue
;数据段
string byte 'Do you have fun?',0
;代码段
xor ebx, -1
again: inc ebx
cmp string[ebx], 0
jnz again
done: mov eax, ebx
call dispuid
Referências: Curso de programação da linguagem de montagem da plataforma MoOC da Universidade Chinesa