Сейчас на форуме: hgdagon, asfa, bartolomeo (+6 невидимых)

 eXeL@B —› Программирование —› Что не так?
Посл.ответ Сообщение

Ранг: 5.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 22 октября 2006 16:01
· Личное сообщение · #1

Текст этой проги из книги Калашников

CSEG segment
org 100h

Begin:
mov ax,0B800h
mov es,ax
mov di,0
mov al,1
mov ah,31
mov cx,2000

Next_face:
mov es:[di],ax
add di,2
loop Next_face

mov ah,10h
int 16h
int 20h

CSEG ends
end Begin

при компиляции выводит ошибку после строки loop Next_face
**Error**proj.asm(18) Near jump or call to different CS
What это за ошибка?
и как её исправить?



Ранг: 12.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 22 октября 2006 19:47
· Личное сообщение · #2

Дык в начале ставится
START:
а в конце
END START
..



Ранг: 12.0 (новичок)
Активность: 0.010
Статус: Участник

Создано: 22 октября 2006 20:46
· Личное сообщение · #3

Дык в начале ставится
START:
а в конце
END START
..



Ранг: 5.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 22 октября 2006 22:23
· Личное сообщение · #4

тут без разницы что ставить главное чтобы было начало то есть begin: и конец то есть end begin.
можно вообще хоть
bkvfdsjghr:
...
end bkvfdsjghr



Ранг: 253.9 (наставник)
Активность: 0.130
Статус: Участник

Создано: 23 октября 2006 00:19
· Личное сообщение · #5

CSEG ends в конец

-----
MicroSoft? Is it some kind of a toilet paper?




Ранг: 5.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 23 октября 2006 05:05
· Личное сообщение · #6

>CSEG ends в конец

появляется warning после строки end Begin
*Warning* Prj.asm(21) Open: segment: CSEG



Ранг: 52.2 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 23 октября 2006 05:54 · Поправил: Vitek
· Личное сообщение · #7

Вот те вырезка из 5 статьи (УК РФ =) :

Я получил много писем с таким вопросом:

TASM выдает ошибку: Near jump or call to different CS.

Я предложил вставить строку assume cs:CSEG. Что же происходит?

Дело в том, что эта строка указывает Ассемблеру на привязку сегментного регистра CS к нашему сегменту (CSEG). MASM ассемблирует прекрасно и без этой строки. Если оператор assume отсутствует, то MASM как бы по умолчанию вставляет ее автоматически.

Другое дело TASM. Он, встретив в программе строки вида:

loop Label_1

jmp Label_2

call Procedure

не может "понять" к какому сегменту следует обратиться (CS, DS, ES) и выдает сообщение об ошибке.

Как уже говорилось, мы пишем com-файлы в которых всего один сегмент (мы обзываем его CSEG). Если вы создадите еще один (например, DSEG), то компоновщик (link.exe), при попытке создать com-файл, выдаст ошибку.

Чтобы полностью закрыть данную тему, привожу полный вид разбираемой нами строки:

assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG

Этим мы указываем Ассемблеру на то, что сегментные регистры CS, DS, ES, SS будут указывать на наш единственный сегмент.



Ранг: 5.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 23 октября 2006 08:15
· Личное сообщение · #8

Ошибки больше не выдаёт.
программа запускается, но не выполняется.
В том смысле, что не выводит эти рожи, экран пустой.



Ранг: 16.8 (новичок)
Активность: 0.030
Статус: Участник

Создано: 23 октября 2006 08:42 · Поправил: TOR
· Личное сообщение · #9

Kofein - вопрос! Ты создаешь левого юзера чтобы задать глупый вопрос(http://exelab.ru/f/action=vthread&forum=6&topic=657 9),а потом как нивчем не бывало продолжаешь развивать тему? Нах тебе это?
Ответ на твой вопрос (fasm):
org 100h ; main program segmen
start:

xor ax,ax ;al=0 -> нулевая страница видео буффера
mov ah,05h ;Выбрать активную страницу видеопамяти
int 10h ;http://wasm.ru/article.php?article=1022001#p1_5

mov ax,0B800h
mov es,ax

mov di,0
mov al,1
mov ah,31
mov cx,2000

repnz stosw
; Next_face:
; mov [es:di],ax
; add di,2
; loop Next_face

mov ah,10h
int 16h
int 20h
;------



Ранг: 213.5 (наставник)
Активность: 0.120
Статус: Участник
забанен

Создано: 23 октября 2006 09:22
· Личное сообщение · #10

Kofein пишет:
В том смысле, что не выводит эти рожи, экран пустой.

Ты их не увидишь!
Это все делает int 20h.
Увидеть их можно ну для примера в отладчике (TD.exe пакета TASM) открываем в нем и нажимаем F8 до тех пор когда, наконец, увидим желаемый результат, можно после выполненной int 16h нажать Alt+F5 (в отладчике), ну и они появятся (рожи)

TOR пишет:
http://exelab.ru/f/action=vthread&forum=6&topic=6579

Играем в юных детективов =)))
http://www.wasm.ru/forum/viewtopic.php?id=16707

-----
ЗЫ: истЕна где-то рядом, Welcome@Google.com




Ранг: 16.8 (новичок)
Активность: 0.030
Статус: Участник

Создано: 23 октября 2006 09:28
· Личное сообщение · #11

Demon666 пишет:
Ты их не увидишь!...

Почему не увидишь?Компильни мой код ;)



Ранг: 213.5 (наставник)
Активность: 0.120
Статус: Участник
забанен

Создано: 23 октября 2006 10:18
· Личное сообщение · #12

TOR
Понимаешь, я писал совершенно о других вещах!

Kofein пишет:
Near jump or call to different CS

Эту ошибку генерирует TASM (поэтому FASM у него вызовет еще больше вопросов!!!), ну и мой пост выше ему косвенно дает ответ по теме отладчика! (надеюсь, теперь понятно выразился?)

ЗЫ: не путай TASM и FASM, это разные вещи!!! (теория тут неуместна)

-----
ЗЫ: истЕна где-то рядом, Welcome@Google.com




Ранг: 16.8 (новичок)
Активность: 0.030
Статус: Участник

Создано: 23 октября 2006 10:28 · Поправил: TOR
· Личное сообщение · #13

Ну незнаю.Мое дополнение:
xor ax,ax ;al=0 -> нулевая страница видео буффера
mov ah,05h ;Выбрать активную страницу видеопамяти
int 10h ;http://wasm.ru/article.php?article=1022001#p1_5

mov ax,0B800h
mov es,ax

к его коду, должно решить вопрос:
Kofein пишет:
Ошибки больше не выдаёт.
программа запускается, но не выполняется.
В том смысле, что не выводит эти рожи, экран пустой.


А какая разница что за компилер?Логика ведь везде одинаковая. Код что я привел только что(пару строк выше), не должен быть зависим от компилера. Программа должна показывать нормально синие рожици, причем на их отображение уж точно int 20h не влияет.



Ранг: 213.5 (наставник)
Активность: 0.120
Статус: Участник
забанен

Создано: 23 октября 2006 13:04
· Личное сообщение · #14

TOR
Он этот исходник юзает во всех компиляторах скоро и до FASM доберется

Вот, блин! Тут, оказывается, еще есть идентичная тема:
http://exelab.ru/f/action=vthread&forum=5&topic=6580
Короче получается, что tundra37 объясняет именно то, что и мы тут только с одним отличием у него тема MASM

P. S.
Kofein
TOR пишет:
Нах тебе это?

+1

-----
ЗЫ: истЕна где-то рядом, Welcome@Google.com




Ранг: 16.8 (новичок)
Активность: 0.030
Статус: Участник

Создано: 23 октября 2006 13:31 · Поправил: TOR
· Личное сообщение · #15

Такие вопросы обычно задает студент 2го курса, который пол года рубился в контру(etc),в общаге или по клубам,а потом, перед сессией(сейчас зачетная неделя,экзамены скоро), вспомнил что учиться в институте!
Это наверное такое открытие было! Как вторая Америка(не грех выпить )!
Он оказывается даже и своих одногрупников незнает в лицо! Даже попросить готовые лабы стыдно(хрен кто даст)!Или преподов боиться как чертей(скорее всего, что не то что ФИО незнает,а даже в лицо).
Вот поэтому и решил задать вопросы на 4 форумах одновременно(авось кто поможет?)!О какой этике может идти речь(жить то - хочеться)!
Ладно,если бы шарил по теме (универ это все херня),но ведь вопросы максимум - 3 лаба по асму! Так что ему скорее всего не читать Калашникова прийдется,а учиться собирать-разбирать.
P/S: Если тебе такая перспектива не нравиться, подойди к преподу с деньгами(они ведь тоже люди!). Учись выживать.




Ранг: 279.1 (наставник)
Активность: 0.160
Статус: Участник
wizard

Создано: 28 октября 2006 23:11
· Личное сообщение · #16

Kofein пишет:
Ошибки больше не выдаёт.
программа запускается, но не выполняется.
В том смысле, что не выводит эти рожи, экран пустой.


Напиши после Begin

mov ah,00
mov al,03
int 10h

и все заработает.

-----
Что один человек сделал , другой всегда сломать может...




Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 31 октября 2006 01:25
· Личное сообщение · #17

TOR пишет:
Такие вопросы обычно задает студент 2го курса

А такие посты невнимательные товарищи. Написано же рассылка Калашникова.
Хотя конечно студентам похожие задачки дают. А на следующем курсе сразу базу на 6-м Дельфи.
Ребенок у меня в техникуме учился




Ранг: 109.2 (ветеран)
Активность: 0.090
Статус: Участник
Cardinal

Создано: 31 октября 2006 02:51
· Личное сообщение · #18

tundra37 Сопоставь все посты данного товарищаKofein-а под другими никами и под этим, и ты получишь ответ на вопрос: для чего ему это нужно.

-----
– Почему ты работаешь по ночам ? – Так удобнее... В одну смену с чертями...





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 31 октября 2006 03:01
· Личное сообщение · #19

tnt17 ага, особенно радует вопрос "Как загрузить программу в DeDe?"...

-----
Yann Tiersen best and do not fuck




Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 31 октября 2006 07:38
· Личное сообщение · #20

PE_Kill пишет:
особенно радует вопрос "Как загрузить программу в DeDe?"...

Так это он explorer.exe загружал в DeDe ?!


 eXeL@B —› Программирование —› Что не так?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати