Программа извлечения квадратного корня. — КиберПедия 

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Программа извлечения квадратного корня.

2017-11-17 325
Программа извлечения квадратного корня. 0.00 из 5.00 0 оценок
Заказать работу

TITLE SQR.ASM; Извлечение корня квадратного

stacksgsegmentpara stack'Stack'

; назначить область памяти для стека

dw 32 dup(32)

stacksgends

datasg segmentpara'Data'

; определить данные

vvdb 'введите аргумент n (до 64 тыс.) $'

vivdb10,13,'значение корня= $'

srdb3 dup(0)

db 13,10,'$'

bufdb5,0,0,0,0,0,0,0

ndw?

edw1

adw?

bdw?

valdw?

twodw2

datasgends

codesgsegmentpara'Code'

; программныйсегмент

assume cs:codesg,ds:datasg,ss:stacksg

beginproc far

push ds

subax,ax

pushax

movax,datasg

movds,ax

movah, 9

movdx,offset vv

int21h

movah, 0ah

movdx,offset buf

int21h

call str2bin

movdx,0

movax,n

incax

divtwo

subdx,dx

mova,ax

iter: movax,n

diva

addax,a

movdx,0

divtwo

subdx,dx

movb,ax

subax,a

cmpax,e

jbemet

movax,b

mova,ax

jmpiter

met:movah,9

movdx,offset viv

int21h

call bin2str

movah,9

movdx,si

int21h

ret

bin2strproc near

movcx,10

movsi,offset sr+2

movax,b

m1: subdx,dx

divcx

or dl,30h

mov[si],dl

decsi

cmpax,0

jnem1

ret

bin2strendp

str2binproc near

movdi,1

movcx,0ah

movsi,offset buf+1

subbh,bh

movbl,[buf+1]

m2: moval,[si+bx]

andax,0fh

muldi

addn,ax

movax,di

mulcx

movdi,ax

decbx

jnzm2

ret

str2binendp

beginendp

codesg ends

endbegin

ЛистингпрограммыSQR.ASM.

Microsoft (R) Macro Assembler Version 5.103/19/94 23:44:19

SQR.ASM; Извлечение корня квадратного

TITLESQR.asm; Извлечение корня квадратного

0000stacksg segmentpara stack'Stack'

; назначить область памяти для стека

00000020[dw 32 dup(32)0020]

0040 stacksg ends

0000 datasgsegmentpara'Data'

; определить данные

0000A2 A2 A5 A4 A8 E2 vv db'введите аргумент n (до 64 тыс.)$'

A5 20 A0 E0 A3 E3

AC A5 AD E2 20 6E

20 28 A4 AE 20 36

34 20 E2 EB E1 2E

29 20 24

00210A 0D A7 AD A0 E7vivdb10,13,'значениекорня= $'

A5 AD A8 A5 20 AA

AE E0 AD EF 20 20

3D 20 24

00360003[sr db3 dup(0)

]

003A0D 0A 24db13,10,'$'

003D05 00 00 00 00 00bufdb5,0,0,0,0,0,0,0

00 00

00450000 ndw?

00470001 edw1

00490000 adw?

004B0000 bdw?

004D0000 valdw?

004F0002 twodw2

0051datasgends

0000codesgsegmentpara'Code'

; программныйсегмент

assume cs:codesg,ds:datasg,ss:stacksg

0000begin procfar

00001Epushds

00012B C0 sub ax,ax

000350pushax

0004B8 ---- R mov ax,datasg

00078E D8 mov ds,ax

0009B4 09 mov ah, 9

000BBA 0000 R mov dx,offset vv

000ECD 21 int 21h

0010B4 0A mov ah, 0ah

0012BA 003D R mov dx,offset buf

0015CD 21 int 21h

0017E8 007D R callstr2bin

001ABA 0000 mov dx,0

001DA1 0045 R mov ax,n

002040inc ax

0021F7 36 004F Rdiv two

00252B D2 sub dx,dx

0027A3 0049 R mov a,ax

002AA1 0045 R iter: mov ax,n

002DF7 36 0049 Rdiv a

003103 06 0049 Radd ax,a

0035BA 0000 mov dx,0

0038F7 36 004F Rdiv two

003C2B D2 sub dx,dx

003EA3 004B R mov b,ax

00412B 06 0049 Rsub ax,a

00453B 06 0047 Rcmp ax,e

004976 08 jbe met

004BA1 004B R mov ax,b

004EA3 0049 R mov a,ax

0051EB D7 jmp iter

0053B4 09met: mov ah,9

0055BA 0021 R mov dx,offset viv

0058CD 21 int 21h

005AE8 0064 Rcallbin2str

005DB4 09 mov ah,9

005F8B D6 mov dx,si

0061CD 21 int 21h

0063CBret

0064bin2str procnear

0064B9 000A mov cx,10

0067BE 003A R mov si,offset sr+2

006AA1 004B R mov ax,b

006D2B D2 m1: sub dx,dx

006FF7 F1 div cx

007180 CA 30ordl,30h

007488 14 mov [si],dl

00764Edec si

00773D 0000 cmp ax,0

007A75 F1 jne m1

007CC3ret

007Dbin2str endp

007Dstr2bin procnear

007DBF 0001 mov di,1

0080B9 000A mov cx,0ah

0083BE 003E R mov si,offset buf+1

00862A FF sub bh,bh

00888A 1E 003E Rmov bl,[buf+1]

008C8A 00 m2: mov al,[si+bx]

008E25 000F and ax,0fh

0091F7 E7 mul di

009301 06 0045 Radd n,ax

00978B C7 mov ax,di

0099F7 E1 mul cx

009B8B F8 mov di,ax

009D4Bdec bx

009E75 EC jnz m2

00A0C3ret

00A1str2bin endp

00A1begin endp

00A1codesgends

end begin

Segments and Groups:

N a m e LengthAlign Combine Class

CODESG......... 00A1 PARANONE 'CODE'

DATASG......... 0051 PARANONE 'DATA'

STACKSG........ 0040 PARASTACK'STACK'

Symbols:

N a m eType Value Attr

A........... L WORD 0049 DATASG

B........... L WORD 004B DATASG

BEGIN......... F PROC 0000 CODESG

Length = 00A1

BIN2STR........ N PROC 0064 CODESG Length = 0019

BUF.......... L BYTE 003D DATASG

E........... L WORD 0047 DATASG

ITER.......... L NEAR 002A CODESG

M1........... L NEAR 006D CODESG

M2........... L NEAR 008C CODESG

MET.......... L NEAR 0053 CODESG

N........... L WORD 0045 DATASG

SR........... L BYTE 0036 DATASG

Length = 0004

STR2BIN........ N PROC 007D CODESG Length = 0024

TWO.......... L WORD 004F DATASG

VAL.......... L WORD 004D DATASG

VIV.......... L BYTE 0021 DATASG

VV........... L BYTE 0000 DATASG

@CPU..........TEXT0101h

@FILENAME.......TEXTsqr3

@VERSION........TEXT510

95 SourceLines

95 Total Lines

28 Symbols

47690 + 382785 Bytes symbol space free

0 Warning Errors

0 SevereErrors

Формируемыйприассемблированиилистинг(дляего вызова используютмакрокомандыMS DOS: TYPE или COPY) состоит из 2-х частей:излистингапрограммыисводной информации о сегментах и идентификаторах программы.

Листинг программы содержит команды исходной ассемблерной программыисоответствующиеимобъектные коды в следующих форматах:

· левыйстолбец:16-ричноезначениесмещенияадресакоманды (счетчик команд - IP) от начала сегмента;

· праваячасть: содержит операторы и псевдооператоры ассемблера (команды и директивы программы);

· всреднейчасти объектные коды: для сегмента стека и сегмента данныхчисла,запоминаемые в соответствующих ячейках памяти; для сегмента команд это коды машинных команд МП, соответствующих операторам ассемблера.

Своднаяинформация о сегментах (segments and groups) и идентификаторах (name) дает подробную их характеристику.

В конце листинга приводятся сообщения об ошибках в программе.

Примечание. Приассемблированиии редактировании связей могут быть получены еще 2 листинга с дополнительной информацией:

листинг перекрестных ссылок указывает номер строки программы, в которой определен каждый идентификатор, и номер тех строк, в которыхимеютсяна него ссылки (этот листинг можно получить, если на запросассемблераоCross reference ввести имя файла prog (а не Nul.CRF- поумолчанию),при этом в основном листинге программы добавится столбец с номерами строк);

листинг распределения памяти содержит подробные сведения о сегментахвсех блоков программы, объединяемых загрузчиком LINK (листинг содержится в файле prog.map).

Примечание. Еслилистинг объемный и не помещается целиком на экране дисплея, можно приостановитьеговывододновременнымнажатиемклавиш Ctrl-NumLock(дляпродолжениявывода нажать любую клавишу); для полученияраспечаткилистинга на принтереследуетодновременно нажатьклавиши Ctrl-PrtSc.


Поделиться с друзьями:

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.016 с.