1

Тема: заміна символів в асемблер

Почав вчити асм , ось написав заміну парних кодів з аскі(як мені здається:) ),але не розумію як тепер змінити на непарні.
Якщо хтось зможе ,допоможіть) :[


lea edi,rez
    td:
    mov al, [edi]
    and al, 1h
    cmp al, 0
    jnz l1
    mov al, [edi]
    cmp al, 65
    jb l1
    cmp al,122
    ja l1
    cmp al, 91
    jb l2
    cmp al, 96
    ja l2
    jmp l1
    l2:
    mov al, '*'
    mov [edi], al
    l1:
    inc edi
    mov al, [edi]
    cmp al, 0
    jnz td
    invoke MessageBox,0, addr rez, addr sztitle,MB_OK
    ret

2 Востаннє редагувалося koala (25.09.2019 21:34:04)

Re: заміна символів в асемблер

Для початку - трохи деталей:
1. Давайте змістовні імена ідентифікаторам (скажімо, не td, а begin)
2. Значна частина операторів змінюють прапорці. Наприклад, cmp робить те саме, що й sub, але не зберігає результат - але sub теж виставляє прапорці. А and перевіряє на нуль, і вам зовсім не треба робити cmp, щоб перевірити значення zf -

    and al, 1h
    jnz l1

працюватиме так само, як і з cmp. Навіть більше - у and є аналог без збереження результату, test. Так що

    test al, 1h
    jnz l1

перевірить значення найменшого біта і не змінить al, тобто не треба буде робити mov al, [edi].

А ваше питання - jnz на jz замініть.

Подякували: svyatvasik, leofun012

3

Re: заміна символів в асемблер

koala написав:

Для початку - трохи деталей:
1. Давайте змістовні імена ідентифікаторам (скажімо, не td, а begin)
2. Значна частина операторів змінюють прапорці. Наприклад, cmp робить те саме, що й sub, але не зберігає результат - але sub теж виставляє прапорці. А and перевіряє на нуль, і вам зовсім не треба робити cmp, щоб перевірити значення zf -

    and al, 1h
    jnz l1

працюватиме так само, як і з cmp. Навіть більше - у and є аналог без збереження результату, test. Так що

    test al, 1h
    jnz l1

перевірить значення найменшого біта і не змінить al, тобто не треба буде робити mov al, [edi].

А ваше питання - jnz на jz замініть.

Дякую за зауваження і допомогу!

4

Re: заміна символів в асемблер

А, і, звісно, в асемблері - ОБОВ'ЯЗКОВО ставте коментарі!