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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2010, 23:17   #1
FromShadow
 
Регистрация: 01.04.2010
Сообщений: 3
Печаль [TASM] Сравнение массива

Здравствуйте, в общем есть код программы, которая сравнивает массив на симметричность...
Код:
.286
.model tiny
.code	
.stack 100h
start:  mov ax,3;стираем с экрана
	int 10h
	mov si,offset mas
	mov bx,len-2
a0:     lodsb;получить очередной элемент массива
	cmp al,[si+bx];проверить симметричность
	jne a1;если не равны -- сообщить об этом
	sub bx,2
	jns a0;массив закончился?
	mov bx,1; ответ «1»
	jmp a2
a1:	mov bx,0; ответ «0»
a2:	shl bx,1
	mov dx,indx[bx]
	mov ah,9;выводим надпись на экран
	int 21h
	mov ah,0;пока не нажмут любую клавишу
	int 16h
exit:	ret;конец программы
mas db 1,2,3,4,5,3,7,8,9,10,11,12,13,12,11,10,9,8,7,6,5,4,3,2,1
len = $-mas;длина массива
string1 db 'Mas sem$'
string2 db 'Mas ne sem$'
indx dw string2,string1 
end start
В результате получается вот, это:


Препод которому сдаю, сказал, что это, мол данные выходят за граници массива и по этому оно так отображает... Лично я (новичек) так и не понял, что поменять для корректной роботы программы... Возможно вы поможете?
FromShadow вне форума Ответить с цитированием
Старый 15.06.2010, 03:35   #2
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Неправильно препод сказал. Двойку ему.
Для правильного испльзования функции 9 прерывания 21h DOS надо настроить регистр сегмента данных ds. Т.к. у вас и код и данные в одной куче, то это можно сделать так:

Код:
start:  
	mov ax, @code
	mov ds, ax
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 15.06.2010, 04:28   #3
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

FromShadow
Как автор программы, которую вы привели (смотрим здесь), могу сказать следующее: "Не стоит копировать чужие программы, а нужно писать их самому" Странно, что преподаватель и Ulex не заметили строчек ".model tiny" и "ret;конец программы" что говорит от том, что это текст для COM-программы и никакой настройки регистра сегмента данных DS не требуется, а вы скорее всего пытаетесь сделать из нее ЕХЕ без всякой переделки, а вашему преподавателю передайте, что программа рабочая, если конечно не собирать ее кривыми руками

Последний раз редактировалось Mikl___; 15.06.2010 в 04:46.
Mikl___ вне форума Ответить с цитированием
Старый 15.06.2010, 04:55   #4
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Были такие подозрения, что это COM. Я её даже скомпилил сначала в COM. Просто не люблю я этот формат (атавизьм какой то).

P.S.
Во блин, точно. Копипастер попался. То то я смотрю, тема про симметричный массив знакомая какая-то.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru

Последний раз редактировалось Ulex; 15.06.2010 в 04:58.
Ulex вне форума Ответить с цитированием
Старый 15.06.2010, 09:17   #5
FromShadow
 
Регистрация: 01.04.2010
Сообщений: 3
По умолчанию

Mikl___, Хм, я думал если вы выкладываете программу на форум, то ею можно воспользоваться... Просто с тем, как мы выучили Асм, написать свою программу не реально) А для сдачи зачета, нужно предоставить ему какую нибудь программку... Извините за использование плода вашего труда... Думаю тему можно удалить...

А что касается препода, то он даже в код не смотрел... Он просто предположил судя по тому, что выводит командная строка.

Последний раз редактировалось FromShadow; 15.06.2010 в 09:20.
FromShadow вне форума Ответить с цитированием
Старый 15.06.2010, 10:41   #6
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

FromShadow
Да пользуйтесь, ради бога, но в учебник вам тоже смотреть никто не запрещает, если в программе стоит .model tiny это совсем не то, что .model smal, .model large, .model flat если COM-программа завершается RETN или int 20h это не значит что EXE не нужно завершать через mov ah,4Ch/int 21h. "Просто с тем, как мы выучили Асм, написать свою программу не реально) А для сдачи зачета, нужно предоставить ему какую нибудь программку..." типа, сдал и забыл, я мол не при чем, злые преподаватели виноваты, а потом народ удивляется "и почему у наших инженеров руки кривые..."
Mikl___ вне форума Ответить с цитированием
Старый 15.06.2010, 14:02   #7
FromShadow
 
Регистрация: 01.04.2010
Сообщений: 3
По умолчанию

Mikl___, спасибо за информацию
Что касается учебников... Да, конечно можно порыться и найти, но заниматься этим во время сессии, не очень то и времени хватает... Просто еще и понимаешь перспективу Ассеблера, это реально сейчас сдать и больше не пользоваться... по этому большие усилия в него и не хочется вкладывать... Вот, что касается языка С++, вот там я могу и весь день потрать на поиск информации по устранению какой то ошибки ибо я знаю, что мне это не помешает... В общем вы можете быть спокойным, я не на инженера учусь))
FromShadow вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TASM дело тонкое!:) (Где в TASM IDE?) 3.14oner Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 15.11.2011 16:20
TASM Hant111 Фриланс 5 23.03.2010 21:54
TASM romale Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 16.12.2009 23:03
Сравнение массива чисел с числом cent Microsoft Office Excel 17 28.01.2009 13:17
выборка и сравнение из массива Dennikid Общие вопросы Delphi 15 03.10.2008 09:25