19.09.2018, 09:15 [+3 UTC]
в нашей команде: 2 971 чел. | участники онлайн: 3 (рекорд: 21)

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

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

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

:: правила

:: новости

:: участники

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

:: форум

:: блоги

:: поиск

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

:: наш журнал

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

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

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

:: поддержка

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

Версия системы:
7.50 (13.09.2018)

Общие новости:
13.04.2018, 10:33

Форум:
18.09.2018, 08:51

Последний вопрос:
18.09.2018, 15:34

Последний ответ:
19.09.2018, 08:03

Последняя рассылка:
18.09.2018, 17:15

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

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

Наша кнопка:

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

Отзывы о нас:
07.03.2010, 16:11 »
Dimon4ik
Спасибо. Классные сайты. [вопрос № 177098, ответ № 259960]
12.08.2010, 11:26 »
Dimon4ik
Большое спасибо за четкий, разверутый и очень полезный ответ. [вопрос № 179678, ответ № 262791]
08.01.2010, 22:47 »
Eretikaf
Оперативно отреагировал, и достаточно долго консультовал меня по моему вопросу огромное спасибо! [вопрос № 175925, ответ № 258472]

РАЗДЕЛ • Assembler

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

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

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

Зенченко Константин Николаевич
Статус: Модератор
Рейтинг: 179
Лысков Игорь Витальевич
Статус: Старший модератор
Рейтинг: 94
Kdsfofwe21
Статус: 1-й класс
Рейтинг: 51

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

Консультация онлайн # 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.15110 сек.

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