Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.05.2012, 18:32   #1
in_utile
Новичок
Джуниор
 
Регистрация: 07.05.2012
Сообщений: 2
По умолчанию вопрос по стеку

добрый день
программка рисует пять окошек одно в другом.исполняемый.СОМ файл создаётся в отладчике(debug).задача-использовать процедуру,цикл и стек при написании.
код
Код:
  xor al,al
       mov bh,10
       mov ch,05
       mov cl,10
       mov dh,10
       mov dl,3e
       mov ah,06
       int 10
       mov cx,0004
0113 call 011a
       loop 0113
       int 20
011a add bh,10
       add ch,01
       add cl,01
       sub dh,01
       sub dl,01
       int 10
       ret
если не зацикливать вызов процедуры,а тупо четыре call ставить-пашет.счётчик циклов использует регистр СХ,используемый для хранения координат угла.нужно использовать стек.где же втолкнуть и вытолкнуть переменные,что бы работало?ещё и call адрес следующей команды в стек заносит.пробую,трассирую-не выходит.понимаю,что доставляет,но тем не менее.
спасибо

Последний раз редактировалось Stilet; 07.05.2012 в 21:19.
in_utile вне форума Ответить с цитированием
Старый 07.05.2012, 21:21   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
       xor al,al
       mov bh,10
       mov ch,05
       mov cl,10
       mov dh,10
       mov dl,3e
       mov ah,06
       int 10
       mov di,0004

0113 call 011a
  dec di
  cmp di,0     
  jnz 0113
int 20

011a add bh,10
       add ch,01
       add cl,01
       sub dh,01
       sub dl,01
       int 10
       ret
Идея понятна?
I'm learning to live...

Последний раз редактировалось Stilet; 07.05.2012 в 21:26.
Stilet вне форума Ответить с цитированием
Старый 07.05.2012, 22:13   #3
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

Код:
 dec di
  cmp di,0     
  jnz 0113
cmp можно не делать, dec ставит zero flag.
f.hump вне форума Ответить с цитированием
Старый 07.05.2012, 22:23   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ясно. Попробую запомнить.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.05.2012, 04:42   #5
in_utile
Новичок
Джуниор
 
Регистрация: 07.05.2012
Сообщений: 2
По умолчанию

пардон.не полностью раскрыл задачу.она чисто обучающая,на понимание работы стека при использовании для хранения данных всех доступных регистров.ваша идея понятна-свободный регистр и переход.спасибо.но мне к сожалению без PUSHей и POPов не обойтись именно для хранения значений двух переменных использующих один и тот же регистр.нужна помощь.идеи кончились,нуб же.
in_utile вне форума Ответить с цитированием
Старый 08.05.2012, 10:30   #6
f.hump
C/C++, Asm
Участник клуба
 
Аватар для f.hump
 
Регистрация: 02.03.2010
Сообщений: 1,323
По умолчанию

Код:
looplabel:
PUSH cx 
call 011a
POP cx
loop looplabel
f.hump вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
вопрос по сокетам и общение как в ICQ.Сложный вопрос... Руслантус Общие вопросы C/C++ 2 12.08.2008 21:10
вопрос по стеку C++ Mishka Помощь студентам 2 30.06.2008 20:35
Вопрос по стеку на C++ Go6a Помощь студентам 2 06.04.2008 22:07