Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 1
Регистрация: 23.04.2022
Сообщений: 3
1
MASM

В макросе не срабатывает условие IFIDNI

23.04.2022, 15:30. Показов 1483. Ответов 4

Author24 — интернет-сервис помощи студентам
Добрый день, всем!
Не могу понять, почему в макросе не срабатывает условие.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
INCLUDE Irvine32.inc
 
mWriteString MACRO buffer:REQ   
    mov eax, 0
    mov al, buffer ; AL = 54h   
    
    IFIDNI <al> , <54h>    
        mov al, 1
    ENDIF   
ENDM
 
.data
msg BYTE 54h, 0Dh, 0Ah, 0 
 
.code
main PROC
    mWriteString msg            
    mov al, msg     ; AL = 54h
    
        ; непосредственно в коде условие срабатывает
    .IF al == 54h
        mov ah, 10h
    .ENDIF
 
        exit
main ENDP
END main
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.04.2022, 15:30
Ответы с готовыми решениями:

Формула в Excel макросе не срабатывает
В процессе работы макроса пишу формулы типа - ActiveCell.Formula = '=SUM(RC:RC)' т.е. сумму по...

Не срабатывает Open Dialog в макросе
Для открытия файла в макросе (Word) использую ф-ю VBGetOpenFileName подключенную к кнопке. На одних...

Условие в макросе
Уважаемые коллеги, добрый день! В одном из своих предыдущих обращений, я спрашивал как...

Условие повтора в макросе
Добрый день! Не получается ввести условие повтора работы макроса определенное количество раз в...

Условие отбора в внедренном макросе
Здравствуйте, пишу лабы по Access'у, ситуация такая: Есть форма, в ней есть какое-то поле,...

4
Модератор
Эксперт по электронике
8523 / 4377 / 1648
Регистрация: 01.02.2015
Сообщений: 13,601
Записей в блоге: 9
23.04.2022, 17:03 2
В https://docs.microsoft.com/en-... w=msvc-150
https://docs.microsoft.com/ru-... w=msvc-150
IFIDN, IFIDNI

Grants assembly if the text items are identical.

Syntax
IFIDN textitem1, textitem2
IFIDNI textitem1, textitem2

Remarks
If IFIDNI is given, the comparison is case insensitive. See IF for complete syntax.
Т.е. сравниваются строки "al" и "54h" - они не равны.

Или что-то не понял из вопроса?
0
0 / 0 / 1
Регистрация: 23.04.2022
Сообщений: 3
23.04.2022, 19:39  [ТС] 3
Макрос вызывается с аргументом msg, который равен 54h.
Моя задача заключается в том, чтобы сравнить в макросе значение аргумента с числом 54h.
Как это можно сделать?
Вот условие, которое работает непосредственно в .code:
Assembler
1
2
3
4
5
mov al, msg     ; AL = 54h
    ; непосредственно в коде условие срабатывает
        .IF al == 54h
            mov ah, 10h
        .ENDIF
Как в макросе в условии сравнить на равенство значение аргумента с числом?
0
Модератор
Эксперт по электронике
8523 / 4377 / 1648
Регистрация: 01.02.2015
Сообщений: 13,601
Записей в блоге: 9
23.04.2022, 20:44 4
Assembler
1
2
cmp al, 54h
je ...
0
0 / 0 / 1
Регистрация: 23.04.2022
Сообщений: 3
23.04.2022, 22:29  [ТС] 5
Лучший ответ Сообщение было отмечено ФедосеевПавел как решение

Решение

Павел, спасибо за помощь.
Разобрался. IFIDNI позволяет проверить имя параметра, т.е. не значение а имя.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
INCLUDE Irvine32.inc 
 
mWriteString MACRO buffer:REQ       
        IFIDNI <buffer> , <msg1>       
                mov al, 1
        ELSE
                mov al, 2
        ENDIF   
ENDM
 
.data
msg1 BYTE 54h, 0Dh, 0Ah, 0 
msg2 BYTE 54h, 0Dh, 0Ah, 0      
 
.code
main PROC   
        mWriteString msg1 ; AL = 1          
        mWriteString msg2 ; AL = 2
        exit
main ENDP
END main
0
23.04.2022, 22:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.04.2022, 22:29
Помогаю со студенческими работами здесь

Как дописать условие в макросе?
помогите пожалуйста ещё... есть макрос (в суть можно не вникать) каждое действие находится...

Одно условие IF создаёт хаос во всем макросе
Добрый день! Написал макрос для индивидуальной рассылки группе получателей в столбце В....

Выполнить условие после нахождения ошибок в строке типа #н/д! #дел/0! т.д. (ошибка в макросе)
Здравствуйте уважаемые форумчане! Помогите найти ошибку в коде макроса и исправить ее. Смысл в...

В одном месте кода проверка условия срабатывает как нужно, а в другом месте кода такое же условие не срабатывает
Здравствуйте. Делаю проверку на заполнение полей. Если поля не заполнены, то вывести ошибку в...

Не срабатывает условие if()
Всем привет столкнулся с такой проблемой не срабатывает условие...

Не срабатывает условие
Проблема в том, что все условие работают а именно в четвертом выдаёт ошибку: использована...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru