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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2011, 13:39   #1
grongost
Пользователь
 
Регистрация: 09.09.2010
Сообщений: 12
По умолчанию Составить программу для вычисления функции у(х)

в Assemblere
Составить программу для вычисления функции у(х):
|x/4, если х кратно 4
y(x)=|4х, иначе
Протестировать программу при следующих значениях исходных данных: a) x= 8; b) x= 5

.Model Small ;определение модели памяти
.Stack 100h ;начало сегмента стека
.Data ;начало сегмента данных
y dw ? ;определение данных
x dw 8
;===============================
.Code ;начало сегмента кода
begin:
mov ax,@Data ;загрузка в регистр ds адреса сегмента данных
mov ds,ax
mov ax,x
mov bx,4
cmp ax,0
jl var1 ;x кратно 4
jae var2 ;иначе
var1:mov ax,x
idiv ax,bx ;x/4
jmp exit
var2:mov ax,x
imul ax,4
exit: mov y,ax ;запись результата в y
mov ah,4ch ;выход из программы
int 21h
end begin


при х=5 считает всё нормально, а вот когда х=8 не получяетться выполнить условие "х кратно 4"

Последний раз редактировалось grongost; 20.02.2011 в 13:42.
grongost вне форума Ответить с цитированием
Старый 20.02.2011, 14:33   #2
VadikV
Форумчанин
 
Аватар для VadikV
 
Регистрация: 08.01.2011
Сообщений: 226
По умолчанию

"х кратно 4", это значит делится на 4 без остатка. а ты просто сравниваешь число с четверкой. для кратности четырем достаточно проверить два младших бита. они должны быть равны нулю
icq 223-630-454
e-mail vysotskiy@list.ru
сайт http://www.big-library.net/
VadikV вне форума Ответить с цитированием
Старый 21.02.2011, 19:45   #3
grongost
Пользователь
 
Регистрация: 09.09.2010
Сообщений: 12
По умолчанию

.Code ;начало сегмента кода
begin:
mov ax,@Data ;загрузка в регистр ds адреса сегмента данных
mov ds,ax
mov ax,x
mov bx,4
cmp ax,0
jae var1
cmp ah,0
jae var2
var2:mov ax,x
idiv bx
jmp exit
var1:mov ax,x
imul bx
exit: mov y,ax
mov ah,4ch
int 21h
end begin


в этом коде получается только деление
grongost вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
составить программу для вычисления значения функции и результаты выдать на печать. Бейсик SvetlanaFF Помощь студентам 13 28.10.2018 19:24
Составить программу для вычисления значений функции в Delpi Queen Помощь студентам 5 30.05.2010 20:13
Составить программу в delphi для вычисления значений функции на отрезке [a,b] с шагом h. Queen Помощь студентам 1 30.05.2010 15:39
Составить программу для вычисления значения функции и результаты выдать на печать Pleasant_girl Помощь студентам 8 22.12.2009 22:57
составить программу для вычисления значения функции и результаты выдать на печать. Бейсик nata89 Помощь студентам 1 06.12.2008 19:53