Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Помогите с макросом...
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Склихасовский
Здравствуйте..
Первый опыт в написании макроса...
Код
.macro    cpw
.if        @0='X'
    .if    @1='Y'
        cp    xl,yl
        cpc    xh,yh
    .elif    @1='Z'
        cp    xl,zl
        cpc    xh,zh
    .endif
.elif    @0='Y'            
    .if    @1='X'
        cp    yl,xl
        cpc    yh,xh
    .elif    @1='Z'
        cp    yl,zl
        cpc    yh,zh
    .endif
.elif    @0='Z'
    .if    @1='X'
        cp    zl,xl
        cpc    zh,xh
    .elif    @1='Y'
        cp    zl,yl
        cpc    zh,yh
    .endif
.endif
.endm

только не работает.. в чем собака..
макрос вида
CPW X,Y
сравнить 2 пары регистров (x,y,z)
Maik-vs
запустите макрос выполняться, откройте окно ассемблера и увидите, во что оттранслировался Ваш макрос. Можно использовать конструкцию вида ldi @0h,high(@1) ,здесь MNAME Y,$1234 преобразуется в ldi Yh, high($1234).
tazik
Код
.include "2313def.inc"    
.macro    cpw  
.if        @0=='X'      
     .if    @1=='Y'
         cp    xl,yl
         cpc    xh,yh
    .elif    @1=='Z'
        cp    xl,zl
        cpc    xh,zh
    .endif  
.elif    @0=='Y'
    .if    @1=='X'
        cp    yl,xl
        cpc    yh,xh
    .elif    @1=='Z'
        cp    yl,zl
        cpc    yh,zh
    .endif
.elif    @0=='Z'
    .if    @1=='X'
        cp    zl,xl
        cpc    zh,xh
    .elif    @1=='Y'
        cp    zl,yl
        cpc    zh,yh
    .endif  
.endif  
.endm

.org 0x00
    ldi YL,0x10
    ldi YH,0x40
    ldi ZL,0x05
    ldi ZH,0x04
    cpw 'Z','Y'


Вроде, вот так работает

AVR001 Conditional Assembly and portability macros
ae_
Код
.macro cpw
cp  @0L, @1L
cpc @0H, @1H
.endm

cpw X, Z
tazik
Цитата(ae_ @ Apr 26 2008, 08:45) *
Код
.macro cpw
cp  @0L, @1L
cpc @0H, @1H
.endm

cpw X, Z


Точно! Круто!!! smile.gif
Склихасовский
спасибо друзья мои..
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.