Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 601
от 14.11.2006, 08:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 368, Экспертов: 26
В номере:Вопросов: 3, Ответов: 4


Вопрос № 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.

Подскажите пожалуйста, очень надо.
Отправлен: 08.11.2006, 10:13
Вопрос задал: Чеканов Владимир Витальевич/Chekanoff (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Олег Владимирович
Здравствуйте, Владимир Витальевич!
В приложении программа, удовлетворяющая вашему описанию. Но в ней есть недочёты, например, можно выскочить за пределы экрана, и при этом часть прямоугольника потеряется. Это можно исправить, просто сделав первоначальное вырисовывание прямоугольника процедурой с одним параметром - DI, с которого начнётся вывод, и в зависимости от нажатой клавиши очищать экран, изменять DI и рисовать прямоугольник снова. Материал для этого в программе есть, просто код надо немного переделать, что я оставлю за кадром. Но, как мне кажется, те методы, которые показал я, пригодятся не только для перемещения прямоугольника, но и для передвижения любого содержимого экрана, поэтому не упрощаю данный код - в нём стоит поразбираться. Удачи!

Приложение:

---------
Факультет ПМ-ПУ - лучший в СПбГУ!

Ответ отправил: Олег Владимирович (статус: 6-ой класс)
Ответ отправлен: 08.11.2006, 18:29


Вопрос № 61.854
Уважаемые эксперты, добрый вечер!

По поводу ответа на вопрос № 61719.
Возможно либо я неправильно выразился, либо
эксперт Boriss неверно истолковал суть, необходимо
уточнить:
Каким образом записать файл (допустим Gdeto.asm)
на дискету, к примеру в третий сектор ??? ,
а не туда куда его определит операционная система!
Либо на жёсткий диск ?

С уважением CrancV.
Отправлен: 08.11.2006, 22:36
Вопрос задал: Кудашкин Владимир Викторович (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: 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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.37 от 04.10.2006
Яндекс Rambler's Top100

В избранное