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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2012, 23:37   #1
vo_sa
Пользователь
 
Регистрация: 29.10.2008
Сообщений: 15
По умолчанию простенькая программка, сложение в цикле

помогите написать программу.

Дано: X=D5A9 Y=31FF Z=5555
в цикле 3 раза к Y прибавить новое X (результат L)

PHP код:
prg_9_1.asm
masm
model    small
stack    256
.data    ;сегмент данных
.code    ;сегмент кода
PP1
:
       
shl   bx,1      ;{M*2^1}
       xor   
bx,717Fh  ;{R=M*xor Y}
       
call  PODPR     ;{вызов PODPR}
       
ret
PP2
:
       ;
mov  ax,26AA
       
and   ax,00FFh  ;{00FF}
       
sub   bx,ax     ;{R=M-(00FF)}
       
call  PODPR     ;{вызов PODPR}
       
ret
main
:    ;точка входа в программу
    
;mov    ax,@data    ;связываем регистр dx с сегментом
    
;mov    ds,ax    ;данных через регистр ax
     
;xor    ax,ax    ;очищаем ax
       mov   di
,0D5A9h  ;{XD5A9h}
       
push  ax
       mov   ax
,31FF h  ;{Y=717Fh}
       
push  ax
       mov   di
,5555h  ;{Z=5555h}
       
push  di
       mov   ax
0D5A8h  ;{X`= D5A9h}
       push  di
       mov   cx,3      ;{счётчик}
       mov   bp,sp
       xor   bx,bx
@1:    mov   ax,[bp]   ;{в цикле складываем числа  X
`, Y}
       
add   bx,ax     ;{результат L=bx}
       
mov   [bp],ax
       inc   bp
end 
так будет? ps плохо понимаю, поэтому, если не сложно, объясните ещё
vo_sa вне форума Ответить с цитированием
Старый 16.04.2012, 19:00   #2
programmisto1
Пользователь
 
Регистрация: 16.04.2012
Сообщений: 11
По умолчанию

Забыл в конце извлечь BP из стека и в конце переполнение стека и все падает. А в конце процедуры нет возврата и программа продолжает работать. Добавь в процедуру pop bP и ret и программа должна перестать пищать.
programmisto1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
простенькая прога на c++ neww Помощь студентам 7 08.11.2011 20:25
Совсем простенькая программка, про проценты ilushka2306 Помощь студентам 4 02.04.2011 17:30
Нужна простенькая программка...:P Nexen Фриланс 6 16.01.2009 18:16
Простенькая задачка Pavelhr Паскаль, Turbo Pascal, PascalABC.NET 2 11.11.2008 00:05