Люди напишите мне в виде кода данный макрос... ну не опытный я... ))) _aam macro num ;ah=al/num;al=al mod num db 0D4h, num endm _aad macro num ;al=ah*num+al;ah=0 db 0D5h, num endm _aam 10h не посылайте меня в гугл, не говорите почитайте вот это, а просто переведите в код. Огромное вам спасибо!!! Я думаю у вас это заняло не больше 1 минуты ...
Код (Text): db 0D4h, 10h это и есть команда aam. просто в масме не поддерживаются все ее плюшки. делитель или множитель можно задавать. это и фиксится. т.е. по хорошему aam эквивалентно db 0D4h 0Ah с помощью этого макроса можно задавать произвольный делитель т.е. aam 10h эквивалентно db 0D4h, 10h. но масм будет ругаться на aam 10h
Zadrot, Если прочитать странички Intel SDM/AMD APM про инструкции aam/aad, можно заметить (no mnemonic)/(None) в соответствующей графе таблицы. Передовые ассемблеры понимают формат а-ля aam imm8, для MASM приходится использовать прямолинейную генерацию опкода побайтно через директиву db. В этом и состоит сокровенный смысл этих макроинструкций: заменить _aam X на db 0D4h, X, к примеру. P.S. aam 0 вызывает #DE, ага.
OPTION NOKEYWORD:<aam aad> aam macro num db 0D4h IFDIF <num>,<> db num ELSE db 0Ah ENDIF endm aad macro num db 0D5h IFDIF <num>,<> db num ELSE db 0Ah ENDIF endm