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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.11.2010, 20:31   #1
Pljus1
 
Регистрация: 15.04.2010
Сообщений: 6
По умолчанию Ошибка - внешняя процедура

Необходимо написать программу с использованием внешней процедуры в MASM.
Внешняя процедура
Код:
.model small
.data
str2 dw 10 dup (?)
str1 dw 10 dup (?)
.code
public Str_find
Str_find proc
	lea si,str1
	lea di,str2
	xor si,si
	xor di,di
L:	mov ax, [str1+si]
	cmp ax, [str2+di]
	je ex
	inc si
	inc di
	jmp L
ex:	mov ax, si
ret
Str_find endp
end
Основная программа:
Код:
.model small
.data
str1 dw 10 dup (?)
str2 dw 10 dup (?)
.stack 100h
.code
extrn Readstring:proc, Writestring:proc,gotoxy:proc,\
Str_find:proc
main:
mov ax,@data
mov ds,ax
lea dx,str1
mov cx,10
call Readstring
mov dx,0100h
call gotoxy
lea dx,str2
mov cx,10
call Readstring
call Str_find
add ax,30h
mov dx, ax
call Writestring
mov ax,4c00h
int 21h
end main
Ошибка в том, что внешняя процедура не знает что такое str1 и str2. Помогите исправить программу.
Pljus1 вне форума Ответить с цитированием
Старый 20.11.2010, 21:10   #2
Pljus1
 
Регистрация: 15.04.2010
Сообщений: 6
По умолчанию

Может str1 и str2 занести в регистры?
Можно целую строку сохранить в регистре, например, mov cx, str1 ?
Pljus1 вне форума Ответить с цитированием
Старый 21.11.2010, 09:29   #3
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

сохранить в регистре можно её адрес
mov cx,offset str1
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Старый 21.11.2010, 12:14   #4
nZil
 
Регистрация: 21.11.2010
Сообщений: 5
По умолчанию

Для начала, неплохо было бы, передать ей эти параметры.
Давай задание
nZil вне форума Ответить с цитированием
Старый 21.11.2010, 16:44   #5
Pljus1
 
Регистрация: 15.04.2010
Сообщений: 6
По умолчанию

Цитата:
Сообщение от nZil Посмотреть сообщение
Для начала, неплохо было бы, передать ей эти параметры.
Необходимо передать строку str1 в процедуру через регистры
Pljus1 вне форума Ответить с цитированием
Старый 24.11.2010, 11:08   #6
Ant1971on
Пользователь
 
Регистрация: 20.07.2010
Сообщений: 52
По умолчанию

Надо в основной программе объявить str1 и str2 общедоступными (public), а во внешней - внешними (extrn).
Ant1971on вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Внешняя сортировка Blond_89 Паскаль, Turbo Pascal, PascalABC.NET 0 01.04.2010 12:10
Внешняя сортировка. Evgeshk@ Общие вопросы C/C++ 0 20.12.2009 23:58
Внешняя компонента 1c 8.1 Dunpeal Общие вопросы Delphi 3 05.12.2009 18:12
Внешняя сортировка alex55 Общие вопросы C/C++ 0 21.03.2009 22:15