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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2013, 21:27   #1
weightless
 
Регистрация: 17.02.2013
Сообщений: 4
По умолчанию Ошибки в программе

Как исправить такие ошибки:
Цитата:
1 <13> Argument to operation or instraction has illegal size
2 <57> Can't convert to pointer
3 <57> Argument needs type override
4 <61> Can't convert to pointer
5 <61> Argument needs type override
6 <65> Can't convert to pointer
7 <65> Argument needs type override
8<69> Can't convert to pointer
9 <69> Argument needs type override
10<95> Can't convert to pointer
11 <95> Argument needs type override
условие проги:Создать программу, которая работает по следующему алгоритму:
1. Выводит на экран название программы.
2. Осуществляет ввод символа с клавиатуры без его отображения на экране: если нажата клавиша Enter, программа должна завершить работу.
3. Выполняет вызов первой подпрограммы обработки (имя подпрограммы – F1), передавая ей введенный символ с использованием стека.
4. Подпрограмма F1 должна выполнять проверку на принадлежность переданного символа первому из заданных диапазонов (J – L (лат)). Если символ принадлежит этому диапазону, то выполняется преобразование полученного символа (строчная буква преобразуется к заглавной, заглавная буква – к строчной) и вывод его на экран.
5. Если символ не принадлежит первому диапазону, то выполняется вызов второй подпрограммы обработки (имя подпрограммы – F2) и передача ей параметра по ссылке. Программа должна выполнять проверку на принадлежность символа второму диапазону(д – з (рус)): если символ принадлежит этому диапазону, то выполняется преобразование полученного символа (строчная буква преобразуется к заглавной или наоборот) и вывод его на экран.
6. Выполнить переход к пункту 2.
7. Вывод символа на экран оформить отдельной подпрограммой.
8. Выводимые на экран символы разделять пробелами.

Код:
.MODEL  tiny
            .MODEL  tiny
	.DATA
s DB "BongapeHko 314",13,10,'$'
j DB 'Error!!! Insert sign again!!!',13,10,'$'
temp DB ?
        .CODE
	org	100h
start:
		call fio
		call BBog
		call F1
		mov temp,al
		lea dl,temp
		call F2
fio 	PROC
	mov ah,9
	lea dx,s
	int 21h
	ret
fio 	ENDP


BBog		PROC
			mov ah,8h
			int 21h
			cmp al,0Dh
			je oh
			push ax
			ret
BBog		ENDP


F1			PROC
			pop ax
			pop dx
			push dx
			mov dl,al
			mov temp,al
			mov bL,OFFSET temp
			
			cmp dl,4Ah
			jne w2
			call pech1
		w2:
			cmp dl,4Bh
			jne w3
			call pech1
		w3:
			cmp dl,4Ch
			jne call F2
			call pech1
			ret
F1			ENDP						
			
F2			PROC
			cmp [bl],0A4h
			jne c1
			call pech2
		c1:	
			cmp [bl],0A5h
			jne c2
			call pech2
		c2:	
			cmp [bl],0A6h
			jne c3
			call pech2
		c3:	
			cmp [bl],0A7h
			jne xe
			xe: 	call oh		
			call pech2	
	ret
F2	ENDP	
		
oh			PROC
			mov ah,9
			lea dx,j
			int 21h
			jmp start	
			ret
oh			ENDP	


pech1		PROC
			mov ah,2
			add dl,20		
			int 21h
			jmp start
			ret
pech1		ENDP	

pech2		PROC
			mov ah,2
			sub [bl],20
			mov dl,temp			
			int 21h
			jmp start
			ret
pech2		ENDP		 			
	ret	
END     start

Последний раз редактировалось Stilet; 27.03.2013 в 22:31.
weightless вне форума Ответить с цитированием
Старый 27.03.2013, 22:06   #2
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

1) написать там lea dx вместо lea dl
2) Везде вместо [bl] использовать [bx], ну и вместо lea bl - lea bx, соответственно.

Но эта программа не будет работать, даже если скомпилируется. Как минимум из-за push ax; ret. Куда вернет управление функция?
Son Of Pain вне форума Ответить с цитированием
Старый 27.03.2013, 22:37   #3
weightless
 
Регистрация: 17.02.2013
Сообщений: 4
По умолчанию

спасибо! А что тогда нужно изменить? С ссылками я еще не особо разбираюсь
weightless вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибки в программе Dimanduc Общие вопросы C/C++ 3 27.07.2012 14:45
Ошибки в программе Andersen1313 Общие вопросы C/C++ 3 04.12.2010 09:51
ошибки в программе ShadowAGT Помощь студентам 8 27.09.2010 20:54
ошибки в программе по С++ Игорь11071990 Помощь студентам 2 20.01.2010 14:22
ошибки в программе gralex10 Помощь студентам 0 16.12.2009 00:37