Пока вопрос. Насчёт отсчётов. Предлагаю приколоть тему в важные, дабы сей вопрос не мешали с ДЗ.
Прак!
Сообщений 1 страница 30 из 37
Поделиться22006-03-04 17:55:12
Ну что я могу сказать. Собственно, ждем выложенных готовых отчетов, чтобы мы посмотрели, как их надо писать.
Поделиться32006-03-04 21:21:55
Вот. Прогу сдал сёдня, отчёт Волканов проверит, вроде к понедельнику
Поделиться42006-03-05 12:34:36
Хотел спросить насчет графиков. Где можно про них почитать? И долго ли в это дело втыкать? Просто ни разу с этим не сталкивался, не знаю, стоит ли париться.
Поделиться52006-03-05 13:38:44
Открываешь паскаль, включаешь хэлп. Нагло сдираешь пример для initgraf, когда он заработает, добавляешь рисование того, что надо, рисуя коорд. сетку в цикле при помощи line () и графики lineto() все.
Поделиться62006-03-05 19:50:55
чорт! долбанная 205я ошибка. "переполнение плавающей запятой". не работает программка.
Поделиться72006-03-05 19:58:58
долбанная 205я ошибка. "переполнение плавающей запятой"
Странно, ни разу с ней не столкнулся во время написания первой проги
А она почему то у всех выскакивает...
Поделиться82006-03-05 20:40:47
Случайно не при рисовании какой-нибудь гиперболы? Там функция в бесконечность уходит и происходит переполнение. Просто не рисуй там функцию.
Поделиться92006-03-06 18:58:49
Да нет, на root. До рисования графиков мне еще далеко...
Поделиться102006-03-07 20:51:18
Никто не может подсказать, как во втором задании (вариант 1) реализовать фишку, чтобы при нажатии "лево", "право" ReadKey опознавала их не как K и М соответственно, а как управляющие символы (просто ASCII коды совпадают), это нужно для модификации слов? Очень не хочется использовать процедуру inkey модуля CRT1, так как наверняка есть намного более простое решение!
:niggabotan: :idol: :niggabotan: :idol: :niggabotan:
Поделиться112006-03-07 21:04:35
Надо использовать библиотеку CRT1 и какую-то функцию из нее вмето readkey (в методичке где-тов конце написано). Или использовать хитрую вставку, использующую прерывания.
Более простого решения нет т.к. клавиши стрелок кодируются как нажатие 4х кнопок сразу.
Поделиться122006-03-07 21:21:59
Очень не хочется использовать процедуру inkey модуля CRT1
Видимо всё-таки придётся делать так. Тогда другой вопрос: у кого-нибудь есть модуль CRT1, а то в Сети нашёл только crt1.0 для Linux?
Отредактировано DiMan (2006-03-07 21:22:58)
Поделиться132006-03-07 22:15:03
Эх, жаль не сохранилась моя прога из первого сема, там этот вопрос решался как то так:
var key: char;
...
key:=readkey;
if key=#0 then key:=readkey; {на самом деле клавишу надо всего 1 раз нажимать}
if key=#<что-то> then... {реакция на нажатие влево}
if key=#<что-то другое> then... {нажатие вправо}
кстати, кажется этот способ я позаимствовал у Artem'а, может у него сохранилась его прога...
Поделиться142006-03-07 23:36:09
c:=ReadKey;
if c=#0 then begin
c:=ReadKey;
if c=#72 then {вниз вроде}
if c=#80 then {вверх вроде - а мож и наоборот}
end
а лево-право я коды не помню
Поделиться152006-03-08 10:39:44
Во-первых, действительно наоборот, а во-вторых, код 72 также имеет буква "H", а код 80 - буква "P", так что если юзер захочет ввести эти буквы в слово, то получит результат как от нажатия кнопок "вверх" и "вниз". Просто в ваших прогах не надо было вводить буквы.
Хотя я придумал ещё один вариант решения проблемы: сделать два режима - ввода слов и редактирования. Как вы считаете, нормально будет или лучше задействовать CRT1? :niggabotan:
Поделиться162006-03-08 12:00:05
2 DiMan. Стрелки имеют не один код, а несколько, они воспринимаются как последовательность символов. Поэтому нажатие на стрелку сначала зайдет в иф с условием кода 0, а потом пойдет разделение по стрелкам.
А нажатие на буквы не породит кода 0, так что все пройдет нормально. Вот только насколько я помню, стрелки генерят событие нажатия 4х кнопок, соответсвенно надо отлавливать 4 кнопки, а не 2.
Поделиться172006-03-15 22:28:12
не, в Паскале только два кода - нолик и свой код.
Кстати, по просьбам трудящихся! Вот мой отчёт!
Поделиться182006-03-15 22:50:31
*Посмотрел на кучу крякозябр, которые вывел опен офис.
А титульный лист делать или нет?
Поделиться192006-03-16 20:52:21
Чёрт...
Все срочно выходим в нирвану и линкуем её на меня!
У меня отсчёт не пишется....
Списать совесть не позволяет....
Посоветуйте что-нибудь по существу?
Поделиться202006-03-16 20:56:22
У меня отсчёт не пишется....
Что ты там отсчитываешь?
Поделиться212006-03-16 20:59:19
Что ты там отсчитываешь?
Мллин. Ну, если тебе, знатоку русского языка, интересно - дведцать третьи доли секунд, оставшиеся до сдачи отсчёта
Я не знаток, к сожалению. Всего лишь борец за чистоту.
Отредактировано Philosoff (2006-03-16 21:04:23)
Поделиться222006-03-20 18:53:38
Функция очистки экрана на асме, на будущее..
clrscr proc mov cx,26 L1: newline loop L1 mov ah,2 mov bh,0 mov dx,0 int 10h ret clrscr endp
Поделиться232006-03-21 16:19:59
Она с использованием Пильщиковских макросов
Поделиться242006-03-21 19:28:01
Да она вообще кривая. Надо всего-то обнулить видеопамять и переместить курсор на начало. Т.е. в cx надо загнать размер экрана помноженный на 2 (там по два байта) а вместо newline писать ноль в видеопамять и увеличивать указательна еденичку.
Поделиться252006-03-21 23:39:39
УРРА! Я доделал вторую задачу! А вот по матану так ничего и не решил...
Поделиться262006-03-22 00:33:56
А как писать в видеопамять?
у меня самое короткое clrscr получилось так:
mov ax,0600h
mov bh,07
mov cx,0000
mov dx,184Fh
int 10h
mov ah,02
mov bh,00
mov dh,00
mov dl,00
int 10h
Отредактировано Freak on a Leash (2006-03-22 00:34:20)
Поделиться272006-04-04 21:58:20
Помогите, пожалуйста, решить проблему!
Не могу запустить программу на Ассемблере: ввожу в Far "ma.bat prog1" (prog1.asm находится в директории MASM), на полсекунды появляется и сразу пропадаeт DOS-окошко. В появившемся lst-файле вижу:
0 Warning Errors
0 Severe Errors
Вот, собственно, сама программа (выдаёт число нулевых элементов массива; решил сначала написать что-нибудь попроще перед тем, как писать третью зачётную программу):
include io.asm
S segment stack
dw 32 dup (?)
S ends
D segment
N equ 10
X dw N dup (?)
D ends
C segment
assume cs:C,ss:S,ds:D
Begin: mov ax,D
mov ds,ax
mov cx,N
i equ bx
mov i,0
L: inint x[i]
add i,2
Loop L
sub ax,ax
mov cx,N
mov bx,offset x
L1: cmp word ptr [bx],0
jne L2
inc ax
L2: add i,type X
Loop L1
outword ax
inint ax
finish
C ends
end Begin
Вроде всё по Бауле. Возможно, ошибка не в самой программе? Всё-таки я первый раз сел за Ассемблер.
Отредактировано DiMan (2006-04-04 21:59:12)
Поделиться282006-04-04 23:29:05
Просто нажав ctrl+F1 ctrl+F2 (может быть alt) закрой окна фара и посмотри, что не так.
А вообще учитесь полозоваться командной строкой. Я понимаю, что в виндах нет командной строки, а есть какая-то хрень под названием cmd.exe, но и она сойдет, за неимением bash.
Поделиться292006-04-04 23:47:59
дальше запускай exe-шник prog1.exe
Поделиться302006-04-06 21:51:10
Всем спасибо, я сам разобрался: забыл переписать конфиг-файл ma.bat под соответствующую директорию для MASM.