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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2011, 21:42   #1
S1av0k
Пользователь
 
Регистрация: 26.11.2009
Сообщений: 87
По умолчанию TASM симметричность матрицы

Необходимо проверить матрицу на симметричность относительно главной диагонали. Идея такова. Хранить адрес элемента главной диагонали, считая его за base, пробежаться относительно base по всем элементам строки и столбца, соответствующего этому base, после чего сместить base на следующий элемент главной диагонали и повторить. Проблема в том, что по непонятной для меня причине, я не могу таким образом добраться даже до второго элемента строки. Прошу разъяснить мне, почему так происходит и как это исправить.
Код:
.model small
.stack 100h
.data
mas	db 1,2,3,4
	db 2,5,6,7
	db 3,6,8,9
	db 4,7,9,0
		
n equ 4
tmp dw 0
i dw 1
base db 0
rez db 1 ;результат проверки на симметричность. 0 - несимметрична, 1 - симметрична
.code
.386		
ENTRYPOINT:
	mov ax,@data
	mov ds,ax
	
	mov bx,0
	mov si,0
	mov al,offset mas
	mov base,al
	
	xor ax,ax
	xor bx,bx
	mov si,1
	mov cx,n-1
m1:	
	mov bx,0
	mov si,tmp
	inc si
	inc si
	mov al,byte ptr base[si][bx]
	mov tmp,si
           push al
; -------------------------------	si = (n-1)*si
	mov ax,n-1
	mul si
	mov si,ax
; -----------------------------------------------
           pop al
	mov bx,i
	cmp al,byte ptr base[si][bx]
	jne exit_0
	jns m3
	inc i
loop m1

m3:
	add base,n
	
exit_0:
	mov rez,0
	
exit_1:	
	mov ah, 4ch
	int	21h
end ENTRYPOINT
Помог - жми весы
S1av0k вне форума Ответить с цитированием
Старый 10.11.2011, 01:17   #2
yuran666666
Форумчанин
 
Аватар для yuran666666
 
Регистрация: 23.04.2009
Сообщений: 346
По умолчанию

Код:
	.386
	.model flat,stdcall
	option casemap:none


category equ 5

.data
matrix	db 1,2,3,4,5
		db 2,5,6,7,3
		db 3,6,8,9,1
		db 4,7,9,0,2
		db 5,4,1,2,1
.code
start:
push	category
push	offset matrix
call	SymmetryMatrix
ret

SymmetryMatrix: 
;out eax = 1 - TRUE or № srtring & column (on the right) err
	push	esi
	push	edi
		mov	esi, [esp+0ch]
		mov	edx, [esp+10h]
		lea	edi, [edx-1]
		next:	
			mov		ebx, esi
			lodsb
			mov		ecx, edi
			@@:
				lodsb
				add		ebx, edx
				cmp		al, [ebx]
				jnz		res	
			loop	@b
			add		esi,1
			inc		byte ptr[$-1];just for lulz .text = RWE
			dec		edi
		jnz	next
		res:
		xchg	eax,edi
		inc		eax
	pop		edi
	pop		esi
ret    8

end start
подправьте под 16bit и будет вам счастье
Нет, ну правда..

Последний раз редактировалось yuran666666; 10.11.2011 в 01:25.
yuran666666 вне форума Ответить с цитированием
Старый 11.11.2011, 00:31   #3
S1av0k
Пользователь
 
Регистрация: 26.11.2009
Сообщений: 87
По умолчанию

yuran666666, спасибо! Вот только мне бы хотелось разораться именно с моей проблемой, ибо я действительно не понимаю, почему моя идея не работает должным образом...
Помог - жми весы
S1av0k вне форума Ответить с цитированием
Старый 11.11.2011, 07:16   #4
vadimych
Форумчанин
 
Регистрация: 16.01.2011
Сообщений: 325
По умолчанию

S1av0k, offset в al не влезет. Слово надо.
Код:
mov al,offset mas
vadimych вне форума Ответить с цитированием
Старый 11.11.2011, 13:44   #5
S1av0k
Пользователь
 
Регистрация: 26.11.2009
Сообщений: 87
По умолчанию

Да, я уже это исправил, однако ситуацию это не спасло. Первый элемент в нулевой строке нахожу, а нулевой элемент в первой строке уже нет...
Помог - жми весы
S1av0k вне форума Ответить с цитированием
Старый 11.11.2011, 23:09   #6
S1av0k
Пользователь
 
Регистрация: 26.11.2009
Сообщений: 87
По умолчанию

Решил задачу так:
Код:
.model small
.stack 100h
.data
mas	db 1,2,3,4
	db 2,5,6,7
	db 3,6,8,9
	db 4,7,9,0
		
n equ 4
base dw 0
tmp dw 1
i dw 1
j dw 0
rez db 1 ;результат проверки на симметричность. 0 - несимметрична, 1 - симметрична
.code
.386		
ENTRYPOINT:
	mov ax,@data
	mov ds,ax
	
	mov si,offset mas
	mov bx,0			;
	xor ax,ax
	mov si,1
	mov cx,n
	sub cx,1
	
m1:	
	mov si,tmp
	mov al,[si][bx]
	inc si
	mov tmp,si
	push ax
; -----------------	si = si + n*i ------------------------
	mov ax,n
	mul i
	mov si,ax
; --------------------------------------------------------
	pop ax
	cmp al,byte ptr [si][bx]
	jne exit_0
	inc i
loop m1
	inc j
	mov ax,j
	cmp ax,n-1
	je exit	
; ---------------------- cx = n - i	----------------------
	mov cx,n
	sub cx,i
; --------------------------------------------------------
; ---------------------- ax = n*j + j --------------------
	mov ax,n
	mul j
	add ax,j
; --------------------------------------------------------
; --------------------- tmp = offset mas + ax + 1 --------
	mov tmp, offset mas
;	add tmp,ax
	inc tmp
; --------------------------------------------------------
	xor ax,ax
; --------------------- bx = n*j + j ---------------------
	mov ax,n
	mul j
	add ax,j
	mov bx,ax
; --------------------------------------------------------
	mov i,1
; -------------------- cx = n - j - 1 --------------------
	mov cx,n
	sub cx,j
	dec cx
; --------------------------------------------------------
	jmp m1
exit_0:
	mov rez,0	
exit:
	mov ah, 4ch
	int	21h
end ENTRYPOINT
Подскажите, в чем же всё-таки первого варианта адресации и второго, и почему первый не работает...
Помог - жми весы
S1av0k вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TASM дело тонкое!:) (Где в TASM IDE?) 3.14oner Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 15.11.2011 16:20
TASM симметричность матрицы S1av0k Помощь студентам 0 09.11.2011 17:53
Симметричность Mr.KOHCEPBATOP Паскаль, Turbo Pascal, PascalABC.NET 3 18.10.2011 19:46
TASM romale Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 16.12.2009 23:03
Проверка строки матрицы на симметричность. EVIL Помощь студентам 2 26.11.2007 23:23