Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm для начинающих > Вопросы новичка


Автор: RedShadow 14.12.2005, 19:22
После краткого знакомства с асмом и глубинным устойством компа у меня накопилось несколько Небольших
вопросов:
Небольшой вопрос-1: существует ли достаточно полная, понятная, новая (хотя бы 1995-го года)smile дока по
MS-DOS на русском языке, а если существует, то где её найти?

Небольшой вопрос-2: правильно ли я понимаю: при вызове прерывания происходит джамп в начало памяти,
где хранятся подрограммы, работающие в основном с портами (т.к. большинство прерываний вызываются,
когда необходимо произвести работу с устройством), а потом происходит возврат в программу? Если так,
то можно ли достигнуть тех же результатов с помощью работы с портами? Если да, то с какими?

Небольшой вопрос-3: как организовать вывод текста в графическом режиме? Как работать со шрифтами и как
они реализованы в Паскале с точки зрения асма?

Небольшой вопрос-4: расскажите, плз, о замечательных адресах в памяти:
о таких, как 417,418(байты состояния клавиатуры) или F000:FFFE(вид компа: XT, jr,AT) пишут довольно
часто, а есть ли другие примечательные, сохраняющиеся от одной модели компа к другой?
Буду благодарен, если ответите на один-несколько вопросов. smile

Автор: sergejzr 14.12.2005, 19:23
Модератор: Название темы должно отражать ее суть!
Модератор: Пожалуйста, один топик - один вопрос.

Создайте пожалуйста темы правильно, а эту - удалим smile

Автор: Chingachguk 14.12.2005, 19:35
Цитата
Небольшой вопрос-3: как организовать вывод текста в графическом режиме? Как работать со шрифтами и как
они реализованы в Паскале с точки зрения асма?


Код

{$G+}
{$N+}
Uses CRT;
Const
   MyString: string[30] = 'Test String';
Var
   Tabl_Shrift: pointer;
   i: byte;
{Точка}
Procedure PutPixel256(Color:Byte; X,Y:word);
  Begin
    Asm
      push  0A000h
      pop   ES
      cld
      mov   AX,320
      mul   Y
      mov   DI,X
      add   DI,AX
      mov   AL,Color
      stosb
    End;
  End;
{Закрашенный прямоугольник}

...

{Вывод текста}
Procedure outt256(color:byte; x,y,addr:word);
  Begin
    Asm
      les  SI,tabl_shrift
      mov  AX,320
      mul  Y
      mov  DI,X
      add  DI,AX
      mov  BX,Addr
      mov  CL,[BX]
      inc  BX
      xor  CH,CH
@Start: mov  AL,[BX]
        inc  BX
        xor  AH,AH
        push SI
        push CX
        shl  AX,3
        add  SI,AX
        push DS
        push DI
        push 0A000h
        pop  DS
        mov  CX,8
        mov  AL,Color
@start1:  mov  AH,ES:[SI]
          inc  SI
          push CX
          mov  CL,8
@Paint:   shl  AH,1
          jnc  @Next_Pix
          mov  [DI],AL
@Next_Pix:inc  DI
          loop @Paint
          pop  CX
          add  DI,320-8
          loop @start1
        pop  DI
        pop  DS
        pop  CX
        pop  SI
        add  DI,8
        loop @Start
    End;
  End;
Begin
  Graph256;
  PutPixel256(14,10,10);
  Bar256(13,20,20,30,30);
  Line256(12,40,40,100,100);
  Circle256(11,12,140,140);
  Fill_Area(11,9,140,140);
  Outt256(9,20,170,ofs(MyString));
  repeat until keypressed;
  Close256;
End.

Автор: Akina 14.12.2005, 19:40
1) да. на rusdoc и аналогичных.
2) нет.
3) отвечено
4)
Цитата
0:400h                  RS-232 Communications Line Port Base Addresses
0:408h                  Parallel Printer Port Base Addresses
0:410h                  Equipment List
0:412h                  Reserved (POST Status on PC Convertible)
0:413h                  Memory Size
0:415h                  Reserved (PC Convertible Battery Status)
0:417h                  Shift Status
0:418h                  Extended Shift Status
0:419h                  Alternate Keypad Entry
0:41Ah                  Keyboard Buffer Head Pointer
0:41Ch                  Keyboard Buffer Tail Pointer
0:41Eh                  Keyboard Buffer
0:43Eh                  Diskette Drive Recalibrate Status
0:43Fh                  Diskette Drive Motor Status
0:440h                  Motor Off Counter
0:441h                  Last Diskette Drive Operation Status
0:442h                  Diskette Drive Controller Status
0:449h                  Display Mode
0:44Ah                  Number of Columns in Current Mode
0:44Ch                  Length of Regen Buffer
0:44Eh                  Starting Address of Regen Buffer
0:450h                  Cursor Position (Column, Row) for Display Pages
0:460h                  Cursor End Scan Line and Start Scan Line
0:462h                  Current Display Page
0:463h                  CRT Controller Base Address
0:465h                  Current Setting of Mode Control Register
0:466h                  Current Setting of Color Select Register (3x9h)
0:467h                  Reserved
0:46Ch                  Long Integer with Timer Counter
0:470h                  Timer Overflow Flag
0:471h                  Break Key State
0:472h                  Reset State Flag
0:474h                  Last Fixed Disk Operation Status
0:475h                  Number of Fixed Disks
0:476h                  Reserved
0:477h                  Reserved
0:478h                  Time-Out Values for Parallel Printers
0:47Ch                  Time-Out Values for RS-232 Communications Lines
0:480h                  Keyboard Buffer Start Offset Pointer
0:482h                  Keyboard Buffer End Offset Pointer
0:484h                  Number of Rows on Display, minus 1
0:485h                  Character Height
0:487h                  Video Control States
0:489h                  Reserved
0:48Bh                  Diskette Media Control
0:48Ch                  Fixed Disk Controller Status
0:48Dh                  Fixed Disk Controller Error Status
0:48Eh                  Fixed Disk Interrupt Control
0:48Fh                  Reserved
0:490h                  Diskette Drive 0 Media State
0:491h                  Diskette Drive 1 Media State
0:492h                  Reserved
0:494h                  Drive 0 Current Track
0:495h                  Drive 1 Current Track
0:496h                  Keyboard Status and Type Flags
0:497h                  Keyboard LED Status
0:498h                  Double-Word Pointer to User Wait Complete Flag
0:49Ch                  Long Integer with User Wait Count (Microseconds)
0:4A0h                  Wait Active Flag
0:4A1h                  Reserved
0:4A8h                  Double-Word Pointer to Video Parameters for EGA
0:4ACh                  Reserved
0:4F0h                  Intra-Application Communications Area (ICA)
0:500h                  Print Screen Status Byte (See INT 05h)
0:501h                  Reserved
0:504h                  Phantom Drive Flag
0:505h                  Reserved

F000:FFF0h              FAR JMP to Beginning of Power-On Self Test (POST)
F000:FFF5h              ROM BIOS Release Date, in ASCII
F000:FFFCh              Reserved
F000:FFFEh              System Model ID

Автор: RedShadow 14.12.2005, 20:24
Спасибо smile

Автор: Loginanton 11.3.2008, 20:24
Такой вопрос: правильно я понял, что программирование на асме для форточек состоит, в основном, в знании win api ???

Автор: Mikl_ 23.4.2008, 11:11
Loginanton, в целом да, еще пишут драйвера, есть раздел программирования под DiretX и OpenGL, сетевое программирование...

Автор: Loginanton 3.5.2008, 19:28
Mikl_, а неподскажешь какой нить справочник по winapi ? Хотябы по основным функциям. Тока чтоб понятно всё было, а то нашёл вот один справочник - http://develab.narod.ru/api/ - но я его не перевариваю smile

Автор: ecl1pse 15.5.2008, 20:30
Loginanton,  ты же мне помоему сам посоветовал рассылку с креклаба?! Там как раз эти самые win api и описываются, в ЧТИВЕ II, вроде =)

Автор: pSOV 21.5.2008, 12:18
Я пользовался MSDN - наверное самый полный справочник. Набери на msdn.microsoft.com в поиске "windows api"

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)