Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 641 • Страница 22 из 33<  1 ... 19  20  21  22  23  24  25 ... 33  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 04.10.2004
Для начала уточняйте режим: текстовый или графический.
Сдвигом битов скорее всего это сделать не получится, скорее всего здесь будет уместно изменять стартовый адрес выводимой области. Параллельно возникает вопрос - выводимая информация полностью укладывается по ширине экрана, больше или меньше?



Партнер
 

Member
Статус: Не в сети
Регистрация: 13.08.2005
diman1981 писал(а):
буется вывести строку на экран так чтоб она ещё и двигалась как бегущая строка.

Думаю у тебя это не графический режим.
Могу предложить работу с видеостраницами.
Сначала на текщую страницу выводишь строку, на другую. страницу выводишь эту же строку, но со смещением в нужную сторону на нужное число символов. Переключаешь страницы. На невидимой странице опять смещаешь строку. И опять переключаешь. И так пока не надоест.
Адреса и смещения видеостраниц и функции прерывания для их переключения думаю можно найти в справочнике.
Если что будет непонятно - спрашивай.

_________________
I L.A.W. you, baby!
For a GNU dawn! For freedom! :-)


 

Member
Статус: Не в сети
Регистрация: 13.08.2005
ALL Люди, кто-нибудь знает, где можно найти список мнемоник ассемблера? Заодно можно и списоск колючевых слов TASM'а.
Список нужен ввиде текста. Для каждого ключевого слова буквально пару строк описания.
Очень желательно что-бы весь список был в одном документе. Что-бы можно было скопировать целиком...
Не могу сам найти. :-(
Добавлено спустя 45 секунд
ALL Люди, кто-нибудь знает, где можно найти список мнемоник ассемблера? Заодно можно и списоск колючевых слов TASM'а.
Список нужен ввиде текста. Для каждого ключевого слова буквально пару строк описания.
Очень желательно что-бы весь список был в одном документе. Что-бы можно было скопировать целиком...
Не могу сам найти. :-(

_________________
I L.A.W. you, baby!
For a GNU dawn! For freedom! :-)


 

Member
Статус: Не в сети
Регистрация: 04.10.2004
L.A.W.
Если полный список, включая недавно включенные, то это на сайт Intel'а.
А если нет, то загляните сюда или сюда (тут еще и по TASM'у).
Можно еще понаходить :).


 

Member
Статус: Не в сети
Регистрация: 13.08.2005
maco Первая ссылка сразу не то... Нужен более компактный список...
Во втором случае тоже не то...
Нужен просто список ключевых слов. С описанием в одну две строчки.
Справочник, а не учебник...
Что-то подобное есть у Финогенова. Но я не нашел электронную версию книги...

_________________
I L.A.W. you, baby!
For a GNU dawn! For freedom! :-)


 

Member
Статус: Не в сети
Регистрация: 04.10.2004
По второй ссылке как раз очень компактный список мнемоник. Список ключей TASM'а менее компактен (4 страницы), но резать легче, чем писать :). Я дал просто оглавление, а искать по нему можете сами :).


 

Member
Статус: Не в сети
Регистрация: 20.05.2006
Откуда: Мин-Воды
пожалуйста помогите написать программу на ассемблере которая считала бы y.
y=8+|x|, если х<1 или y=|a|*2 если x>=1. x и a задаются в .data

_________________
Ставрополье Оверклокерс !!! => http://forums.overclockers.ru/viewtopic.php?t=125746


 

member+
Статус: Не в сети
Регистрация: 16.01.2004
Откуда: Estonia,Tallinn
L.A.W. писал(а):
Люди, кто-нибудь знает, где можно найти список мнемоник ассемблера? Заодно можно и списоск колючевых слов TASM'а.

http://en.wikipedia.org/wiki/X86_instruction_listings
http://home.comcast.net/~fbui/intel.html

Гы, моя первая альфа-версия моего ответа CPU-Z
http://cp.people.overclockers.ru/cgi-bin/dl.pl?id=28106&filename=CPUBRAND.zip
Правда скорее всего последняя, ибо нефик.

_________________
X99-TF/E5-2678v3+Evo212/2x16Gb-DDR4-Gloway-TYPE-a@2133-12-13-13-26/GTX1070TI/KINGSTON-SNV2S1000G


 

Member
Статус: Не в сети
Регистрация: 11.01.2006
Откуда: Таганрог
А что такое MMIX -- RISC-компьютер, встретил такое вот дело у Кнута, чем эт отличается от ассемблера?


 

Member
Статус: Не в сети
Регистрация: 04.10.2004
Kserion
Вообще-то компьютер - это объект, состоящий из таких элементов, как процессорное ядро, памяти и устройств ввода/вывода. А ассемблер - язык низкого уровня, инструкции (не путать с директивами) которого однозначным образом преобразуются в машинный код.
Здесь кратко изложено, есть ссылки дальше.


 

Member
Статус: Не в сети
Регистрация: 08.05.2006
Откуда: СПБ
вопрос про буфер клавиатуры
записать туда несколько символов и считать последний
в гугле нашел что адрес хвоста находится по адрессу 0040:001Сh и что там находится адрес на следующее место после последнего символа
но если пишу так
MOV AX, 0h

mov es, ax

mov BH, es:[0x43c]-2

mov AH, BH

mov ascii, AH
то на последний символ не попадаю
как правильно написать?

_________________
Мы все знаем, что Linux — это круто… он выполняет бесконечные циклы за 5 секунд.
* Линус Торвальдс


 

Member
Статус: Не в сети
Регистрация: 13.08.2005
Russian Это называется не буфер клавиатуры (бкфер клавиатуры - это немножко другое), а кольцевой буфер.т В нем хранятся аски и скан коды нажатых клавиш.
По адресу 0040:001С находится хвостовой указатель. Он и указывает адерс первой свободной ячейки кольцевого буфера.
Во-первых тебе нужно делать проверку, не равен ли головной указатель (0040:001A) хвостовому. Если равен - буфер пуст.
Во-вторых - приведи всю программу. Так не ясно что у тебя происходит.

_________________
I L.A.W. you, baby!
For a GNU dawn! For freedom! :-)


 

Member
Статус: Не в сети
Регистрация: 08.05.2006
Откуда: СПБ
вводит в кольцевой буфер,потом проверяет не пуст ли буфер,потом должна вывести аски код последнего символаи чтобы проверить вывести всю строку
Код:
#include <stdio.h>

#include <dos.h>

#include <conio.h>


main()

{

int N=1;

char ascii,i;

union REGS  rg;

   //î÷èùàåì áóôåð

   asm

   {

    SUB AX,AX

    MOV ES,AX

    MOV AL,ES:[41AH]

    MOV ES:[41CH],AL

   }



   printf("\nVvedite v bufer simvoli.\n\n");
//делаю задержку чтоб сиволы были введены в буфер
      delay(9999);

   printf("konec vvoda\nshitivanie poslednei klavishi c bufera\n");

   asm //вот здесь проверяем не пуст ли буфер.

   {
 //это не пойет?надо обязательно сравнить голову и хвост?
    MOV AH,0BH

    INT 21H

    MOV i, AL

   }

   if(i == 0xffff){

                      printf(" \nv bufere est' simvoli\n ");

                     }

   else

         {

         printf(" \nv bufere net simvolov.Press 'ESC' to exit\n");

                for(;;) {

                          rg.h.ah = 0;

                          int86(0x16, &rg, &rg);

                         if(rg.h.ah == 1) return(0);

                         }

         }

//здесь должен бытьь выведен аскии код последнего символа
   asm

  {

  MOV AX, 0h

  mov es, ax

  mov BH, es:[0x43с]-2

  mov AH, BH

  mov ascii, AH

  }

  printf("\nAscii = %02.2X\n",ascii);

//здесь выводится содержимое буфера
     printf("vvedenie simvoli\n");

             for(N=1;;N++)

        {

         rg.h.ah = 0;

         int86(0x16, &rg, &rg);

          printf("\nAscii = %02.2X Nomer=%d",rg.h.al,N);

            if(rg.h.ah == 1) break;

        }
}

_________________
Мы все знаем, что Linux — это круто… он выполняет бесконечные циклы за 5 секунд.
* Линус Торвальдс


 

Member
Статус: Не в сети
Регистрация: 04.10.2004
Russian
1. es:[0x43с]-2 - тройка откуда взялась :)?
2.
Цитата:
32 байта буфера начинаются с адреса 0040:001E. Указатели на голову и хвост расположены по адресам 0040:001A и 0040:001C, соответственно. Хотя под указатели отведено 2 байта, используется только младший байт. Значения указателей меняются от 30 до 60


 

Member
Статус: Не в сети
Регистрация: 08.05.2006
Откуда: СПБ
maco где-то встречал что там тройка должна быть
ладно поменял на еденицу, теперь что не ввиду выводит 02

_________________
Мы все знаем, что Linux — это круто… он выполняет бесконечные циклы за 5 секунд.
* Линус Торвальдс


 

Member
Статус: Не в сети
Регистрация: 04.10.2004
Russian
maco писал(а):
Хотя под указатели отведено 2 байта, используется только младший байт. Значения указателей меняются от 30 до 60
Указатель содержит не абсолютный адрес, а смещение относительно 0040:0000, если я не ошибаюсь :).


 

Member
Статус: Не в сети
Регистрация: 08.05.2006
Откуда: СПБ
maco все равно не понял

_________________
Мы все знаем, что Linux — это круто… он выполняет бесконечные циклы за 5 секунд.
* Линус Торвальдс


 

Advanced member
Статус: Не в сети
Регистрация: 10.04.2003
Откуда: Москва
Код:
INT 16 - KEYBOARD - GET KEYSTROKE
   AH = 00h
Return: AH = BIOS scan code
   AL = ASCII character
Notes:   on extended keyboards, this function discards any extended keystrokes,
     returning only when a non-extended keystroke is available
   the BIOS scan code is usually, but not always, the same as the hardware
     scan code processed by INT 09.  It is the same for ASCII keystrokes
     and most unshifted special keys (F-keys, arrow keys, etc.), but
     differs for shifted special keys
Код:
INT 16 - KEYBOARD - STORE KEYSTROKE IN KEYBOARD BUFFER
   AH = 05h
   CH = BIOS scan code
   CL = ASCII character
Return: AL = status
       00h if successful
       01h if keyboard buffer full
   AH destroyed by many BIOSes


 

Member
Статус: Не в сети
Регистрация: 04.10.2004
Russian
В приведенном коде вы читаете байт по адресу ES:[041C]-2. ES=0, т.е. адрес определяется только содержимым ячейки 0000:041C, которая может содержать значение от 30 до 60 (в dec) или от 1E до 3C (в hex). В результате вы читаете данные из ячейки в диапазоне 0000:001E-0000:003C (с учетом того, что буфер не пуст) :). Зона векторов прерываний интересна, конечно, но только один раз :).
В ES занесите 0040 и пробуйте :).


 

Member
Статус: Не в сети
Регистрация: 08.05.2006
Откуда: СПБ
так?
Код:
  asm
  {
  MOV AX, 0x40
  mov es, ax
  mov BL, es:[0x1c]-2
  mov AL, BL
  mov ascii, AL
  }

тогда что бы не ввел, выводит 1Е

_________________
Мы все знаем, что Linux — это круто… он выполняет бесконечные циклы за 5 секунд.
* Линус Торвальдс


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 641 • Страница 22 из 33<  1 ... 19  20  21  22  23  24  25 ... 33  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan