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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.04.2016, 19:26   #1
Sterben
Форумчанин
 
Аватар для Sterben
 
Регистрация: 01.03.2015
Сообщений: 118
По умолчанию Не могу разобраться

MASM
Ошибка в закоментированной (mov BYTE PTR [edi],si) строке - "instruction operands must be the same size",можно ли решить проблему не передавая значения в другой регистр?

Код:
.386
.model flat, stdcall
option casemap:none
.data
matrix	dw	1,2,3
row		= ($ - matrix)/type matrix
		dw	4,0,0
		dw	5,0,0
column	= ($ - matrix)/(row * type matrix)

.data?
result	dw	row * column dup(?)

.code
start:
	lea edi,result
	lea ebx,matrix
	mov ecx,column
	mov edx,1
columns_cycle:
	push ecx
	xor esi,esi
	mov ecx,row
rows_cycle:
	cmp WORD PTR[ebx + esi * type matrix],0
	inc esi
	jne @F
	;mov BYTE PTR [edi],si
	mov BYTE PTR[edi + type matrix / 2],dl
@@:
	add edi,type result
loop rows_cycle
	add ebx,row * type matrix
	inc edx
	pop ecx
loop columns_cycle
ret
end start
Код:
cmp WORD PTR[ebx + esi * type matrix],0
- эта строка тоже работает не коректно, inc esi сбрасывает флаг. мне сделать перед inc esi.push flag а после pop flag?

Последний раз редактировалось Sterben; 12.04.2016 в 22:10.
Sterben вне форума Ответить с цитированием
Старый 13.04.2016, 13:20   #2
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Цитата:
можно ли решить проблему не передавая значения в другой регистр
..примени строковые инструкции lodsb/stosb, т.к. компилятор ругает тебя за разный размер операндов:
EDI - байт, SI - слово.
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 13.04.2016, 21:33   #3
Sterben
Форумчанин
 
Аватар для Sterben
 
Регистрация: 01.03.2015
Сообщений: 118
По умолчанию

Спасибо
Sterben вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу разобраться feesta Помощь студентам 3 17.09.2011 23:46
не могу разобраться feesta Помощь студентам 0 10.04.2011 20:19
не могу разобраться Var17 Общие вопросы Delphi 6 27.03.2010 01:21