реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Помогите с макросом...
Склихасовский
сообщение Apr 25 2008, 11:31
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 29-11-06
Пользователь №: 22 912



Здравствуйте..
Первый опыт в написании макроса...
Код
.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)
Go to the top of the page
 
+Quote Post
Maik-vs
сообщение Apr 25 2008, 12:21
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 246
Регистрация: 4-12-06
Пользователь №: 23 101



запустите макрос выполняться, откройте окно ассемблера и увидите, во что оттранслировался Ваш макрос. Можно использовать конструкцию вида ldi @0h,high(@1) ,здесь MNAME Y,$1234 преобразуется в ldi Yh, high($1234).

Сообщение отредактировал Maik-vs - Apr 25 2008, 12:22
Go to the top of the page
 
+Quote Post
tazik
сообщение Apr 25 2008, 13:52
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691



Код
.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
Go to the top of the page
 
+Quote Post
ae_
сообщение Apr 26 2008, 00:45
Сообщение #4


Участник
***

Группа: Свой
Сообщений: 462
Регистрация: 2-04-07
Из: Иркутск
Пользователь №: 26 695



Код
.macro cpw
cp  @0L, @1L
cpc @0H, @1H
.endm

cpw X, Z
Go to the top of the page
 
+Quote Post
tazik
сообщение Apr 26 2008, 05:40
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 195
Регистрация: 13-05-07
Из: Норильск
Пользователь №: 27 691



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

cpw X, Z


Точно! Круто!!! smile.gif
Go to the top of the page
 
+Quote Post
Склихасовский
сообщение Apr 26 2008, 05:51
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 29-11-06
Пользователь №: 22 912



спасибо друзья мои..
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 08:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01409 секунд с 7
ELECTRONIX ©2004-2016