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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2009, 11:28   #1
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию Ввод-вывод

Необходима реализация 2 процедур ввода и ввыода. При этом если вводится не числ выводить ошибку, если перед числом введены пробелы их пропустить. TASM, use 16
Могу скинуть свой бред, если нужно, но лучше чтобы вы скинули реально работающие процедуры с объяснением, заранее спасибо
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 04.10.2009, 12:46   #2
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Быть может подойдет что-то из этого?
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 04.10.2009, 13:01   #3
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

нет вроде ничего не подходит
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 04.10.2009, 13:15   #4
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Почему же есть вполне нормальный ввод чисел, а так же их вывод.
Ну хорошо, а если такой вариант?
Код:
input:
	mov ah,0ah
	mov dx,offset buff ; аддрес буфера
	int 21h ; принимаем строку
	mov dl,0ah
	mov ah,02
	int 21h ; выводим перевод строки
	
; обрабатываем содержимое буфера
	mov si,offset buff+2 ; берем аддрес начала строки
	cmp byte ptr [si],"-" ; если первый символ минус
	jnz polozh
	mov di,1  ; устанавливаем флаг
	inc si    ; и пропускаем его
polozh:
	xor ax,ax
	mov bx,10  ; основание системы счисления
@@:
	mov cl,[si] ; берем символ из буффера
	cmp cl,0dh  ; проверям не последний ли он
	jz endin
; если символ не последний, то проверяем его на правильность
	cmp cl,30h  ; если введен неверный символ <0
	jl er
	cmp cl,39h  ; если введен неверный символ >5
	ja er

	sub cl,30h ; делаем из символа число 
	mul bx     ; умножаем на 10
	add ax,cx  ; прибовемм к остальным
	inc si     ; указатель на след символ
	jmp @b     ; повторяем

er:   ; если была ошибка, то выводим сообщение об этом и выходим
	mov dx, offset error
	mov ah,09
	int 21h
	int 20h

; все символы из буфера обработаны число находится в ax
endin:
	
	cmp di,1 ; если установлен флаг, то
	jnz @f
	neg ax   ; делаем число отрицательным
@@:

	ret  ; возвращаемся

error db "incorrect number$"
buff	db 5,6 Dup(?)
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форматированный ввод/вывод на Си Кирилиус Помощь студентам 3 16.09.2009 15:12
Ввод-вывод в С++ StudentPolitech Помощь студентам 0 04.06.2009 20:07
Ввод и вывод Mihael-Vlz Паскаль, Turbo Pascal, PascalABC.NET 3 19.01.2009 18:00