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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2011, 16:01   #1
Nail361
Новичок
Джуниор
 
Регистрация: 24.03.2011
Сообщений: 5
По умолчанию Простейшие вычисления

Препод в инсте дал задание по ассемблеру, написать прогу:

Вычислить значение выражения 150 / 5 - 35 / 7 + 210 / 3. Полученный результат записать в регистр DL. В регистр DH записать 0

Прошу помощи, так как я вообще полный ноль в ассемблере, напишите программу эту, только самым простым способом, потому что он не поверит что я такой нуб смог написать каким-нито способом умным. Заранее Спасибо!! Нужно к завтрашнему дню это мне, так что если кто желает помочь - сделайте это пожалуйста сегодня. Думаю вам - программистам, это не составит труда, а меня выручите
Nail361 вне форума Ответить с цитированием
Старый 24.03.2011, 16:44   #2
TEHb
Пользователь
 
Регистрация: 28.01.2009
Сообщений: 32
По умолчанию

Держи. компиль под MASM 5.0. Может не коректно и некрасиво НО работает!
Код:
DATA SEGMENT
OPER1 DB 150
OPER2 DB 5
OPER3 DB 35
OPER4 DB 7
OPER5 DB 210
OPER6 DB 3
RESULT1 DB 0
RESULT2 DB 0
RESULT3 DB 0
DATA ENDS
CODE SEGMENT
ASSUME CS: CODE, DS: DATA
START: 	mov AX,DATA
       	mov DS, AX

	xor AX,AX
	
	mov AL,OPER1      
	div OPER2
	
	mov RESULT1,AL
	
	mov AL,OPER3      
	div OPER4
	
	mov RESULT2,AL
	
	mov AL,OPER5      
	div OPER6
	
	mov RESULT3,AL
	
	mov DL,RESULT1
	
	sub DL,RESULT2
	add DL,RESULT3
		
	mov AH,4CH
	int 21H
CODE ENDS
END START
проще, держи коды+masm запусти add.cmd
asm.rar

отпишись как сдаш, интерестно узнать, что это сказали!!

Последний раз редактировалось TEHb; 24.03.2011 в 16:56.
TEHb вне форума Ответить с цитированием
Старый 24.03.2011, 16:59   #3
Nail361
Новичок
Джуниор
 
Регистрация: 24.03.2011
Сообщений: 5
По умолчанию

Спасибо, очень похоже на правду, только видимо у нас немного другая версия, потому что вот пример кода обычной операции сложения (взял из готового примера):
Код:
;prg_02.asm Вычисление суммы чисел..
masm
model	small
stack	256
.data
a	db	254
.code				;сегмент кода
main:
	mov	ax,@data
	mov	ds,ax
;...
	xor	ax,ax
	add	al,17
	add	al,a
	jnc	m1		;если нет переноса, то перейти на m1
	adc	ah,0		;в ax сумма с учетом переноса
m1: ;...
	exit:
	mov	ax,4c00h	;стандартный выход
	int	21h
end main			;конец программы
Но думаю смогу переделать наверно под свою версию. Спасибо тебе, ты настоящий друг
Nail361 вне форума Ответить с цитированием
Старый 24.03.2011, 17:11   #4
Nail361
Новичок
Джуниор
 
Регистрация: 24.03.2011
Сообщений: 5
По умолчанию

Попробовал переделать, получилось вот так:

Код:
masm
model small
stack 256
.data
OPER1 DB 150
OPER2 DB 5
OPER3 DB 35
OPER4 DB 7
OPER5 DB 210
OPER6 DB 3
RESULT1 DB 0
RESULT2 DB 0
RESULT3 DB 0
.code

main: 	mov ax,@data
       	mov ds, ax

	xor ax,ax
	
	mov al,OPER1      
	div OPER2
	
	mov RESULT1,al
	
	mov al,OPER3      
	div OPER4
	
	mov RESULT2,al
	
	mov al,OPER5      
	div OPER6
	
	mov RESULT3,al
	
	mov dl,RESULT1
	
	sub dl,RESULT2
	add dl,RESULT3
exit:		
	mov ah,4c00h
	int 21h

end main
Выдаётся ошибка: proga.asm<41> Constant too large. Не знаю что с этим делать
Nail361 вне форума Ответить с цитированием
Старый 24.03.2011, 17:52   #5
Nail361
Новичок
Джуниор
 
Регистрация: 24.03.2011
Сообщений: 5
По умолчанию

во блин, вроде понял, в конце самом нада не ah,4c00h а ax,4c00h. Видимо просто опечатка
Nail361 вне форума Ответить с цитированием
Старый 25.03.2011, 04:11   #6
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Nail361
Для завершения программы достаточно mov ah,4Ch
на оригинале это звучит так:
AH = 4Ch - "EXIT" - TERMINATE WITH RETURN CODE
Entry: AL = return code
Return: never returns
Notes: unless the process is its own parent, all open files are closed and all memory belonging to the process is freed

А сама программа яйца выеденного не стоит
Код:
.286
.model	small
.code				;сегмент кода
main: mov dh,0
        mov dl,(150 / 5 - 35 / 7 + 210 / 3)
	mov	ah,4Ch	;стандартный выход
	int	21h
end main			;конец программы

Последний раз редактировалось Mikl___; 25.03.2011 в 04:16.
Mikl___ вне форума Ответить с цитированием
Старый 25.03.2011, 04:22   #7
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

предлагаю ещё чуть сократить )

Код:
mov  dx, 05Fh
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 25.03.2011, 17:39   #8
Nail361
Новичок
Джуниор
 
Регистрация: 24.03.2011
Сообщений: 5
По умолчанию

да ладно) чё прям так можно написать? - mov dl,(150 / 5 - 35 / 7 + 210 / 3)

Тогда чё я парился ёпт))) Ну хотя я сдал в общем сегодня ему задачу эту, он принял, всё норм, теперь другое задание, там чё-то про булевые операции. В общем я пока не разбирался, но похоже скоро появится новая тема с заданием от меня)))
Nail361 вне форума Ответить с цитированием
Старый 25.03.2011, 22:52   #9
Ibanez Wizard
Адский тунеядец
Форумчанин
 
Аватар для Ibanez Wizard
 
Регистрация: 11.06.2010
Сообщений: 164
По умолчанию

Меня давно интересовал вопрос. Почему пишут

mov ah,4Ch
int 21h

Ведь проще и быстрее написать
int 20h
Тоже ведь выход из программы?
Так в чем разница?
Ibanez Wizard вне форума Ответить с цитированием
Старый 25.03.2011, 23:03   #10
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Цитата:
А сама программа яйца выеденного не стоит

Код:
.286
.model	small
.code				;сегмент кода
main: mov dh,0
        mov dl,(150 / 5 - 35 / 7 + 210 / 3)
	mov	ah,4Ch	;стандартный выход
	int	21h
end main			;конец программы
Гы-гы-гы.
Надо было больше смайликов поставить.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Простейшие циклы. margarit Паскаль, Turbo Pascal, PascalABC.NET 5 13.01.2011 11:55
Простейшие циклы. Wild_klas Помощь студентам 2 08.11.2010 18:13
Простейшие вычисления AcidBurst Помощь студентам 3 01.11.2010 10:48
Простейшие циклы. tema654 Помощь студентам 0 11.10.2010 22:51
Простейшие задачки zoza1 Общие вопросы Delphi 1 11.09.2009 21:10