24.04.2019, 18:05 [+3 UTC]
в нашей команде: 3 567 чел. | участники онлайн: 3 (рекорд: 21)

:: РЕГИСТРАЦИЯ

задать вопрос

все разделы

правила

новости

участники

доска почёта

форум

блоги

поиск

статистика

наш журнал

наши встречи

наша галерея

отзывы о нас

поддержка

руководство

Версия системы:
7.74 (12.04.2019)
JS-v.1.33 | CSS-v.3.35

Общие новости:
09.03.2019, 10:08

Форум:
22.04.2019, 13:50

Последний вопрос:
24.04.2019, 17:22
Всего: 149367

Последний ответ:
24.04.2019, 17:03
Всего: 258246

Последняя рассылка:
24.04.2019, 13:15

Писем в очереди:
0

Мы в соцсетях:

Наша кнопка:

RFpro.ru - здесь вам помогут!

Отзывы о нас:
20.12.2010, 23:14 »
pretender8901
Разжевано и в рот положено. Только вот вдова не хочет до суда дело доводить, т.к. ей в скором времени будет произведена выплата субсидии по программе молодая семья [вопрос № 181403, ответ № 264946]
22.10.2009, 21:38 »
Яна
Большое спасибо за подробный оперативный ответ. [вопрос № 173576, ответ № 255726]
02.03.2010, 20:58 »
JayK
Еще раз спасибо за полный и точный ответ, сколько уже страдаю от необходимости вбивать в t9 медтерминологию после каждого ХР... [вопрос № 176959, ответ № 259837]

РАЗДЕЛ • Assembler

Создание программ на языке Assembler.

[администратор рассылки: Лысков Игорь Витальевич (Старший модератор)]

Лучшие эксперты в этом разделе

Зенченко Константин Николаевич
Статус: Старший модератор
Рейтинг: 390
Коцюрбенко Алексей Владимирович
Статус: Модератор
Рейтинг: 351
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 97

Перейти к консультации №:
 

Консультация онлайн # 193532
Раздел: • Assembler
Автор вопроса: MrKsi (Посетитель)
Отправлена: 09.09.2018, 22:18
Поступило ответов: 1

Здравствуйте! У меня возникли сложности с таким вопросом:
Требуется написать программу на языке программирования Assembler ,которая бы высчитывала результат двух оперантов по следующей формуле: z=(oper1+oper2)*oper1/oper2-oper1
Примерно задача решена так:

Код (Assembler) :: выделить код
SEG1 	SEGMENT
A DB 14
D DB 6
REZ DB ? 
SEG1 	ENDS

CODE 	SEGMENT
ASSUME CS:CODE, DS:SEG1 
START:	 	
	mov al, D 
	mul al 
	mov bx, ax 
	mov al, A 
	mul al 
	sub bx, ax 
	mov ax, bx 
	mov al, D 
	mul al 
	mul bx 
	mov chisl, ax 
	mov al, D 
	add al, A 
	mul al 
	mov znam, ax 
	mov ax, chisl 
	div znam 
	sub ax, dif 
	mov REZ, al
CODE ENDS
END START


Однако результат 32 не был так и получен:( В чё же ошибки помогите их найти и справить?
Ассемблер(MASM.EXE)
DOS(16-bit CPU) модель памяти(SMALL)
Размер переменных(байт)

Заранее благодарю!

Последнее редактирование 09.09.2018, 23:06 Зенченко Константин Николаевич (Старший модератор)

Состояние: Консультация закрыта

Здравствуйте, MrKsi!

Формула, реализованная в программе

И она не равна формуле с задания:

Если Вы пытались упростить формулу, то сделали это не правильно.

Код который реализует задание:

Код (Assembler) :: выделить код
model	small
.data
A	db	14
D	db	6
.stack
.code
;настраиваем сегмент
begin:	mov	ax,@data
	mov	ds,ax
;загружаем данные
	mov	al,A
	mov	bl,D
;формула задания
	mul	al	;=A^2
	div	bl	;=A^2/D
;выводим на экран
	aam
	or	ax,'00'
	push	ax
;старшую цифру
	mov	al,ah
	int	29h
;младшую цифру
	pop	ax
	int	29h
;выходим
	mov	ax,4c00h
	int	21h
	end	begin

Удачи!


Консультировал: Зенченко Константин Николаевич (Старший модератор)
Дата отправки: 10.09.2018, 12:22

Рейтинг ответа:

0

[подробно]

Сообщение
модераторам

Отправлять сообщения
модераторам могут
только участники портала.
ВОЙТИ НА ПОРТАЛ »
регистрация »

Мини-форум консультации № 193532

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 1

= общий = | 09.09.2018, 23:14 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
MrKsi:

Вы точно получили работающий код?

© Цитата:
**Error** 180909.ASM(20) Undefined symbol: CHISL
**Error** 180909.ASM(24) Undefined symbol: ZNAM
**Error** 180909.ASM(25) Undefined symbol: CHISL
**Error** 180909.ASM(26) Undefined symbol: ZNAM
*Warning* 180909.ASM(26) Argument needs type override
**Error** 180909.ASM(27) Undefined symbol: DIF

smile

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Зенченко Константин Николаевич
Старший модератор

ID: 31795

# 2

= общий = | 09.09.2018, 23:24 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
MrKsi:

1) настройка регистра DS
2) переменные см. выше

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Лысков Игорь Витальевич
Старший модератор

ID: 7438

# 3

= общий = | 10.09.2018, 11:12 | цитировать цитировать  | профиль профиль  |  отправить письмо в личную почту пейджер
MrKsi:

Я бы даже сказал: программа вообще не решает поставленную задачу:

© Цитата:
z=(oper1+oper2)*oper1/oper2-oper1
Такое стойкое чувство, что Вы взяли код у одногруппника (или еще где), добавили свой сегмент данных, и дали нам, как решение...
Может все же попытаемся самостоятельно написать? А мы Вам поможем (поможем, а не сделаем за Вас!)

=====
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен

 

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Яндекс Rambler's Top100

главная страница | поддержка | задать вопрос

Время генерирования страницы: 0.16065 сек.

© 2001-2019, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.74 от 12.04.2019
Версия JS: 1.33 | Версия CSS: 3.35