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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2011, 12:37   #1
~VL@D~
Пользователь
 
Регистрация: 09.09.2010
Сообщений: 25
Вопрос Как вывести значение на экраН??

Код:
.model small
.386
.stack 256
.data
a1 dd 0
a2 dd 0
a3 dd 0
a4 dd 0

.code

start:
mov si,0
mov ds,ax  
mov bx,0		;Смещение 0
mov es,bx
m0:
mov ax,[es:046ch]	;Ждем, когда произойдет
m1:			;тик таймера
cmp ax,[es:046ch]
je m1
db 0fh,31h		;Вызов функции RDTSC
mov a1,edx		;Старшая часть счетчика в а1
mov a2,eax		;Младшая в а2
mov ax,[es:046ch]	;Начальное значение счетчика таймера
add ax,1		;Будем ждать 1 тик
m2:
cmp ax,[es:046ch]	;Если не прошел 1 тик таймера,
jne m2		;переход на м2
db 0fh,31h		;Вызов функции RDTSC
cmp eax,a2		;Если eax>a2, то выполняем
jb m0			;заново (получим неверный результат)
sub eax,a2		;Вычитаем младшие части
sub edx,a1		;Вычитаем старшие части
mov ebx,55000	;Делим на 55000
div ebx			;0,055*1000000=55000
				;Время тика*кол. тиков
				;1000000, чтобы результат
				;получить в МГц
push eax		;В eax находится результат одного измерения,
			;сохраняем его в стеке
inc si		;Увеличиваем si
cmp si,16		;Если не проведено 16 измерений,
jne m0		;то переход на метку m0

mov edx,0		;Чтобы значение edx не участвовало в делении,
			;его надо обнулить
pop eax		;Достаем последний результат измерения из стека
m01:
pop ebx		;Теперь суммируем все измеренные значения
add eax,ebx
dec si
cmp si,1
jne m01
mov ebx,16		;Делим сумму на 16. Получаем в eax среднее
div ebx		;значение частоты процессора в МГц

push -1		;Сохраним признак конца числа
mov cx,10		;Делим на 10
l:
mov dx,0		;Очистим регистр dx
div cx		;Делим 
push dx		;Сохраним цифру
cmp ax,0		;Остался 0?
jne l			;Если нет, то продолжим
mov ah,2h
l2:
pop dx		;Восстановим цифру
cmp dx,-1		;Дошли до конца -> выход
je ex
add dx,30h		;Преобразуем число в цифру
int 21h		;Выведем цифру на экран
jmp l2		;И продолжим
ex:
mov ax,4c00h	;Выход
int 21h
end start
Есть цикл из 16 повторений, в итоге выводится среднее значение измерений. Как мне вывести значение каждого из 16 повторений на экран???

Последний раз редактировалось Stilet; 07.02.2011 в 13:48.
~VL@D~ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как вывести bmp изображение на экран?? lexuss Паскаль, Turbo Pascal, PascalABC.NET 12 09.04.2011 00:02
Как вывести на экран \n в С++ nicklan Общие вопросы C/C++ 4 30.03.2010 17:02
Win32 как вывести на экран значение переменной STill_ace Общие вопросы C/C++ 11 22.08.2009 17:47
Вывести на экран минимальное значение среди составных чисел массива. dorofei Помощь студентам 33 24.05.2009 20:42
Как вывести на экран... (Делфи)!!! DjVidan Помощь студентам 14 09.03.2009 16:31