![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 13.05.2008
Сообщений: 8
|
![]()
Пишу программу для определения переменной в байт, 2 байта, 4 байта знаковая она или нет.Т.е. нужен макрос(универсальный) на входе которой идёт переменная байт,2 байта или 4 байта.Я пишу его, естественно проверки на то, какой тип у переменной, но мой макрос содержит такие строчки(обходимые джампами): mov eax,a;mov ax,a;mov al,a.Естественно он ругается просматривая код.Как мне обойти эту проблему.Мне нужен только 1 универсальный макрос.Спс за помощь
|
![]() |
![]() |
![]() |
#2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
Чет я не допонял по каким критериям ты определил что я внес в ax число со знаком?
I'm learning to live...
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 13.05.2008
Сообщений: 8
|
![]()
Вот код:
include io.asm .386 .model use16 small .stack 128 .data a dd -0 .code sign macro x local lbl,lbl1,lbl2,met,met1,met2,m1,m2 mov ax,type x cmp ax,4 jne lbl mov eax,x bt eax,31 jc lbl1 cmp eax,0 je lbl2 outint 1 newline jmp fin lbl1: outint -1 newline jmp fin lbl2: outint 0 newline jmp fin lbl: cmp ax,2 jne met mov ax,x bt ax,15 jc met1 cmp ax,0 je met2 outint 1 newline jmp fin met1: outint -1 newline jmp fin met2: outint 0 newline jmp fin met: mov al,x bt al,7 jc m1 cmp al,0 je m2 outint 1 newline jmp fin m1: outint -1 newline jmp fin m2: outint 0 newline jmp fin endm start: mov ax,@data mov ds,ax sign a fin: finish end start Смысл такой я получаю переменную, сравниваю её тип: 1 байт, 2 байта или 4. А потом проверки на последний бит,1 -отрицательный,на эквивалентность 0, если не выполнены значит положительно.Проблема в том что у меня прописано mov ax,a;mov al,a.а прочитывая код он ругается.У меня же моя переменная определена как 4 байта.Как это типа можно положить в ах.Вот в чём проблема |
![]() |
![]() |
![]() |
#4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
т.е. ты по любому считаешь все числа знаковыми?
I'm learning to live...
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 13.05.2008
Сообщений: 8
|
![]()
Ах, прости, не понял вопроса.Да, конечно, задание такое.Числа заданы знаковыми
|
![]() |
![]() |
![]() |
#6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
ага.
Ну тогда могу предложить небольшую хитрость, которую я применил когда подобное сдавал узнать тип переменной байт, слово или два слова допустим в eax мы скидываем число из этой переменной, ebx=0 тогда если eax and not bx=0 то это не двойное слово иначе если ax and not bl=0 это байт иначе слово. иначе это двойное слово Вот вроде так ... Препод соглашался. Хотя это и не очень кузявое решение
I'm learning to live...
|
![]() |
![]() |
![]() |
#7 |
Регистрация: 13.05.2008
Сообщений: 8
|
![]()
Stilet, тут вот в чем проблема.Распознать какой тип переменной я смог.У меня макрос должен быть универсальный.Т.е. я описал в макросе такие действия как mov ax,x;mov eax,x;mov al,x;Компилятор ругается.Типа нельзя кидать х одновременно еах,ах,аl.Как вот это обойти.Естественно все не нужные варианты мною пропрыгиваются.Но макрос вставляется в код.И при компиляции он всё должен прочитать, что было в макросе.Помоги плз Stilet.
|
![]() |
![]() |
![]() |
#8 |
Регистрация: 13.05.2008
Сообщений: 8
|
![]()
вот допустим в таком определении a dd -0.
Он ругается на строчки mov ax,x;mov al,x |
![]() |
![]() |
![]() |
#9 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]()
хм. Помоему твоя задача таким подходом не решается.
Я конечно в асме новичек но когда то делал так: Код:
I'm learning to live...
|
![]() |
![]() |
![]() |
#10 |
Регистрация: 13.05.2008
Сообщений: 8
|
![]()
И что это прога делает?Я что-то не особо понял
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Assembler | oleh | Помощь студентам | 2 | 24.04.2008 19:45 |
Assembler | Almost_Famous | Помощь студентам | 4 | 29.02.2008 21:54 |