St segment stack

dw 64 dup (?)

St ends

N equ 1000

Data segment public

A dw N dup (?)

public A,N; Входные точки

extrn Summa:word; Внешняя переменная

Diagn db 'Переполнение!',13,10,'$'

Data ends

Code segment public

assume cs:Code,ds:Data,ss:St

Start:mov ax,Data

mov ds,ax

mov cx,N

sub bx,bx; индекс массива

L: inint A[bx];Ввод массива A

add bx,type A

loop L

extrn Sum:far; Внешнее имя

call Sum; Процедура суммирования

outint Summa

Newline

; А теперь вызов с ошибкой

mov A,7FFFh; Maxint

mov A+2,1; Для переполнения

call Sum

outint Summa; Сюда возврата не будет

Newline

finish ; Вообще-то не нужен

public Error; Входная точка

Error:lea dx,T

Outstr

Finish

Code ends

end Start; головной модуль

 

В нашем головном модуле три входные точки с именами A,N и Error и два внешних имени: Sum, которое имеет тип дальней метки, и Summa, которое имеет тип слова. Работу программы подробно рассмотрим после написания текста второго модуля с именем p2.asm.

Comment * модуль p2.asm

Суммирование массива, контроль ошибок

include io.asm не нужен – нет ввода/вывода

Используется стек головного модуля

В конечном end не нужна метка Start

*

Data segment public

Summa dw ?

public Summa; Входная точка

extrn N:abs; Внешняя константа

extrn A:word; Внешний адрес

Data ends

Code segment public

assume cs:Code,ds:Data

public Sum; Входная точка








Дата добавления: 2015-10-05; просмотров: 1169;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.007 сек.