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



         

Глава 10. - часть 5


Первая и последняя строки билистинга окаймляют подпрограмму. В них содержится название подпрограммы (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 байта блока данных — собственно текст программы без полей




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