Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ASM_ПЗ111.doc
Скачиваний:
9
Добавлен:
09.09.2019
Размер:
131.58 Кб
Скачать

2.5 Текст программы

.286

Data Segment

X1 DB 5,2,3,4

X2 DB 3,6

Y1 DB 0,0,0,0,0,0

X3 DB 5,2,3,4,1

X4 DB 1,8,2

Y2 DB 0,0,0,0,0,0,0,

Data EndS

Stack Segment

dw 64 dup(?)

StkTop Label Word

Stack EndS

Code Segment

Assume CS:Code,SS:Stack,ES:Data,DS:Data

ProgramStart PROC

push bp

MOV bp,sp ;привязка к верхушке стека

MOV BX,[BP+4]

MOV DI,[BP+6]

MOV SI,[BP+8]

MOV CX,[BP+10]

m1: MOV SI, [BP+8]

PUSH CX

PUSH BX

MOV Ah,dh

mov al,ah

mov ah,0

MOV CX,AX

xor ax,ax

m2:

MOV AL, byte ptr [SI]

MUL byte ptr [DI]

AAM

ADC AL, byte ptr [BX]

AAA

MOV byte ptr [BX],AL

MOV AL,AH

clc

ADC AL,byte ptr[BX-1]

AAA

MOV byte ptr [BX-1],AL

MOV DL,byte ptr [BX-1]

DEC SI

DEC BX

DEC CX

JNZ m2

DEC DI

POP BX

DEC BX

POP CX

DEC CX

JNZ m1

mov dx,0

MOV BX,[BP+4]

MOV DL,byte ptr [BX]

MOV DL,byte ptr [BX-1]

MOV DL,byte ptr [BX-2]

MOV DL,byte ptr [BX-3]

MOV DL,byte ptr [BX-4]

MOV DL,byte ptr [BX-5]

MOV DL,byte ptr [BX-6]

MOV DL,byte ptr [BX-7]

POP BP

ret 8

ProgramStart ENDP

Start:

;инициализация

MOV AX, Data

MOV DS, AX

MOV ES, AX

MOV AX, Stack

MOV SS, AX

MOV SP, offset StkTop

xor AX,AX

MOV CX, 2

MOV DH, 4

PUSH CX

PUSH offset X1+ type X1*3

PUSH offset X2+ type X2

PUSH offset Y1+ type Y1*5

Call ProgramStart

xor AX,AX

MOV CX, 3

MOV DH, 5

PUSH CX

PUSH offset X3+ type X3*4

PUSH offset X4+ type X4*2

PUSH offset Y2+ type Y2*8

Call ProgramStart

Code EndS

End Start

3 Разработка программы с интерфейсом

3.1 Спецификация задачи

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

Кроме того добавятся специальные интерфейсные переменные и переменная - клавиатурный буфер. Основные расчетные действия программы с интерфейсом в точности такие же, как и в варианте без интерфейса. В этом и последующих разделах будут рассматриваться только добавленные участки кода, а также те, в которые были внесены изменения.

Для реализации программы с интерфейсом необходимо организовать следующие механизмы:

  • очищать экран;

  • задать позиции курсора;

  • выполнять проверку каждого введенного символа;

  • выполнять корректирующее сложение;

  • сравнивать максимальное количество элементов с максимально допустимым;

  • разделять пробелом элементы при вводе;

  • корректировать слово при неполном вводе;

  • копировать данные из переменной-буфера в подпрограмму для расчета произведения;

  • очищать переменную-накопитель после каждого обработанного массива;

  • выводить результаты расчета на экран.

3.2 Организация данных

Описание переменных, относящихся к реализации интерфейса:

  • Mes1 db 'vvedite number: ', '$' – переменная-сообщение «введите число», которая выводится в начале работы программы;

  • NextLine DB ' ',0Dh, 0Ah, '$'– переменная – переход на следующую строку

  • mes5 db 'rezult :', '$'– переменная-сообщение «результат», которая выводит результат обработки программы;

  • len11-переменная -константа которая содержит разрядность первого числа 4d;

  • len12-переменная -константа которая содержит разрядность второго числа 2d;

  • len21-переменная -константа которая содержит разрядность третьего числа 5d;

  • len22-переменная -константа которая содержит разрядность четвертого числа 3d;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]