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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.02.2011, 16:52   #1
Chack
Новичок
Джуниор
 
Регистрация: 06.02.2011
Сообщений: 2
По умолчанию Разработка программы тестирования 64 Кб памяти циклическим тестом на ассемблере!

Есть текст программы теста одной ячейки.Я не понимаю как ее изменить чтоб она проверяла циклическим сдвигом 64Кб памяти и выводила результат на экран.Вот прога:
.model small
.data
t1 db 00010110b
t2 db 11101001b
pow1 db 'test1 ok',"$"
pow2 db 'test1 wrong',"$"
pow3 db 'test2 ok',"$"
pow4 db 'test2 wrong',"$"
pow5 db " ","$"
.code
begin:
mov ax,@data
mov ds,ax
mov bl,t1
mov [55f8h:0005h],bl
mov cl,[55f8h:0005h]
cmp bl,cl
je m1
mov ah,09h
lea dx,pow2
int 21h
jmp roz2
m1: mov ah,09h
lea dx,pow1
int 21h
roz2: mov bl,t2
mov ah,09h
lea dx,pow5
int 21h
mov [55f8h:0005h],bl
mov cl,[55f8h:0005h]
cmp bl,cl
je m3
mov ah,09h
lea dx,pow4
int 21h
jmp exit
m3: mov ah,09h
lea dx,pow3
int 21h
exit: mov ax,4c00h
int 21h
end begin
Chack вне форума Ответить с цитированием
Старый 07.02.2011, 09:07   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Chack
Код:
.model small
.286
.code
start:  mov ax,@data
	mov ds,ax
	mov bx,offset end_data; чтобы не стереть из памяти надписи "test memory OK!" и "memory is wrong"
	add bx,0Fh; пишем в сегмент памяти под этими надписями
	shr bx,4; делаем смещение от надписей кратным 16
	add ax,bx; и загружаем адрес сегмента в ES
	mov es,ax
	mov di,0FFFEh
a1:	mov es:[di],di; значение адреса будет проверочным числом
	mov ax,es:[di]
	cmp ax,di
	jne a2; если не совпало, тогда значение в DI указывает на сбойную ячейку
	sub di,2; проверяем по два байта за раз
	jnz a1; если DI=0 значит тест закончен
	mov dx,offset good
	jmp a3
a2:	mov dx,offset bad
a3:	mov ah,9; выводим сообщение на экран
	int 21h
	mov ah,0; ждем пока не нажмут на любую клавишу
	int 16h	
	mov ah,4Ch; выходим из программы
	int 21h
.data
good db 'test memory OK!$'
bad db 'memory is wrong$'
end_data db ?
end start

Последний раз редактировалось Mikl___; 07.02.2011 в 09:17.
Mikl___ вне форума Ответить с цитированием
Старый 09.02.2011, 23:39   #3
Chack
Новичок
Джуниор
 
Регистрация: 06.02.2011
Сообщений: 2
По умолчанию

Спасибо Mikl___ огромное.Спасешь жизнь!!!!)))
Chack вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа для тестирования памяти, тестирование ячеек памяти Hunter557 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 30.01.2011 19:20
Программа для тестирования FPU на ассемблере! stripe Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 30.03.2010 18:25
Разработка компьютерной системы тестирования модулей постояной памяти БУТП hidalgo Общие вопросы Delphi 4 02.06.2009 17:52
Нужна помощь в написании программы тестирования на Delphi Vindigo Помощь студентам 2 07.12.2007 17:46