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

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

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

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> напрямую с памятью в тескст режиме, вывод строки
Shadow
сообщение 26.05.2004 22:51
Сообщение #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 
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 27.05.2004 11:38
Сообщение #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
Должно работать...
 К началу страницы 
+ Ответить 
FreeMan
сообщение 27.05.2004 16:23
Сообщение #3


-
****

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

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


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


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Shadow
сообщение 27.05.2004 18:35
Сообщение #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 - 6.11.2009 20:09


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


Lonely_Raven
****

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

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


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


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


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


Lonely_Raven
****

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

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


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


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


-
****

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

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


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


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GLuk
сообщение 29.05.2004 20:47
Сообщение #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 
 К началу страницы 
+ Ответить 
Shadow
сообщение 29.05.2004 23:40
Сообщение #10


Lonely_Raven
****

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

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


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


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


Профи
****

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

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


Ну SHR конечно не прокатит...
Может как-нибудь переписать модуль CRT??
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Shadow
сообщение 30.05.2004 13:51
Сообщение #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 
 К началу страницы 
+ Ответить 
BlackShadow
сообщение 31.05.2004 10:40
Сообщение #13


Гость






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

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


Профи
****

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

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


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

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

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


Lonely_Raven
****

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

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


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

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


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


Профи
****

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

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


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

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


Lonely_Raven
****

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

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


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

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

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

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


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


Профи
****

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

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


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


Lonely_Raven
****

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

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


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

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

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


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


Профи
****

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

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


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

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

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

 

- Текстовая версия 26.07.2025 5:17
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"