13.11.2018, 06:49 [+3 UTC]
в нашей команде: 3 096 чел. | участники онлайн: 4 (рекорд: 16)

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

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

:: все разделы

:: правила

:: новости

:: участники

:: доска почёта

:: форум

:: блоги

:: поиск

:: статистика

:: наш журнал

:: наши встречи

:: наша галерея

:: отзывы о нас

:: поддержка

:: руководство

Версия системы:
7.55 (06.11.2018)

Общие новости:
24.09.2018, 16:49

Форум:
08.11.2018, 13:36

Последний вопрос:
12.11.2018, 23:31

Последний ответ:
13.11.2018, 06:21

Последняя рассылка:
12.11.2018, 19:45

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

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

Наша кнопка:

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

Отзывы о нас:
20.10.2009, 11:01 »
LastDay
Спасибо за выражение своей точки зрения! [вопрос № 173442, ответ № 255595]
12.01.2010, 10:16 »
jeck26
Спасибо за ответ. Развеяли мои сомнения. Обязательно увеличу обьём пямяти. [вопрос № 175933, ответ № 258500]
12.10.2009, 18:37 »
Polik
Спасибо огромное! Самое оно! [вопрос № 173195, ответ № 255326]

РАЗДЕЛ • Assembler

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

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

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

Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 638
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 134
Evgen aka Chuma
Статус: 6-й класс
Рейтинг: 15

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

Консультация онлайн # 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)
Размер переменных(байт)

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

тег CODE
--------

• Отредактировал: Зенченко Константин Николаевич (Модератор)
• Дата редактирования: 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.16507 сек.

© 2001-2018, Портал RFPRO.RU, Россия
Калашников О.А.  |  Гладенюк А.Г.
Версия системы: 7.55 от 06.11.2018