En el pasado
[Notas del lenguaje ensamblador] 0: (mi primer ensamblador)
[Notas del lenguaje ensamblador] Dos: representación de datos
[Notas del lenguaje ensamblador] Tres: direccionamiento de datos
[Notas del lenguaje ensamblador] Cuatro: instrucciones generales de procesamiento de datos
[Notas del lenguaje ensamblador] Cinco: estructura del programa secuencial
Directorio
Estructura del programa de bucle
Programa para contar el número de cadenas que terminan en 0
Estructura del programa de bucle
Instrucción de bucle
Instrucción LOOP
LOOP disminuye la instrucción en 1 y luego juzga
ECX = 0, bucle 2 a la potencia 32
Instrucción JECXZ
Programa de suma de matrices
Registre la indexación para acceder a los elementos de la matriz
mov ebx, 0; apunte al primer elemento
aginn: add eax, arry [ebx * (type arry)]; sum
add ebx, 1; apunta al siguiente elemento de la matriz
Registre el direccionamiento relativo para acceder a los elementos de la matriz
mov ebx, 0; apunte al primer elemento
aginn: agregue eax, arry [ebx]; suma
agregue ebx, 4; apunte al siguiente elemento de la matriz
Direccionamiento indirecto de registros para acceder a elementos de matriz
mov ebx, offset arry; señalar al primer elemento
aginn: agregar eax, [ebx]; suma
agregar ebx, 4; señalar al siguiente elemento de 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 ;保存结果
Bucle de control de conteo
Resumen:
Programa de máxima búsqueda
;数据段
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
Bucle de control condicional
Resumen:
Programa para contar el número de cadenas que terminan en 0
Primero juzgue, 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
Primero, luego juzga
;数据段
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
Referencias: Curso de programación del lenguaje ensamblador de la plataforma MoOC de la universidad china