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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2013, 01:34   #1
nati_94
Пользователь
 
Регистрация: 18.02.2013
Сообщений: 25
Восклицание найти 4й по порядку 0Dh, и вывести все эти 4 0Dh на экран

на экран почему-то ничего не выводит
мой код
Код:
.MODEL SMALL
.STACK 100h
.DATA
DAN db  3Bh,20h,0Dh,32h,0A1h,24h,0A0h,0Dh,0,0A2h,20h
db  0B0h,40h,24h,0E1h,0Dh,0,24h,3Bh,30h,0C0h,0Dh
db  20h,97h,3Bh,83h,0,0A0h,20h,0D0h,27h,20h,0C6h
db  91h,0,20h,0FEh,3Bh,90h,0,3Bh,24h,17h,20h,24h,'$'
NET     db   'KOD CR NE NAIDEN'
 
.code
start:
;инициализируем адрес сегмента данных
mov ax,@data
mov ds,ax
;поиск начального элемента в DAN
mov cx,4        ;счетчик внешних циклов
mov dx,64       ;счетчик вложенных циклов
lea si,DAN  ;нач. адрес данных
 
;начало внешнего цикла
 
EXT:    mov    bx,cx    ;сохранение сч.внешних циклов
mov cx,dx   ;загрузка сч.вложенных циклов
;вложенный цикл
LOC:
cmp byte ptr [si],0Dh;код CR?
inc si
loopne LOC;повторять,пока нет
;продолжение внешнего цикла
dec si
mov ah, byte ptr[si]
int 21h
inc si
                mov dx,cx   ;сч.вложенных циклов - в dx
    mov cx,bx   ;восстановление сч.внешних циклов
    loop    EXT ;повторять,пока не найден 4й повтор
mov    AH,4Ch   ; (8) Функция 4Ch завершения программы
int    21h      ; (10) Вызов DOS
 
end start
nati_94 вне форума Ответить с цитированием
Старый 28.03.2013, 09:28   #2
Argogo
Пользователь
 
Регистрация: 28.03.2013
Сообщений: 22
По умолчанию

Код:
.MODEL SMALL
.STACK 100h
.DATA
	DAN	db	3Bh,20h,0Dh,32h,0A1h,24h,0A0h,0Dh,0,0A2h,20h
		db  	0B0h,40h,24h,0E1h,0Dh,0,24h,3Bh,30h,0C0h,0Dh
		db  	20h,97h,3Bh,83h,0,0A0h,20h,0D0h,27h,20h,0C6h
		db  	91h,0,20h,0FEh,3Bh,90h,0,3Bh,24h,17h,20h,24h,'$'
	DanLen	=	$-DAN
	NET     db   	'KOD CR NE NAIDEN'
 
.code
start:
	;инициализируем адрес сегмента данных
	mov	ax, @DATA
	mov	ds, ax
	mov	es, ax
	;поиск 0dh
	mov	cx, DanLen
	lea	di, DAN
	mov	al, 0dh
	mov	dl, 4
	cld
@@scan:
	repne	scasb
	jne	@@not_found
	dec	dl
	jne	@@scan
	sub	cx, DanLen
	neg	cx
	lea	dx, DAN
	jmp	@@disp_n_exit
@@not_found:
	lea	dx, NET
	mov	cx, SIZEOF NET
@@disp_n_exit:
	mov	bx, 1
	mov	ah, 40h
	int	21h

        ; вывести символ перевода строки
	mov	ah, 2  
	mov	dl, 0ah
	int	21h


 	mov	ah, 4Ch	; (8) Функция 4Ch завершения программы
	int	21h	; (10) Вызов DOS
 
	end	start
^^^ выводит все символы от начала DAN по четвёртый 0dh, но, поскольку в строке DAN отсутствуют символы перевода строки(0ah), то каждая выводимая строка выводится поверх предыдущей.

Последний раз редактировалось Argogo; 28.03.2013 в 09:45.
Argogo вне форума Ответить с цитированием
Старый 28.03.2013, 11:10   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
^^^ выводит все символы от начала DAN по четвёртый 0dh, но, поскольку в строке DAN отсутствуют символы перевода строки(0ah), то каждая выводимая строка выводится поверх предыдущей.
А где в условии задачи написано, что должны выводиться символы с данными кодами?) я бы сказал, что нужно вывести значения элементов массива в 16-й системе счисления. Поэтому лучше совместить вывод и проверку на символ в один цикл...
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести на экран все знаки пунктуации. vampir3001 Помощь студентам 3 29.02.2012 12:28
Найти количество сочетаний из n по k и вывести все комбинации этих сочетаний на экран Рон99 Паскаль, Turbo Pascal, PascalABC.NET 2 14.12.2011 00:05
Не могу вывести на экран все отредактированные строки! iron-YYY Общие вопросы C/C++ 1 29.05.2009 11:12
как вывести все имеющиеся файлы в каталоге на экран? Almost456 Паскаль, Turbo Pascal, PascalABC.NET 2 24.12.2008 20:44