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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2012, 20:35   #11
Димас5552
Пользователь
 
Регистрация: 22.10.2012
Сообщений: 44
По умолчанию

Чесно говоря до таких "описателей" как .model tiny я ещё не дошел, поэтому ничего не понял

Цитата:
Во-первых есть еще exe программы, а в них может быть и почти всегда более одного сегмента. Как отличить конец одного и начало другого ?
Так по моему элементарно - если программа занимает больше одного сигмента то значит этот первый сигмент она "забила" полностью и его конец равен максимальному смещению 0FFFFh
Димас5552 вне форума Ответить с цитированием
Старый 28.10.2012, 21:48   #12
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Не все так просто.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 28.10.2012, 22:09   #13
Димас5552
Пользователь
 
Регистрация: 22.10.2012
Сообщений: 44
По умолчанию

Насколько я понял что даже если прога не займет весь сигмент целиком и будет команда ends то этот сигмент больше ни как по другому использоваться не будет, т.е. его уже дописать нельзя будет? Т.е. он будет считаться полностью заполненным хотя это даже и не так?

Последний раз редактировалось Димас5552; 28.10.2012 в 22:16.
Димас5552 вне форума Ответить с цитированием
Старый 28.10.2012, 22:30   #14
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Не забивайте этим голову. Когда дойдете, до программ с несколькими сегментами, то будет понятнее.
И вообще.. Вы асм учите ради одной единственной задачи?
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 28.10.2012, 22:38   #15
Димас5552
Пользователь
 
Регистрация: 22.10.2012
Сообщений: 44
По умолчанию

Пока только подобные задачи в книжке и фигурируют...

Вот такой пример который по идее должен выводить LOL на синем фоне но я его заассамблировал и вообще ноль эффекта - просто пустое окно, даже фона синего нету...

Код:
CSEG segment
org 100h

_beg:
	mov ax,0B800h
	mov es,ax
	mov di,0

	mov ah,31
	mov al,1
	mov es:[di],ax

	mov ah,10h
	int 16h

	int 20h

CSEG ends
end _beg
Почему он не работает?

Последний раз редактировалось Stilet; 29.10.2012 в 19:00.
Димас5552 вне форума Ответить с цитированием
Старый 29.10.2012, 00:10   #16
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Код:
	int 20h
во-первых, надеюсь, Вы понимаете, что таким кодом можно завершать только COM программы?

во-вторых, выводится значок с кодом 01 (типа "смайлика" ).
А зачем Вы пишете напрямую в видеопамять? Это не всегда будет работать...

Последний раз редактировалось Serge_Bliznykov; 29.10.2012 в 00:15.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.10.2012, 00:20   #17
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

из-за особенности эмуляции доса на винде, нужно вначале выполнить такой код
Код:
mov ax,3
int 10h
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 29.10.2012, 08:42   #18
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
А зачем Вы пишете напрямую в видеопамять? Это не всегда будет работать...
после замечания мудрого Goodwin98 я снимаю своё замечание насчёт косячности прямого доступа к видеопамяти, после иницилизации видеорежима, прямая запись будет (должна) работь нормально.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 29.10.2012, 11:25   #19
Димас5552
Пользователь
 
Регистрация: 22.10.2012
Сообщений: 44
По умолчанию

Цитата:
Сообщение от Goodwin98 Посмотреть сообщение
из-за особенности эмуляции доса на винде, нужно вначале выполнить такой код
Код:
mov ax,3
int 10h
Прога заработала, но не полностью - смайл появился а фон так и остался черным... Как её ешё подшаманить?

Последний раз редактировалось Димас5552; 29.10.2012 в 12:01.
Димас5552 вне форума Ответить с цитированием
Старый 29.10.2012, 11:57   #20
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
если не секрет что это за прерывание? И вообще где можно достать справочник где есть описание всех прерываний?
о, это много где есть.
Начиная с справочника прерываний Ральфа Брауна (гуглите Ralf Brown's Interrupt List)
и заканчивая старым добрым TechHelp! (могу поделится, если не найдёте...)
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему на этом форуме все игнорируют тупые вопросы? IRobot Свободное общение 45 02.07.2011 13:43
Вопросы от новичка AngelOfFate Gamedev - cоздание игр: Unity, OpenGL, DirectX 1 03.06.2011 15:25
Вопросы от новичка valenina Общие вопросы Delphi 10 31.05.2010 09:35
Вопросы новичка(C++) NetGod Общие вопросы C/C++ 22 17.04.2009 22:49