TITLE prg_10_3

STACK SEGMENT PARA STACK ‘STACK’

DB 64 DUP(‘STACK’); Область стека

STACK ENDS

DSEG SEGMENT PARA PUBLIC ‘DATA’

Mas db 1,0,9,8,0,7,8,0,2,0; это заданный одномерный массив байт

Len_mas equ 10; количество элементов в массиве

DSEG ENDS

CSEG SEGMENT PARA PUBLIC ‘CODE’

ASSUME CS:CSEG, DS:DSEG, SS:STACK

START: PUSH DS

SUB AX,AX

PUSH AX

MOV AX,DSEG; инициировать адрес сегмента данных

MOV DS,AX

MOV СX, LEN_MAS; в сх – счетчик элементов массива

XOR AX,AX

XOR SI,SI

JCXZ EXIT; проверка сх на 0, если 0, то выход

CYC1: CMP MAS[SI],0;сравнить очередной элемент задан. массива с 0

JNE M1; если не равно 0, то на m1

INC AL; увеличение счетчика нулевых элементов

M1: INC SI; перейти к следующему элементу

LOOP CYC1

EXIT: MOV AX, 4C00H

INT 21H; возврат управления операционной системе

CSEG ENDS

END START

TITLE prg_10_4

STACK SEGMENT PARA STACK ‘STACK’

DB 64 DUP(‘STACK’); Область стека

STACK ENDS

DSEG SEGMENT PARA PUBLIC ‘DATA’

Mas db 1,0,9,8,0,7,8,0,2,0; это заданный одномерный массив байт

Len_mas equ 10; количество элементов в массиве

MESS1 DB ‘в массиве нет нулевых элементов, $’

MESS2 DB ‘найден первый нулевой элемент в позиции, $’

DSEG ENDS

CSEG SEGMENT PARA PUBLIC ‘CODE’

ASSUME CS:CSEG, DS:DSEG, SS:STACK

START: PUSH DS

SUB AX,AX

PUSH AX

MOV AX,DSEG; инициировать адрес сегмента данных

MOV DS,AX

MOV СX, LEN_MAS; в сх – счетчик элементов массива

XOR AX,AX

XOR SI,SI

JCXZ EXIT; проверка сх на 0, если 0, то выход

MOV SI, -1; готовим SI к адресации элементов MAS

CYC1: INC SI

CMP MAS[SI],0;сравнить очередной элемент задан. массива с 0

JZ FOUND; на эту команду попадем, если нуль найден

LOOPNZ CYC1; цикл перебора элементов массива

NOTFOUND: здесь поместить команды выдачи сообщения MESS1

JMP EXIT

FOUND: INC SI; определить номер первого нулевого элемента

......здесь поместить команды выдачи сообщения MESS2 и номера первого нулевого элемента

EXIT: MOV AX, 4C00H

INT 21H; возврат управления операционной системе

CSEG ENDS

END START


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: