Практика программирования (Бейсик, Си, Паскаль)


         

и последняя строки билистинга окаймляют


Первая и последняя строки билистинга окаймляют подпрограмму. В них содержится название подпрограммы (intoos) и указание о том, что она может находиться в памяти достаточно далеко от точки обращения (far -признак дальнего вызова).

В каждой строке может находиться комментарий, размещаемый справа после точки с запятой. В нашем примере прокомментированы все строки для тех, кто впервые сталкивается с текстом программы на языке ассемблера.



















































0000


IntDos PROC far


/начало подпрограммы


0000 60


pusha


; сохранение всех регистров


0001 1E


push ds


; сохранение ds


0002 ОЕ


push cs


; сохранение cs


0003 1F


pop ds


; пересылка cs n ds


0004 А1 0018


mov ax, RegAX


; пересылка поля RegAX в ах
































































































































0007


CD 33





int


33h


; прерывание с номером 33h


0009


89 IE


001A


mov


RcgBX,bx


; запоминание регистра bк


000D


89 0E


001C


mov


RegCX, cx


; запоминание регистра сх


00Н


89 16


001E


mov


RegDX, dx


;запоминание регистра dx


0015


IF





pop


ds


;восстановление ds


0016


61





popa


; восстановление регистров


0017


CB





ret


; возврат из подпрограммы


0018


0000


RegAX


DW


0


;поле для содержимого ах


001A


0000


RegBX


DW


0


;поле для содержимого Ьх


001C


0000


RegCX


DW


0


;поле для содержимого сх


001E


0000


RegDX


DW


0


;поле для содержимого dx








IntDos


ENDP





конец подпрограммы


Текст приведенной выше подпрограммы в шестнадцатеричном формате запоминается в блоке данных:

DATA &Н60,&Н1Е,&НОЕ,&H1F,&НА1,&Н18,SH00,&HCD,&НЗЗ,&Н89
DATA &Н1Е,&Н1А,&Н00,&Н89,&Н0Е,&Н1С,SH00,&H89,&H16,&H1E
DATA &H00,&H1F,&H61,&HCB

Для размещения этой подпрограммы и расположенных в ее хвосте четырех двухбайтовых полей в памяти резервируется массив длиной в 32 байта -intProgd то 16) AS" INTEGER. Переписи в этот массив подлежат только первые 24 байта блока данных — собственно текст программы без полей

Содержание  Назад  Вперед