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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2011, 00:12   #1
квант
 
Регистрация: 07.12.2011
Сообщений: 3
По умолчанию assembler.tasm. Запись результата в файл .txt

Я совсем новичок в assembler'e.
Имеется следующая задача:
"вычислить выражение a*b/c-d и записать результат в файл RES.TXT. при этом сформировать звук частотой 1000 ГЦ ,а длительность считать из файла SOUND.TXT"
При этом нужно, чтобы на экран выводилось сообщение типа "username ответ". (username - любое слово)
с вычислением, выводом на экран результата в виде "username ответ" проблем не возникло.
нужна помощь только в 2 вопросах:
перед ответом выводятся ненужные нули. как убрать?
в файл res.txt заносится только цифровой ответ. username не хочет заноситься. как поправить?

исходный код программы:
Код:
.286
.model small
.stack 256
.data
        msg db 13,10,'username','$'
        an db 6  ;пременные
	bn db 5
	cn db 3
	dn db 1
	buffer db 3 dup(?)           ; буфер дл перекодировки
	filename db 'RES.TXT',0      ; записать результат
	soundfile db 'SOUND.TXT',0   ; файл откуда читаем частоту звука
	ascval db 10 dup(30h),'$'    ; Массив цифр для вывода
	x dw ?
.code
	include common.inc
start:
	mov ax,@data
	mov ds,ax
	mov al,an
	mul bn                 ; умножение чисел
	div cn                 ; деление
	sub al,dn              ; вычитание
	xor ah,ah              ; очистка остатка от деления
	mov x,ax
	push 10                ; перевод чила в строку
	push offset buffer+3   ;  поместить в стек указатель на буфер смещённый на 3 байта вправо
	push ax                ;
	mov ah,3Ch             ; создание файла в текущем каталоге
	xor cx,cx              
	mov dx,offset filename ;  загрузка указателя на имя файла
	int 21h                ; создание файла res.txt
	mov bx,ax              ; загружаем дескриптор файла в bx
	call num2str           ; перевод числа в строку функцией, содержащейся в фале comon.inc
	add sp,6               :переместить указатель стека на 6 байт
	mov cx,offset buffer+3 ;загрузка числа записываемых в байт
	sub cx,ax 
	mov dx,ax              ; адре буфера с данными

	
	mov ah,9
	lea dx, msg
	int 21h
        call outp
               
	mov ah,40h             ; Номер функции записи в  файл
	int 21h
	mov ah,3Eh             ;закрываем файла res.txt
	int 21h
	mov ax,3D00h           ; открываем файл sound.txt
	mov dx,offset soundfile   ; адрес имени файла
	xor cl,cl
	int 21h
	mov ah,3Fh             ; читаем файл sound.txt в буфер
	mov dx,offset buffer   ; адрес буфера куда будут читаться данные
	mov cx,4               ; число считываемых байт
	int 21h
	push 10                ; превод строки в число(система счисления)
	push offset buffer  ; запись в стек указателя буфера
	push 4               ;   длина строки
	call str2num           ; перевод строки в число
	add sp,6
	push 1000              ;частота звучания
	call sound
	add sp,2
	push 0                  
	push ax  
	call pause
	add sp,4              
	call nosound
	mov ah,3Eh             ; закрываем файл
	int 21h
	call exit              ; выход из программы
end start
p.s. просьба не ругать за кривость кода я только учусь

Последний раз редактировалось квант; 15.12.2011 в 00:32.
квант вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запись результата в файл glebcherednik Помощь студентам 5 12.12.2011 20:15
Задачи: Сортировка символьной информации в строке, заданной пользователем.; Чтение и запись данных в файл (Assembler,TASM) User22 Помощь студентам 2 01.12.2011 11:40
Обработка текста и запись результата в отдельный файл MrakSPb Общие вопросы C/C++ 2 20.12.2009 01:41
запись результата в файл, С++ Chaynik011091 Помощь студентам 0 02.07.2009 18:37