Может ли кто просветить об нюансах структуры TEXTEQU Пишу .const k1 textequ <bufer1> .data bufer1 db "111111111",0 bufer2 db "222222222",0 Далее сам код, собственно invoke ...........,addr k1................... Всё нормально выполняется А вот далее проблема: Хочу поменять значение k1 k1=<bufer2> Далее снова код invoke ...........,addr k1................... Но значение k1 осталось прежним!!! Почему? Сама процедура большая, нужно повторить её 2 раза с разным параметром k1 Не хотелось бы её два раза прописывать из-за всего одного параметра... И в макрос тоже нехочется...
Это понятно, что можно. Но хотелось бы именно textequ такая удобная штука. Правда работает только по учебнику. Или я не знаю какого-то нюанса. (Также как я раньше не знал, что длинный jmp за пределы процедуры на нужную метку можно сделать, обязательно прописав метку не metka1: а metka LABEL FAR Тогда только на неё можно прыгнуть в любое место программы. Спасибо Юров подсказал... Вот и насчёт TEXTEQU Это же удобная штука! Но все тут молчат, словно сговорились! Партизаны, ау! Почему его использовать нельзя? Его что, боги используют, что ли? Кто нибудь знает, как можно обновить TEXTEQU ??? Не нужно писать слово ГУГЛ, плиз.
russianbil не знаю для чего нужен textequ, но вот такой код работает точно (смотри ехе в аттаче) Код (Text): .686P .model flat include windows.inc includelib user32.lib extern _imp__MessageBoxA@16:dword .code start: k1 equ bufer1 push MB_OK push offset k1 push offset k1 push 0 call _imp__MessageBoxA@16 k1 equ bufer2 push MB_OK push offset k1 push offset k1 push 0 call _imp__MessageBoxA@16 ret .data bufer1 db "111111111",0 bufer2 db "222222222",0 end start
russianbil Вот такое сочетание тоже жизнеспособно Код (Text): .686P .model flat include windows.inc include user32.inc includelib user32.lib .data bufer1 db "111111111",0 bufer2 db "222222222",0 .code start: k1 textequ <bufer1> invoke MessageBox,NULL,addr k1,addr k1,MB_OK k1 textequ <bufer2> invoke MessageBox,NULL,addr k1,addr k1,MB_OK k1 equ bufer1 invoke MessageBox,NULL,addr k1,addr k1,MB_OK k1 equ bufer2 invoke MessageBox,NULL,addr k1,addr k1,MB_OK retn end start
Спасибо. Вместо того чтобы менять значение так как Вы советуете k1 textequ <bufer1> Я писал k1=<bufer1> А то что можно поменять константу EQU вообще непонятно... Просто везде написано, что константу EQU уже нельзя изменить... Она прописана раз и навсегда... Можно поменять только textequ Оказывается, можно... ?
russianbil Многие авторы заимствуют идеи друг у друга, не удосужившись перепроверить их, так что только практика и еще раз практика