Сейчас на форуме: _MBK_, vsv1, ut2004 (+6 невидимых)

 eXeL@B —› Вопросы новичков —› Assembler под DOS. Помогите найти ошибку в проге.
Посл.ответ Сообщение

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

Создано: 30 апреля 2007 18:44
· Личное сообщение · #1

Вобщем пишу я простенькую програмку на Ассемблере под DOS. Она должна
поменять режим монитора в графический и вывести пару точек.
Режим меняет, а вот точки почему-то не выводит. В чем дело я не пойму.
COM-файл в аттаче.

Вот код:

Здесь ждем пока что-то нажмем
00000000: B410 mov ah,10
00000002: CD16 int 16

Меняем режим экрана
00000004: B400 mov ah,00
00000006: B00D mov al,0D
00000008: CD10 int 10h

Ждем пока опять что-то нажмем
0000000A: B410 mov ah,10
0000000C: CD16 int 16

считываем координаты точек из памяти по адресу
0000000E: 8B0E4001 mov cx,[0140h]
00000012: 8B164201 mov dx,[0142h]

увеличиваем на 1 координаты точки
00000016: 41 inc cx
00000017: 42 inc dx

записываем координаты точки в память по адресу
00000018: 890E4001 mov [0140h],cx
0000001C: 89164201 mov [0142h],dx

собственно рисуем
00000020: B40C mov ah,0Ch
00000022: B050 mov al,50
00000024: 8BC9 mov cx,cx
00000026: 8BD2 mov dx,dx
00000028: CD10 int 10h

проверяем не выведено ли уже 5 точек
0000002A: 803E400105 cmp b,[140],5h
0000002F: 75DD jne 0000000E


нажимаем что-то чтобы выйти
00000031: B410 mov ah,10
00000033: CD16 int 16
00000035: CD20 int 20
00000037: 0000
00000039: 0000
0000003B: 0000
0000003D: 0000
0000003F: 0000
00000041: 0000
00000043: 0000
00000045: 0000
00000047: 0000
00000049: 0000
0000004B: 0000



aa02_30.04.2007_CRACKLAB.rU.tgz - v11.com




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

Создано: 30 апреля 2007 20:30
· Личное сообщение · #2

vitalya2903 код особо не смотрел, но дам совет: если не можешь найти ошибку, то постарайся для начала найти где она находится. Т.е. какой именно участок кода не срабатывает. Для начала безо всяких там определений координат (или че ты там определяешь) сделай простой вывод своих точек на экран. Выйдут - хорошо, нет значит проблемы в выводе. А проблема скорее всего (могу ошибиться) в виндовозе и досе. NTVDM короче.
ЗЫ Подучил асм в досе чуть-чуть сразу переходи на win32. Или ты крякми теперь досовские писать будешь?

-----
radio uno in ibisa ...




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

Создано: 30 апреля 2007 21:12
· Личное сообщение · #3

Icelot пишет:
Или ты крякми теперь досовские писать будешь?

А чё было бы прикольно

Icelot пишет:
Подучил асм в досе чуть-чуть сразу переходи на win32

Асм в досе только сегодня начал разбирать.
А на счет win32, не знаю какой выбрать FASM или MASM. Да и вобще смотрел я на коды в FASMе так они на обычный Асм вобще не похожи. Значит рано мне еще. Так что буду пока осваиваться в Досе.

Если написать просто вот так то точки рисуются нормально
mov ah,0Ch
mov al,50
mov cx,10
mov dx,10
int 10h




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

Создано: 01 мая 2007 00:18
· Личное сообщение · #4

vitalya2903 пишет:
Icelot пишет:
Или ты крякми теперь досовские писать будешь?
А чё было бы прикольно


реакция на твои досовские крякмисы будет аналогичная.

разберись с win АСМом, потом пеши свои крякмисы, сложного там ничего нет, если написать на нем пару простых прожек.
Iczelion в помощь..........

-----
Ни одно доброе дело не должно остаться безнаказанным !!!




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

Создано: 01 мая 2007 00:24 · Поправил: vitalya2903
· Личное сообщение · #5

[EXE]_cutor пишет:
реакция на твои досовские крякмисы будет аналогичная.

Да я шучу.

[EXE]_cutor пишет:
Iczelion в помощь

Ссылку дай

P.S. А конкретно по теме не поможешь?




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

Создано: 01 мая 2007 01:55
· Личное сообщение · #6

vitalya2903 пишет:
Ссылку дай



http://www.wasm.ru/publist.php?list=1 http://www.wasm.ru/publist.php?list=1

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





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

Создано: 01 мая 2007 02:25 · Поправил: MACKLIA
· Личное сообщение · #7

vitalya2903 пишет:
P.S. А конкретно по теме не поможешь?


...
00000022: B050 mov al,50 => Задаётся цвет точки поменяй на mov al,01 , будут синии точки,02-зелёные,04-красные,задавай число не превышающее F .Вообщем почитай про то как задается цвет .Прога твоя работает ,только черные точки на черном фоне ты врятли увидишь

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





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

Создано: 01 мая 2007 10:02
· Личное сообщение · #8

vitalya2903 вооружайся Iczelion'ом и сюда http://www.bitfry.narod.ru/

-----
radio uno in ibisa ...




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

Создано: 01 мая 2007 11:41
· Личное сообщение · #9

MACKLIA пишет:
Прога твоя работает ,только черные точки на черном фоне ты врятли увидишь

Да отэто я тупанул. Внатуре работает



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

Создано: 01 мая 2007 12:02 · Поправил: vitalya2903
· Личное сообщение · #10

Ого!!! А ни у кого нету архивчика статей Iczelion'a?

\всё архивчик нашел



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

Создано: 01 мая 2007 13:31
· Личное сообщение · #11

Вопрос исчерпан - закрываю тему


 eXeL@B —› Вопросы новичков —› Assembler под DOS. Помогите найти ошибку в проге.
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати