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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.09.2012, 22:22   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию Написать программу для сложения всех элементов строки (нужно на TASMe)

Здравствуйте!! Нужно написать программу, в которую вводится строка цифр, а выводится их сумма, например вводим 123876, а получаем 1+2+3+8+7+6=27, число 27 выводим на экран, для написании программы используется ТАСМ, вот моя нерабочая версия программы
Код:
Code Segment Para public 'Code'
   Assume CS:Code,DS:Code,SS:Code,ES:Code
   ORG 100h 
   Mov DX,Code
   Mov DS,DX
   Mov SS,DX
   Mov ES,DX
jmp m100
par1 label byte
max1 db 100
rd1 db ?
str1 db 101 dup(?)
m100:mov ah,10
lea dx,par1
int 21h
mov ah,2
mov dl,0ah
int 21h
mov ah,2
mov dl,0dh
int 21h
mov bh,0
lea si,str1
mov cl,rd1
m1:mov bl,[si]
   sub bl,30h
add bh,bl
loop m1
mov bl,0
mov bl,bh
mov ah,2
add bh,30h
mov dl,bh
int 21h
mov ah,2
add bl,30h
mov dl,bl
int 21h
mov ah,1
int 21h
   Mov AH,4Ch
   Int 21h
   Code Ends
   end
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 06.09.2012, 23:28   #2
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

ну и что это за белеберда? мне нужен код, написанный на ассемблере, используя тасм, желательно использовать те же команды, что и у меня
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 07.09.2012, 07:37   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

1. Для com - файла не нужна инициализация сегментных регистров
Цитата:
Код:
   Mov DX,Code
   Mov DS,DX
   Mov SS,DX
   Mov ES,DX
2.
Цитата:
Код:
par1 label byte
- в принципе, это тоже лишнее. Можно просто загрузить адрес max1, чтобы получить в dx то же смещение
3. Вопрос по существу:
Цитата:
вот моя нерабочая версия программы
как именно не работает ваша программа? (есть подозрение, что выводит не то, что вы хотите)
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 07.09.2012 в 07:47.
DiemonStar вне форума Ответить с цитированием
Старый 07.09.2012, 10:46   #4
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Код:
Code Segment Para public 'Code'
   Assume CS:Code,DS:Code,SS:Code,ES:Code
   ORG 100h
start:
jmp m100
par1 label byte
max1 db 100
rd1 db ?
str1 db 101 dup(?)
m100:mov ah,10
lea dx,par1
int 21h
mov ah,2
mov dl,0ah
int 21h
mov al,0
lea si,str1
mov cl,rd1
m1:mov bl,[si]
   sub bl,30h
add al,bl
inc si
loop m1
mov ah,0
	mov bx,10	;основание системы
	xor cx,cx	;в сх будет количество цифр в десятичном числе
@@m1a:	xor dx,dx
	div bx		;делим число на степени 10
	push dx		;и сохраняем остаток от деления(коэффициенты при степенях) в стек
	inc cx		;увеличиваем количество десятичных цифр числа
	test ax,ax	;после деления остался 0?
	jnz @@m1a	;если нет, продолжаем
	mov ah,2        ;ф-я вывода символа
@@m2a:	pop dx		;взять из стека цифру цисла
	add dl,'0'	;преобразовываем цифру в ASCII символ
	int 21h		;вывести на экран
	loop @@m2a	;все цифры
mov ah,1
int 21h
   Mov AH,4Ch
   Int 21h
   Code Ends
   end start
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 08.09.2012, 18:44   #5
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
Лампочка

извините пожалуйста, но я не понял алгоритма, можете словами еще проще написать? а так код был почти рабочим, у меня строка не вводилась если писал
Код:
start:
end start
а работает при этих командах
Код:
 Mov DX,Code
   Mov DS,DX
   Mov SS,DX
   Mov ES,DX
может компилятор такой а создавал не com, а exe
from dark to light)

Последний раз редактировалось Алексей_2012; 08.09.2012 в 19:05.
Алексей_2012 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужно написать программу для криптографии айкоша C++ Builder 4 10.05.2012 21:00
Нужно написать программу для twite.ru epog333 Фриланс 9 24.11.2011 06:13
Нужно написать программу для автосерфинга tima777 Фриланс 4 15.08.2011 02:32
Нужно написать программу (для фрилансеров) Saka Помощь студентам 0 11.05.2010 18:57
нужно написать программу для rusbolik Фриланс 4 02.10.2009 13:15