Сейчас на форуме: hgdagon, asfa, bartolomeo (+6 невидимых) |
eXeL@B —› Программирование —› Что не так? |
Посл.ответ | Сообщение |
|
Создано: 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 это за ошибка? и как её исправить? |
|
Создано: 22 октября 2006 19:47 · Личное сообщение · #2 |
|
Создано: 22 октября 2006 20:46 · Личное сообщение · #3 |
|
Создано: 22 октября 2006 22:23 · Личное сообщение · #4 |
|
Создано: 23 октября 2006 00:19 · Личное сообщение · #5 |
|
Создано: 23 октября 2006 05:05 · Личное сообщение · #6 |
|
Создано: 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 будут указывать на наш единственный сегмент. |
|
Создано: 23 октября 2006 08:15 · Личное сообщение · #8 |
|
Создано: 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 ;------ |
|
Создано: 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 |
|
Создано: 23 октября 2006 09:28 · Личное сообщение · #11 |
|
Создано: 23 октября 2006 10:18 · Личное сообщение · #12 TOR Понимаешь, я писал совершенно о других вещах! Kofein пишет: Near jump or call to different CS Эту ошибку генерирует TASM (поэтому FASM у него вызовет еще больше вопросов!!!), ну и мой пост выше ему косвенно дает ответ по теме отладчика! (надеюсь, теперь понятно выразился?) ЗЫ: не путай TASM и FASM, это разные вещи!!! (теория тут неуместна) ----- ЗЫ: истЕна где-то рядом, Welcome@Google.com |
|
Создано: 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 не влияет. |
|
Создано: 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 |
|
Создано: 23 октября 2006 13:31 · Поправил: TOR · Личное сообщение · #15 Такие вопросы обычно задает студент 2го курса, который пол года рубился в контру(etc),в общаге или по клубам,а потом, перед сессией(сейчас зачетная неделя,экзамены скоро), вспомнил что учиться в институте! Это наверное такое открытие было! Как вторая Америка(не грех выпить )! Он оказывается даже и своих одногрупников незнает в лицо! Даже попросить готовые лабы стыдно(хрен кто даст)!Или преподов боиться как чертей(скорее всего, что не то что ФИО незнает,а даже в лицо). Вот поэтому и решил задать вопросы на 4 форумах одновременно(авось кто поможет?)!О какой этике может идти речь(жить то - хочеться)! Ладно,если бы шарил по теме (универ это все херня),но ведь вопросы максимум - 3 лаба по асму! Так что ему скорее всего не читать Калашникова прийдется,а учиться собирать-разбирать. P/S: Если тебе такая перспектива не нравиться, подойди к преподу с деньгами(они ведь тоже люди!). Учись выживать. |
|
Создано: 28 октября 2006 23:11 · Личное сообщение · #16 |
|
Создано: 31 октября 2006 01:25 · Личное сообщение · #17 |
|
Создано: 31 октября 2006 02:51 · Личное сообщение · #18 |
|
Создано: 31 октября 2006 03:01 · Личное сообщение · #19 |
|
Создано: 31 октября 2006 07:38 · Личное сообщение · #20 |
eXeL@B —› Программирование —› Что не так? |