Показать сообщение отдельно
Старый 17.10.2002, 13:37     # 2
helldomain
Administrator
 
Аватар для helldomain
 
Регистрация: 13.05.2002
Сообщения: 11 227

helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
helldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиургhelldomain Демиург
Nu, nachnem s togo, chto u kajdogo processora swoi ASM. Wozmem komandu wizowa preriwaniya na 80x86: Int NUMBER. Gde number: nomer preriwaniya. W twoem primere eto 21 w schesnadcaterichnoi. Wot prostoi primer multisegmentnoi ASM progi.

Assume SS: SSeg, DS: DSeg, CS: CSeg
SSeg Segment Stack
SData dw 1024 dup (?)
SSeg EndS

DSeg Segment
SampleData dp 'Pofig'
DSeg EndS

CSeg Segment
Main Proc
Mov Dx, Seg DSeg
Mov Ds, Dx

Mov Ax, 4C00h
Int 21h

Main EndP
CSeg EndS
End Main

W proge est 3 segmenta. Assembler obrabatiwaet segmenti odin za drugim i perewodit komandi w chisla. Estewstwenno proishodit prowerka chto ti pishesh, i.t.d. Naprimer Mov Es, Ds (skopirowat soderjimoe Ds w Es) rabotat na 86 processore ne budet, t.k. takoi instrukcii _normalnij_ CPU ne znaet. Poluchish oshibku. Segment SSeg - eto stack - tuda padaet informaciya o tochkah wozwrata iz procedur i funkcij i chasto stack ispolzyetsya dlya peredachi informacii mejdu procedurami ili w kachestwe wremennogo hranilischa informacii. Wtoroi segment: DSeg - tam hranyatsya wse staticheskie dannie. Tretij: CSeg - tam hranitsya wipolnyaemij kod. Chto eshe delaet Assembler - eto nakoplenie informacii o metkah. Kajdaya procedura, oboznachenie bloka dannih i prosto adresnaya metka - eto imya kotoroe obrabatiwaet linkowschik pri sbore objektnih failow w odno celoe - t.e. wipolnyaemij fail.
helldomain вне форума