Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Assembler

Автор: akaGM
Дата сообщения: 11.06.2009 18:09
ipsony144
какая модель и приложение?
для flat и 32 вообще говоря должно быть вот так:
intcmd_getcom equ dword ptr [ebx-6]
...
call intcmd_getcom
Автор: Skyey1991
Дата сообщения: 16.06.2009 15:27
Народ помогите пржалуйста с программой... Никак не могу сделать ее((
В общем вот условие задачи:
Есть массив. Сформировать из исходного массива новый, из элементов, больших заданного числа А
Автор: MissAlice
Дата сообщения: 16.06.2009 20:08
здравствуйте, очень нужна ваша помощь
есть программа на паскале, сделанная через встроенный ассемблеровский модуль, надо переделать ее так, чтоб программа, написанная на ассемблере, вызывалась из паскаля
вот задание дословно:
В Pascal-программе использовать директиву компилятора { $L <имя .obj-файла> }, где .obj-файл - это оттранслированная программа на языке ассемблера, которая вызывается из Pascal-программы.

текст программы, написанной через встроенный ассемблеровский модуль(программа переводит строчные буквы в заглавные):

program lab4;
uses crt;
var stroka:string;
max:integer;
right,left:byte;
flag1,flag2:boolean;


label cycle,next2;
begin
clrscr;
writeln('введите строку символов:');
readln(stroka);
flag1:=true;
flag2:=true;
repeat
writeln;
if not flag2 then writeln('ошибка ввода не цифровой информации');
if not flag1 then writeln('ошибка.Количество обрабатываемых символов не может превышать длину строки и быть меньше нуля');
flag1:=true;
flag2:=true;
writeln('введите количество обрабатываемых символов:');
{$I-}readln(max);
if (ioresult<>0) then flag2:=false;
if ((max>length(stroka)) or (max<0)) then flag1:=false;
until ((flag1) and (flag2));
asm
mov cx, max;
inc cx
lea di,stroka
lea si,stroka
mov right,7Ah ;
mov left,61h;

cycle:
lodsb
cmp al, right;
ja next2 ;

cmp al, left
jl next2;
mov di,si;
dec di ;

sub al,20h ;
stosb

next2: ;
loop cycle ;

end;
writeln;
writeln('выходная строка:');
writeln(stroka);
readkey;
end.
Автор: Molniev
Дата сообщения: 19.08.2009 14:44
Как ответ на твой вопрос могу посоветовать книгу Юрова Assembler: Учебник для вузов. Или в самой книге или в практикуме к ней (я точно не помню) есть глава с описанием подключения асемблерного модуля.
Автор: SERGE_BLIZNUK
Дата сообщения: 19.08.2009 20:54
Molniev, а я Вам могу порекомендовать иногда смотреть на дату сообщения.
очень-очень сильно сомневаюсь, что MissAlice два с половиной месяца терпеливо ждёт Ваш ответ... ;)
Автор: dextermd
Дата сообщения: 04.09.2009 19:50
Добрый день. Помогите решить задачу на ассемблере: "Напишите программу которая меняет текущий диск на диск A: и потом после небольшой паузы возвращается на ранее активный диск". Как сделать эту паузу ? Вот что я сделал:

MODEL SMALL
STACK 100h

CODESEG
Start:
mov ax,@data
mov ds,ax

mov ah,19h ;запрашиваем текущий активный диск
int 21h

mov bl,al ;запоминаем текущий активный диск

mov ah,0eh ;делаем активным
mov dl,0 ;диск А
int 21h

;здесь должна быть пауза

mov ah,0eh ;делаем активным
mov dl,bl ;предыдущий активный диск
int 21h

mov ah,04Ch ;Выход
int 21h

End Start
Автор: akaGM
Дата сообщения: 04.09.2009 20:24
dextermd

Цитата:
после небольшой паузы

если не нужна точность до миллисекунд или до определённого кол-ва тиков, то можно
по-простому использовать NOP'ы, холостой цикл или джампы вперёд:


Код: mov cx, 0ffh ; cx=типа счётчик, подбираемый...
delayloop:
loop delayloop
Автор: Prober
Дата сообщения: 05.09.2009 04:41
dextermd
1. В ДОСе есть функция 2Ch, возвращает текущее время. Вызвать ее перед задержкой, к полученному времени добавить желаемую длительность задержки и вызывать функцию в цикле, сравнивая текущее время с требуемым.
2. В ДОСе по адресу 40:6C лежит 4-байтовый счетчик тиков таймера, инкрементируется ~18 раз/сек. Опросить перед задержкой, посчитать, сколько в нем должно стать после задержки, и опрашивать, пока не станет.
Автор: akaGM
Дата сообщения: 05.09.2009 13:33
Prober

Цитата:
2. В ДОСе по адресу 40:6C

не в досе, а в биосе, точнее в rom-bios data area...

dextermd
а вообще, корректнее будет не

Цитата:
после небольшой паузы
, а по нажатию эникея с подсказкой на экране,
если это не просто учебное задание...
Автор: Prober
Дата сообщения: 06.09.2009 03:13
akaGM

Цитата:
не в досе, а в биосе

В данном контексте BIOS - часть DOS. Не вижу смысла в вашем противопоставлении части целому.

Цитата:
точнее в rom-bios data area

Тогда уж в BIOS data area, при чем здесь ROM...
Автор: chichmarin
Дата сообщения: 07.09.2009 06:32
Всем доброго времени суток!
[OFF] Нужно написать на ассемблере программу "для выдачи на печать содержимого указанного каталога", с комментированием строчек в программе, за умеренную плату, может кто возьмется?

принтер LPT
под WinAPI

OS: Windows XP Pro SP3 Rus
P.S. Немного поправил.
Автор: SERGE_BLIZNUK
Дата сообщения: 07.09.2009 13:19
chichmarin

Цитата:
для выдачи на печать

на экран (устройство вывода), в файл, на принтер (на LPT)?
под MS DOS, под WinAPI ?
Автор: akaGM
Дата сообщения: 08.09.2009 15:41
Prober
потому что биос -- это микрокод пзу, кот. никак не связан с ОС

Цитата:
при чем здесь ROM

а РОМ -- потому что РОМ и есть,
не сразу в ОСях появилась возможность снимать копию с биоса (например, shadow bios), только чтение, отюда и пошло
rom как rom...


Цитата:
Тогда уж в BIOS data area

а это да, сейчас это название (BDA) стало общеупотребительным...

---
chichmarin
http://forum.ru-board.com/topic.cgi?forum=33&topic=2395#1
Автор: SERGE_BLIZNUK
Дата сообщения: 08.09.2009 22:36
akaGM ну и взялись бы за работу (я про chichmarin), что человека зазря по темам гонять ;)

Автор: akaGM
Дата сообщения: 09.09.2009 07:20
SERGE_BLIZNUK
1. я не спец. конкретные вопросы в _самостоятельных_ работах готов обсуждать, не хочу писать лабы и плодить "программистов"

2. он:

Цитата:
Всего записей: 1 | Зарегистр. 07-09-2007 | Отправлено: 07:32 07-09-2009

брался бы -- не гонял
и не гонять, а показать, где ещё можно спросить
считаю, что помог чем _мог_...
Автор: chichmarin
Дата сообщения: 09.09.2009 08:16

Цитата:
SERGE_BLIZNUK

сорри, забыл указать под WinAPI, принтер LPT.

Цитата:
akaGM

сенкс, спрошу там.

P.S. могу выложить еще листинг подобной проги, но там просто вывод содержимого текущего каталога прямо в окно консоли.
Автор: SERGE_BLIZNUK
Дата сообщения: 09.09.2009 11:55
akaGM, если Вам моя реплика показалась оскорбительной - то приношу свои извинения.


Цитата:
сорри, забыл указать под WinAPI, принтер LPT.

ну, если речь идёт о программке под Windows (WIN32), то какой порт - это уже сама Винда будет разбираться... думаю, что можно ограничиться печатью на принтер по умолчанию...

p.s. сорри, собственнных знаний/опыта у меня недостаточно, поэтому могу только "умничать"...
Автор: akaGM
Дата сообщения: 09.09.2009 12:04
SERGE_BLIZNUK

Цитата:
если Вам моя реплика показалась оскорбительной

да ни в коей мере...

а что это здесь у всех винда с какой-то ссылкой получается?
зачем?
Автор: chichmarin
Дата сообщения: 09.09.2009 13:03

Цитата:
а что это здесь у всех винда с какой-то ссылкой получается?

ага само

Цитата:
зачем?

а хз даже....пеар может))

Добавлено:

Цитата:
SERGE_BLIZNUK

может и можно, но вот сам я не могу ))
Автор: bomzzz
Дата сообщения: 09.09.2009 19:47
люди скажите пожалуйста, гуглил гуглил ничего понять не маху -
в текстовых и графических режимах 0-13 изменить цвет экрана можно только зарисовав всё одним цветом????
Автор: akaGM
Дата сообщения: 09.09.2009 20:09
bomzzz
ты про ега-вга режимы что ли?
например, выставляется атрибут и меняется мода/палитра/страница
а что ты конкретно хочешь?
Автор: bomzzz
Дата сообщения: 09.09.2009 21:24
какими параметрами и прерыванием изменить цвет экрана в режимах экрана 0-13

mov ax,12h
INT 10h
.....
теперь как сделать экран не черным, а синим. ну и в принципе для режимов 100-... тоже
Автор: Lyrik
Дата сообщения: 09.09.2009 23:34
bomzzz
насколько я помню через прерывания нельзя, лучше писать напрямую в память.
для текстовых режимов просто:

Код:     mov ax, 0B800h
    mov es, ax
    
    mov ax, 03h
    int 10h
    mov ah, 10h
    mov al, ' '
    mov cx, 07D0h
    xor di, di
    rep stosw
Автор: bomzzz
Дата сообщения: 10.09.2009 00:03
ну нельзя значит - мне точно хотелось понять. просто по точкам это идиотизм. вот нигде толком не написано - я страниц 10 гугла пролистал, мозги у людей от ассемблера ссохлись - соверешенно объяснять не умеют. режимов много. по точком быстро рисует.
спасибо.
org 100h
mov ax,12h
INT 10h
MOV AX, 0A000H
MOV ES,AX
MOV DI,0
MOV AX, 0FFFFH
MOV CX, 19200
REP STOSW
mov ah, 0h
int 16h
retf
я вот так сделал - только екран белый получается или в полосочку наверно не цветной режим, а по точкам рисует цветом. сейчас буду понимать как цвет включить. задача на понимание rep stos
Автор: Abs62
Дата сообщения: 10.09.2009 00:49
bomzzz
Так просто не выйдет - тут надо работать с регистрами видеоконтроллера через соответствующие порты. Если интересно, почитай для начала Джордейна - "Справочник программиста персональных компьютеров типа IBM PC, XT и AT".
Автор: bomzzz
Дата сообщения: 10.09.2009 00:54
ага точно вот я тормознул - только что это делал на турбо бейсике. наконец то статья подвернулась на русском и с примером. там про последовательные порты а я это делал - уже синий у меня екранчик

всем пасибки
прога 70 байт получилася


Цитата:

я уж принаглею...
почему в досовском окошке (не развернутом во весь экрна, а в маленьком), мышь не включается. у меня вот есть программы досовские которые мышь поддерживают, на эмуляторе мышь появляется и управляет курсором, а реально - шиш.
Автор: akaGM
Дата сообщения: 10.09.2009 12:50
bomzzz
все граф. режимы -- режимы APA -- all pixels addressable
любой символ выводится попиксельно в отличие от текстового "знакоместо=attibute/char" и никуда от этого не деться

зачем это тебе, а? уж лучше svga займись...
Автор: bomzzz
Дата сообщения: 10.09.2009 13:05
svga уже сделал. мышь сделал. но вот на режиме 0 мышь не получается. на эмуляторе работает, а для дос под виндовс видимо какой то секретик есть

Цитата:

ещё не могу придумать как из 16 битных приложений 32 битные запускать, для этого 16 битное нужно запускать через 32 битный стартер, чтоб можно было в него вернуться запустить нужное приложение.... а вот как вернуться назад в 16 битное чета не получается, пока только ошибка получается.
Автор: bomzzz
Дата сообщения: 10.09.2009 18:06
оказывается нужен драйвер для мыши - вот только как его присобачить кто бы знал. и что б не в систему городить а только к проге.

вообщем - чушь, никакого драйвера не надо. просто надо курсор перемещать в позицию мыши. все работает.
мышь то отражается - просто что то надо двигать по экрану
Автор: bomzzz
Дата сообщения: 19.09.2009 00:54
никто не подскажет как в масме (или тасме) подключать (обращаться) к wmi? или где это можно прочитать.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384

Предыдущая тема: .NET GUI компоненты


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.