IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> напрямую с памятью в тескст режиме, вывод строки
сообщение
Сообщение #1


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


ПРИВЕТ!!! ALL!!
================
ВОт реализовано позиционирование сама строка
и атрибуты
==================
Procedure InitTV; assembler;
 asm
   mov ax,0003h
   int 10h
 end;


Procedure WK;Assembler;
 asm
   mov ax,0
   int 16h
   xor ax,ax
 end;

Procedure OS(x,y : Byte; S : String; c : Byte);
 Begin
  asm
   push ds
   mov ax,ss
   mov ds,ax
   lea si,y
   mov ax,80
   mov cx,[si]
   mul cx
   lea si,x
   mov cx,[si]
   add ax,cx
   mov cx,0002h
   mul cx
   mov di,ax
   mov ax,0b800h
   mov es,ax
   lea si,S
   mov ah,0
   mov al,[si]
   mov cx,ax
   inc si
@out:
   mov al,[si] {Symbol}
   mov ah,c    {attribut}
   inc si      {nex symbol}
   mov es:[di],ax  {to video memory}
   inc di      {movenau to video memory}
   inc di      {increment 2 se also for 1 symbol 2 byte memory}
   loop @out
   pop ds
  end;
 end;

BEGIN
 InitTV;
 OS(36,10,'Hello',254);
 WK;
END.


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






А зачем так сложно?
Procedure OS(x,y : Byte; S : String; c : Byte);Assembler;
Asm
 PUSH DS
 MOV AX,SS
 MOV DS,AX
 MOV AX,$B800
 MOV AL,[y]
 MOV BL,80
 MUL BL
 ADD AL,[x]
 CBW
 MOV DI,AX
 LEA SI,[s]
 MOV CL,[SI]
 XOR CH,CH
 INC SI
 MOV AH,[c]
 CLD
@@1:
 LODSB
 STOSW
 LOOP @@1
 POP DS
End;
Должно работать...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


А шо такое CBW? Какая-то фишка с флагами?


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


Цитата(BlackShadow @ 27.05.04 8:38)
А зачем так сложно?
Procedure OS(x,y : Byte; S : String; c : Byte);Assembler;
Asm
 PUSH DS
 MOV AX,SS
 MOV DS,AX
 MOV AX,$B800

а кто будет на видео настраивать
типа

MOV es,ax

 MOV AL,[y]
 MOV BL,80
 MUL BL
 ADD AL,[x]
 CBW
 MOV DI,AX
 LEA SI,[s]
 MOV CL,[SI]
 XOR CH,CH
 INC SI
 MOV AH,[c]
 CLD
@@1:
 LODSB
 STOSW
 LOOP @@1
 POP DS
End;

Должно работать...
BlackShadow не работает
даже если и настроить то тоже не работает
аттрибуты вроде совпадают а вот коды символов и их расположение нет

Сообщение отредактировано: volvo -


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


BlackShadow
кроме того
CBW
рушит адресс в регистре AX
===========
запусти через отладчик и все увидишь
smile.gif


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


to BlackShadow
еще забыл адресс умножить на 2 т.к. два байта под символ
насчет флага DF сним и так все нормально
короче вот

Procedure OS(x,y : Byte; S : String; c : Byte);
begin
Asm
 PUSH DS
 MOV AX,SS
 MOV DS,AX
 MOV AX,$B800
 mov es,ax
 MOV AL,[y]
 MOV BL,80
 MUL BL
 ADD AL,[x]
 mov cx,2
 mul cx
 xor cx,cx
 MOV dI,AX
 LEA si,s
 MOV cl,[si]
 INC si
 MOV Ah,[c]
@@1:
 LODSB
 STOSW
 LOOP @@1
 POP DS
End;
end;
begin
   asm
     mov ax,0003h
     int 10h
   end;
OS(10,15,'Hello User',4);
 asm
   mov ax,0
   int 16h
 end;
end.


Сообщение отредактировано: volvo -


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


FreeMan
CBW
преобразование байта в слово


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


Я уже почитал в TechHelp'e, но всё-равно спасибо!


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Товарисчи!!
Кто же юзает MUL, если все изначально преполагалось для оптимизации и скорости?? (или не так).

Вот мой вариант:

Uses
   CRt;
Const
    S:String = 'Assembler - forever!';
    X:Word = 60;
    Y:Word = 24;
    C:Byte = $07;

Procedure WriteXY(X,Y:Word; C:Byte; StrOffset:Word);Assembler;
asm
  mov ax,$B800
  mov es,ax
  mov ax,Y
  mov bx,ax
  shl ax,5
  shl bx,3
  add ax,bx
  shl ax,1
  add ax,X
  shl ax,1
  mov di,ax
  mov si,StrOffset
  mov ah,C
  xor ch,ch
  mov cl,[si]
  inc si
@Next:
  lodsb
  stosw
  loop @Next
end;
Begin
    CLrScr;
    WriteXY(X,Y,C,Ofs(S));
    GotoXY(X+1,Y+1);
    Write('є');
End.


CRT подключаю для проверки корректности работы...
Нумерация осей с нуля.
Регистр DS - содержит сегмент данных основной проги, юзая в модулях придется и его сохранять. blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


:D
===========
Я на это и расчитывал что кто нибудь наконец применит SHL
или SHR
самая быстрая операция процессора точнее его самая любимая
:D
============
Я ленивый


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Ну SHR конечно не прокатит...
Может как-нибудь переписать модуль CRT??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


Цитата(GLuk @ 30.05.04 7:15)
Ну SHR конечно не прокатит...
Может как-нибудь переписать модуль CRT??

а вот тут по подробнее почему не прокатит делить им не удасться что ли
на степени двойки


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Shadow, про ES согласен - забыл.
Про "сбивается адрес в AX" - так он там уже за даром не нужен.
И вообще, уболтал. Дома продебугю.
GLuk
Цитата
Может как-нибудь переписать модуль CRT

Этим я и занимался, пока не впал в .ASP на выходных в "АЗАХ" я дал довольно достаточное описание для того, чтобы можно было это сделать.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Там много переписывать не надо, исходник у меня есть, посижу как-нибудь

А насчет SHR, дык там просто незачем делить.. ;)

Сообщение отредактировано: GLuk -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


GLuk
нееет Я так понял что SHR там в CRT модуле не работает или работает но нетак
или имеет какието особенности так в чем прикол то

Сообщение отредактировано: Shadow -


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Shadow - Это вопрос или предложение?? smile.gif

Чой-то не догнал краями? blink.gif blink.gif
SHR вроде бы везде работает, или может имеешь в виду, что при написании модуля CRT не использовалась инструкция SHR?? blink.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


Значит мы оба не понимаем
Цитата
Ну SHR конечно не прокатит...
Может как-нибудь переписать модуль CRT??

пост был вот таким
Цитата
Там много переписывать не надо, исходник у меня есть, посижу как-нибудь
А насчет SHR, дык там просто незачем делить.. 

а ответ был вот таким
начет деления это понятно делить там незачем
а насчет остального нет как SHR не прокатит blink.gif
так почему не прокатит я непонял

Сообщение отредактировано: Shadow -


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


Все догнано и понято smile.gif , дык что там насчет CRT??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Lonely_Raven
****

Группа: Пользователи
Сообщений: 640
Пол: Мужской

Репутация: -  1  +


Цитата(GLuk @ 1.06.04 15:24)
Все догнано и понято smile.gif , дык что там насчет CRT??

нет мы опять не поняли
-----------
Я все-таки хочу узнать как не прокатит SHR
и почему придеться переписывать модуль CRT и вообще причем он тут
SHR это же ASM
если это уже не стало секретом и админы нас не забанят
---------------
:D :D блин чувствую придется это до отпуска отложить когда я приеду
да чтож такое то
-----------
Да простят меня админы и модератор
==================
GLuk
или ты имел ввиду что SHR непрокатит потомучто он делит
и деление там просто не нужно

Сообщение отредактировано: Shadow -


--------------------
Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ
---------------------
RTFM - Read the fucking manual
---------------------
http://www.livejournal.com/users/lonley_raven/
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Профи
****

Группа: Пользователи
Сообщений: 775
Пол: Мужской

Репутация: -  0  +


SHR не прокатит только потому, что делить дам просто незачем, при реализации просчета смещения к нужному знакоместу. Как ты правильно понял деление там просто не нужно... smile.gif blink.gif

А CRT переписать под новые процы (386+), так для интересу.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 3:19
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name