[Notas del lenguaje ensamblador] Seis: estructura del programa de bucle

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

Instrucción de bucle

Instrucción LOOP

 Instrucción JECXZ

Programa de suma de matrices

Bucle de control de conteo

Resumen:

Programa de máxima búsqueda

Bucle de control condicional

Resumen:

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

47 artículos originales publicados · Me gusta 23 · Visita 2677

Supongo que te gusta

Origin blog.csdn.net/weixin_43252204/article/details/105508909
Recomendado
Clasificación