Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: HELP!!!  (Прочитано 13574 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ASM proger
Гость
« : 29-09-2003 18:15 » 

Помогите.... объявляю функцию через extrn а потом ее вызываю (call), но транслятор пишет, мол нету такой...

.model small
.stack 100h

WhiteOnBlue = 1Fh
GreetingLoc = 0400h

.data
greeting db "Link Library Demo"
     db 0dh, 0ah, 0dh, 0ah
     db "What's your name?", 0
numberPrompt   db 0dh, 0ah, "please enter a 16-bit integer: ", 0
userName db 50 dup(0)
pressAnyKey db 0dh, 0ah,0dh,0ah
          db "Press any key...", 0

.code

extrn Clrscr:proc, Crlf:proc, Gotoxy:proc, \
Readint:proc, Readstring:proc, Scroll:proc, \
Readkey:proc, Writeint:proc, Writestring:proc

main proc
mov ax, @data
mov ds, ax

;очистка экрана, заполнение синим цветом
call Clrscr
mov cx, 0400h    ;верхний левый угол
mov dx, 0B28h    ;нижний правый угол
mov bh, WhiteOnBlue
call Scroll

;отобразить приветствие и спросить имя пользователя
mov dx, GreetingLoc
call Gotoxy
mov dx, offset greeting
call Writestring
mov dx, offset userName
call Readstring

;попросить ввести целое число со знаком
;отобразить число в 16-ричном и двоичном виде
mov dx, offset numberPrompt
call Writestring
call Readint    ;ввод числа
call Crlf
mov dx, 16   ;отображение в 16-ричном виде
call Writeint
call Crlf
mov bx, 2   ;отображение в двоичном виде
call Writestring
mov dx, offset pressAnyKey
call Writestring
call Readkey
call Clrscr

mov ax, 4c00h   ;конец программы
int 21h
main endp
end main
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 29-09-2003 18:41 » 

Насколько я помню, в директивах masm, extrn разрешает объявить метку глобальной, а не описывает внешние связи.
Порядок работы такой:
1) ассемблирование в объектный файл. Могут быть неопределенные символы. Т.е., все чего нет в файле считается глобальным.
2) линковка. Тут все что было неизвестно должно стать известным, иначе ошибка.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
ASM proger
Гость
« Ответ #2 : 30-09-2003 14:47 » 

Так в чем тут ошибка получается ??  :?
Записан
Serega
Гость
« Ответ #3 : 30-09-2003 15:40 » 

а что пишет-то ?
Записан
ASM proger
Гость
« Ответ #4 : 30-09-2003 17:30 » 

Пишет:
Error: Undefined symbol Clrscr in module 1.asm
и так со всеми вызываемыми функциями...
попробуй откампилить- сам посмотришь.
Помогите !!! Горю !!!!   Так больше нельзя...
Записан
Serega
Гость
« Ответ #5 : 30-09-2003 17:37 » 

tasm съел и не подавился
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 01-10-2003 07:37 » 

Попробуй убери строки с extrn
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
ASM proger
Гость
« Ответ #7 : 01-10-2003 11:15 » 

2 RXL:
Тогда эти ф-ции подавну вызываться не будут, т.к. они определены не будут.

2 Serega:
И программа запустилась ??!!! А какой версии tasm ?
Записан
Serega
Гость
« Ответ #8 : 01-10-2003 15:45 » 

Как бы она запустилась, я ж не знаю с чем её линковать
tasm из BC 3.1
Записан
ASM proger
Гость
« Ответ #9 : 01-10-2003 16:31 » 

2 Serega:
Вот.... я тут нашел файлик irvine.lib (просто я из книги прогу взял), там говорят, что в этой библиотеке все есть....
Что делать ??
Записан
Serega
Гость
« Ответ #10 : 01-10-2003 16:38 » 

tlink [...].obj, irvine.lib
Записан
Ilia
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 15-10-2003 09:09 » 

Хм, на первый взгляд, ошибок не видать.

как-то у меня была проблема с файлами из книги, вернее с дискеты от книги.
Ошибка оказывается была в том, что некоторые части кода были написаны русскими буквами Отлично .
Пришлось все набирать ручками.
Надеюсь, это не тот случай Улыбаюсь .
Записан

Кто выпил весь кофе!
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines