![]() |
eXeL@B —› Вопросы новичков —› Assembler под DOS. Помогите найти ошибку в проге. |
Посл.ответ | Сообщение |
|
Создано: 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 ![]() ![]() |
|
Создано: 30 апреля 2007 20:30 · Личное сообщение · #2 vitalya2903 код особо не смотрел, но дам совет: если не можешь найти ошибку, то постарайся для начала найти где она находится. Т.е. какой именно участок кода не срабатывает. Для начала безо всяких там определений координат (или че ты там определяешь) сделай простой вывод своих точек на экран. Выйдут - хорошо, нет значит проблемы в выводе. А проблема скорее всего (могу ошибиться) в виндовозе и досе. NTVDM короче. ЗЫ Подучил асм в досе чуть-чуть сразу переходи на win32. Или ты крякми теперь досовские писать будешь? ![]() ----- radio uno in ibisa ... ![]() |
|
Создано: 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 ![]() |
|
Создано: 01 мая 2007 00:18 · Личное сообщение · #4 vitalya2903 пишет: Icelot пишет: Или ты крякми теперь досовские писать будешь? А чё было бы прикольно реакция на твои досовские крякмисы будет аналогичная. разберись с win АСМом, потом пеши свои крякмисы, сложного там ничего нет, если написать на нем пару простых прожек. Iczelion в помощь.......... ----- Ни одно доброе дело не должно остаться безнаказанным !!! ![]() |
|
Создано: 01 мая 2007 00:24 · Поправил: vitalya2903 · Личное сообщение · #5 |
|
Создано: 01 мая 2007 01:55 · Личное сообщение · #6 |
|
Создано: 01 мая 2007 02:25 · Поправил: MACKLIA · Личное сообщение · #7 vitalya2903 пишет: P.S. А конкретно по теме не поможешь? ... 00000022: B050 mov al,50 => Задаётся цвет точки поменяй на mov al,01 , будут синии точки,02-зелёные,04-красные,задавай число не превышающее F .Вообщем почитай про то как задается цвет .Прога твоя работает ,только черные точки на черном фоне ты врятли увидишь ![]() ----- Что один человек сделал , другой всегда сломать может... ![]() |
|
Создано: 01 мая 2007 10:02 · Личное сообщение · #8 |
|
Создано: 01 мая 2007 11:41 · Личное сообщение · #9 |
|
Создано: 01 мая 2007 12:02 · Поправил: vitalya2903 · Личное сообщение · #10 |
|
Создано: 01 мая 2007 13:31 · Личное сообщение · #11 |
![]() |
eXeL@B —› Вопросы новичков —› Assembler под DOS. Помогите найти ошибку в проге. |
Эта тема закрыта. Ответы больше не принимаются. |