Вопрос № 61759: Извините, в прошлый раз я не точно указал условие.
В текстовом режиме 80х25 прорисовывается прямоугольник 20х10, который может перемещаться по экрану при нажатии клавиш W, S, A, D. Выход из программы по нажатию клавиши Q.
Подскажите...Вопрос № 61854: Уважаемые эксперты, добрый вечер!
По поводу ответа на вопрос № 61719.
Возможно либо я неправильно выразился, либо
эксперт Boriss неверно истолковал суть, необходимо
уточнить:
Каким образом записать файл (допустим Gdeto.asm)<...Вопрос № 61876: Здраствуте!
помогите пожалуйсто с проблемой:
s STRUC
Key db 2 dup(?)
El1 db 7 dup(?)
El2 db 7 dup(?)
El3 db 7 dup(?)
El4 db 7 dup(?)
s ends
array
s <2,4,3,2,1>
s <1,3,2,1,4>
s ...
Вопрос № 61.759
Извините, в прошлый раз я не точно указал условие.
В текстовом режиме 80х25 прорисовывается прямоугольник 20х10, который может перемещаться по экрану при нажатии клавиш W, S, A, D. Выход из программы по нажатию клавиши Q.
Отвечает: Олег Владимирович
Здравствуйте, Владимир Витальевич!
В приложении программа, удовлетворяющая вашему описанию. Но в ней есть недочёты, например, можно выскочить за пределы экрана, и при этом часть прямоугольника потеряется. Это можно исправить, просто сделав первоначальное вырисовывание прямоугольника процедурой с одним параметром - DI, с которого начнётся вывод, и в зависимости от нажатой клавиши очищать экран, изменять DI и рисовать прямоугольник снова. Материал для этого в программе есть, просто код надо немного переделать, что я оставлю за кадром. Но, как мне
кажется, те методы, которые показал я, пригодятся не только для перемещения прямоугольника, но и для передвижения любого содержимого экрана, поэтому не упрощаю данный код - в нём стоит поразбираться. Удачи!
Приложение:
--------- Факультет ПМ-ПУ - лучший в СПбГУ!
Ответ отправил: Олег Владимирович (статус: 6-ой класс)
Ответ отправлен: 08.11.2006, 18:29
Вопрос № 61.854
Уважаемые эксперты, добрый вечер!
По поводу ответа на вопрос № 61719.
Возможно либо я неправильно выразился, либо
эксперт Boriss неверно истолковал суть, необходимо
уточнить:
Каким образом записать файл (допустим Gdeto.asm)
на дискету, к примеру в третий сектор ??? ,
а не туда куда его определит операционная система!
Либо на жёсткий диск ?
Отвечает: Lonely Wolf
Здравствуйте, Кудашкин Владимир Викторович!
Надо использовать функции работы с диском, напрямую писать в сектор. Это может прерывание 13h и 25h.
--------- Ассемблер FOREVER!!!
Ответ отправил: Lonely Wolf (статус: Студент)
Ответ отправлен: 09.11.2006, 12:48
Вопрос № 61.876
Здраствуте!
помогите пожалуйсто с проблемой:
s STRUC
Key db 2 dup(?)
El1 db 7 dup(?)
El2 db 7 dup(?)
El3 db 7 dup(?)
El4 db 7 dup(?)
s ends
array
s <2,4,3,2,1>
s <1,3,2,1,4>
s <7,2,3,1,4>
s <5,1,3,4,2>
s <6,3,4,1,2>
рассказывает про ошибку.
если каждое поле по байту, то все в порядке... задавать значение на каждый байт тоже не помогает.
Спасибо.
Отправлен: 09.11.2006, 01:34
Вопрос задал: Lestat (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Волков Павел Юрьевич
Здравствуйте, Lestat!
Хорошая задача, незнаю, способен ли MASM на такое, в FASM это будет так:
struct k
data db 2 dup (?)
ends
struct e
data db 7 dup (?)
ends
struct s1
key k
e1 e
e2 e
e3 e
e4 e
ends
array s1 <2>,<3>,<4>,<4>,<4>
т.е. смысл в том, что Вам надо сначало создать структуру с нестандартным размером одного элемента, а затем элементы необходимой структуры будут экземплярами тех структур.
Код болванки:
;==========================><==========================
format PE GUI
entry _start
include 'win32a.inc'
struct k
data db 2 dup (?)
ends
struct e
data db 7 dup (?)
ends
struct s1
key k
e1 e
e2 e
e3 e
e4 e
ends
section 'text' code executable readable
_start:
mov eax,array
ret
section 'data' data readable writeable
a1 db '<<<<<<'
array s1 <2>,<3>,<4>,<4>,<4>
s2 db '>>>>>>'
;======================><==========================
--------- Век живи, век учись.
Ответ отправил: Волков Павел Юрьевич (статус: 9-ый класс)
Ответ отправлен: 09.11.2006, 08:07
Отвечает: Lonely Wolf
Здравствуйте, Lestat!
Как я понял вы хотите создать 5 объектов типа s, попробуйте так:
s STRUC
Key db 2 dup(?)
El1 db 7 dup(?)
El2 db 7 dup(?)
El3 db 7 dup(?)
El4 db 7 dup(?)
s ends
object1 s <2,4,3,2,1>
object2 s <1,3,2,1,4>
object3 s <7,2,3,1,4>
object4 s <5,1,3,4,2>
object5 s <6,3,4,1,2>
--------- Ассемблер FOREVER!!!
Ответ отправил: Lonely Wolf (статус: Студент)
Ответ отправлен: 09.11.2006, 12:48