![]() |
1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!
![]() ![]() |
![]() |
Shadow |
![]()
Сообщение
#1
|
![]() Lonely_Raven ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 640 Пол: Мужской Репутация: ![]() ![]() ![]() |
ПРИВЕТ!!! 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/ |
BlackShadow |
![]()
Сообщение
#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 |
![]()
Сообщение
#3
|
- ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: ![]() ![]() ![]() |
А шо такое CBW? Какая-то фишка с флагами?
-------------------- бб
|
Shadow |
![]()
Сообщение
#4
|
![]() Lonely_Raven ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 640 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(BlackShadow @ 27.05.04 8:38) А зачем так сложно? BlackShadow не работает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;
Должно работать... даже если и настроить то тоже не работает аттрибуты вроде совпадают а вот коды символов и их расположение нет Сообщение отредактировано: volvo - 6.11.2009 20:09 -------------------- Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/ |
Shadow |
![]()
Сообщение
#5
|
![]() Lonely_Raven ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 640 Пол: Мужской Репутация: ![]() ![]() ![]() |
BlackShadow
кроме того CBW рушит адресс в регистре AX =========== запусти через отладчик и все увидишь ![]() -------------------- Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/ |
Shadow |
![]()
Сообщение
#6
|
![]() Lonely_Raven ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 640 Пол: Мужской Репутация: ![]() ![]() ![]() |
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/ |
Shadow |
![]()
Сообщение
#7
|
![]() Lonely_Raven ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 640 Пол: Мужской Репутация: ![]() ![]() ![]() |
FreeMan
CBW преобразование байта в слово -------------------- Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/ |
FreeMan |
![]()
Сообщение
#8
|
- ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 480 Пол: Мужской Репутация: ![]() ![]() ![]() |
Я уже почитал в TechHelp'e, но всё-равно спасибо!
-------------------- бб
|
GLuk |
![]()
Сообщение
#9
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: ![]() ![]() ![]() |
Товарисчи!!
Кто же юзает 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 - содержит сегмент данных основной проги, юзая в модулях придется и его сохранять. ![]() |
Shadow |
![]()
Сообщение
#10
|
![]() Lonely_Raven ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 640 Пол: Мужской Репутация: ![]() ![]() ![]() |
:D
=========== Я на это и расчитывал что кто нибудь наконец применит SHL или SHR самая быстрая операция процессора точнее его самая любимая :D ============ Я ленивый -------------------- Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/ |
GLuk |
![]()
Сообщение
#11
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ну SHR конечно не прокатит...
Может как-нибудь переписать модуль CRT?? |
Shadow |
![]()
Сообщение
#12
|
![]() Lonely_Raven ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 640 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(GLuk @ 30.05.04 7:15) Ну SHR конечно не прокатит... Может как-нибудь переписать модуль CRT?? а вот тут по подробнее почему не прокатит делить им не удасться что ли на степени двойки -------------------- Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/ |
BlackShadow |
![]()
Сообщение
#13
|
Гость ![]() |
Shadow, про ES согласен - забыл.
Про "сбивается адрес в AX" - так он там уже за даром не нужен. И вообще, уболтал. Дома продебугю. GLuk Цитата Может как-нибудь переписать модуль CRT Этим я и занимался, пока не впал в .ASP на выходных в "АЗАХ" я дал довольно достаточное описание для того, чтобы можно было это сделать. |
GLuk |
![]()
Сообщение
#14
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: ![]() ![]() ![]() |
Там много переписывать не надо, исходник у меня есть, посижу как-нибудь
А насчет SHR, дык там просто незачем делить.. ;) Сообщение отредактировано: GLuk - 31.05.2004 20:50 |
Shadow |
![]()
Сообщение
#15
|
![]() Lonely_Raven ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 640 Пол: Мужской Репутация: ![]() ![]() ![]() |
GLuk
нееет Я так понял что SHR там в CRT модуле не работает или работает но нетак или имеет какието особенности так в чем прикол то Сообщение отредактировано: Shadow - 1.06.2004 11:32 -------------------- Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/ |
GLuk |
![]()
Сообщение
#16
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: ![]() ![]() ![]() |
Shadow - Это вопрос или предложение??
![]() Чой-то не догнал краями? ![]() ![]() SHR вроде бы везде работает, или может имеешь в виду, что при написании модуля CRT не использовалась инструкция SHR?? ![]() |
Shadow |
![]()
Сообщение
#17
|
![]() Lonely_Raven ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 640 Пол: Мужской Репутация: ![]() ![]() ![]() |
Значит мы оба не понимаем
Цитата Ну SHR конечно не прокатит... Может как-нибудь переписать модуль CRT?? пост был вот таким Цитата Там много переписывать не надо, исходник у меня есть, посижу как-нибудь А насчет SHR, дык там просто незачем делить.. а ответ был вот таким начет деления это понятно делить там незачем а насчет остального нет как SHR не прокатит ![]() так почему не прокатит я непонял Сообщение отредактировано: Shadow - 1.06.2004 17:23 -------------------- Программа делает то что вы ей приказали а не то что бы ВАМ хотелось бы.
МЕРФИ --------------------- RTFM - Read the fucking manual --------------------- http://www.livejournal.com/users/lonley_raven/ |
GLuk |
![]()
Сообщение
#18
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: ![]() ![]() ![]() |
Все догнано и понято
![]() |
Shadow |
![]()
Сообщение
#19
|
![]() Lonely_Raven ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 640 Пол: Мужской Репутация: ![]() ![]() ![]() |
Цитата(GLuk @ 1.06.04 15:24) Все догнано и понято ![]() нет мы опять не поняли ----------- Я все-таки хочу узнать как не прокатит 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/ |
GLuk |
![]()
Сообщение
#20
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 775 Пол: Мужской Репутация: ![]() ![]() ![]() |
SHR не прокатит только потому, что делить дам просто незачем, при реализации просчета смещения к нужному знакоместу. Как ты правильно понял деление там просто не нужно...
![]() ![]() А CRT переписать под новые процы (386+), так для интересу. |
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 5:17 |