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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.02.2012, 17:25   #1
RikkiTan
Пользователь
 
Аватар для RikkiTan
 
Регистрация: 15.11.2011
Сообщений: 62
По умолчанию Assembler.Поиск суммы

Доброго времени суток.
Задали сделать лабораторную работу по ассемблеру.
Я её вроде как сделал и она работает, но если ввести числа, которые больше 05, то ответ получается трехзначным и выводится какая-то ерунда. Я хотел спросить как вывести трехзначное число. Посмотрел на сайтах код вывода, попробовал его, но ничего не получается, программа просто зависает.

Вот код моей программы:

Код HTML:
masm
model small
org	100h
stack 256
.data
a	db	n dup(0)
summa	dw	0
fact	dw	1
vvod	db	0ah,0dh,"BBog: ",'$'
vivod	db	0ah,0dh,"Pe3yJIbTaT: ",'$'
.code
main:	mov	ax,@data
	mov	ds,ax
	mov	cx,n
	lea	si,a
	
	mov	ah,09h
	lea	dx,vvod
	int	21h

;Ввод чисел(двухзначных без знака)								    
cycl1:	mov	ah,01h						    
	int	21h                                                							
	mov	bh,al						   	
	int	21h						   	
	mov	bl,al						   	
	mov	ax,bx 						    
	and	ax,0f0fh					 
	aad							  	
	mov	byte ptr[si],al					   
	inc	si						    
	mov	ah,02h						   	
	mov	dl,' '						   
	int	21h						    
	loop	cycl1 						    	


	xor	bx,bx
	xor	ax,ax
	mov	cx,n-3
	lea	si,a+2

;Нахождение суммы выражения	
cycl2:	
	mov	dx,fact
	mov	al,byte ptr[si]
	inc	dx
	mov	fact,dx
	cmp	al,8
	inc	si
	jl	cycl2
	mul	al
	mov	bx,ax
	xor	ax,ax
	mov	al,1
	mov	bh,2

factory:
	mul	bh         
	inc	bh
	dec	dx
	cmp	dx,0	
	jne	factory
		
	add	ax,bx
	add	summa,ax
	loop	cycl2
		

	xor	ax,ax
	mov	ah,09h
	lea	dx,vivod
	int	21h
	xor	dx,dx
	xor	cx,cx
	xor	ax,ax	


; Вывод результат								        
       	mov 	ax,summa						
       	aam 							        
        add	ax,3030h 					        
       	mov 	dl,ah 						        
       	mov 	dh,al                                                   
       	mov 	ah,02h						        
       	int 	21h 					  	        
       	mov 	dl,dh 					   	        
       	int 	21h                                                     
	                                                                
	                                                                
exit:	mov	ax,4c00h                                                
	int	21h                                                     
end	main
Изображения
Тип файла: jpg Условие задачи.jpg (8.7 Кб, 143 просмотров)
Вложения
Тип файла: zip Моя прграмма.zip (4.9 Кб, 9 просмотров)
RikkiTan вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Assembler.Поиск суммы RikkiTan Помощь студентам 0 29.02.2012 16:55
Составить программу вычисления двойной суммы(assembler) grongost Помощь студентам 1 26.02.2011 11:31
Составить программу вычисления двойной суммы (Assembler) fuzo Помощь студентам 3 13.02.2011 22:08
Поиск суммы Janette Помощь студентам 2 24.02.2008 12:56
Поиск суммы Janette Паскаль, Turbo Pascal, PascalABC.NET 2 23.02.2008 21:39