JMP M27 ;безусловный переход на метку M27
M26: ADD AL,30H ;увеличение AL на 30Н
M27: MOV [SI],AL ;пересылка из AL в SI
ADD SI,1H ;индекс SI увеличивается на 1
MOV AL,DL ;пересылка в регистр AL содержимого DL
SHL AL,4H ;логический сдвиг влево на 4 бита
SHR AL,4H ;логический сдвиг вправо на 4 бита
CMP AL,0AH ;сравнение вида AL<0АН и если условие верно...
JB M28 ;... переход к метке М28
ADD AL,37H ;увеличение AL на 37Н
JMP M29 ;безусловный переход на метку M29
M28: ADD AL,30H ;увеличение AL на 30Н
M29: MOV [SI],AL ;пересылка из AL в SI
MOV AH,3CH ;открытие файла для записи
LEA DX,FOUT ;загрузка эффективного адреса файла FOUT в DX
MOV AL,01H ;режим открытия"только для записи"
INT 21H ;формирование прерывания типа 21h
MOV BX,AX ;запись в файл
MOV AH,40H
MOV CX,4H ;число записываемых байт
LEA DX,MAS3 ;загрузка эффективного адреса MAS3 в DX
INT 21H ;формирование прерывания типа 21h
MOV AH,3EH ;закрытие файла для записи
INT 21H ; формирование прерывания типа 21h
MOV AX,4C00H ; формирование функции стандартного выхода
INT 21H ; формирование прерывания типа 21h и стандартный выход
main endp ; конец процедуры main
end main ; конец программы с точкой входа main
Задание: Найти разность между максимальным и минимальным значением в массиве 10 двухбайтных чисел.
Текст программы 3:
model small ;директива модели памяти model с параметром small
.data ; упрощенная директива сегмента данных
n equ 10 ;длина массива
MAS1 DW 20 DUP(0) ; выделение памяти под 20-элементный массив
MAS2 DW 10 DUP(0) ; выделение памяти под 10-элементный массив
MAS3 DB 5 DUP(0) ; выделение памяти под 5-элементный массив
ENTS DB 4 DUP(0) ; выделение памяти под 4-элементный массив
FIN DB 'in.txt',00H ;определение файла источника
FOUT DB 'OUT.TXT',00H ;определение файла приемника
.code ; упрощенная директива сегмента кода
main proc ; начало процедуры main
mov ax,@data ; инициализация сегментного...
mov ds,ax ; ...регистра ds
MOV AH,3DH ;открытие файла
MOV AL,00H ;режим открытия"только для чтения"
LEA DX,FIN ;загрузка эффективного адреса файла FIN в DX
INT 21H ; формирование прерывания типа 21h
MOV BX,AX ;чтение из файла
MOV AH,3FH
MOV CX,28H ;число байтов для чтения
LEA DX,MAS1 ;загрузка эффективного адреса файла MAS1 в DX
INT 21H ; формирование прерывания типа 21h
MOV AH,3EH ;закрытие файла для чтения
INT 21H ; формирование прерывания типа 21h
MOV CX,0AH ;преобразование из ASCII кода
LEA SI,MAS1 ;загрузка эффективного адреса MAS1 в регистр SI
LEA DI,MAS2 ;загрузка эффективного адреса MAS2 в регистр DI
M0: MOV AL,[SI] ;пересылка в регистр AL SI-го элемента массива
CMP AL,40H ;сравнение вида AL<40H и если условие верно...
JB M1 ;... переход к метке М1
SUB AL,37H ;в противном случае уменьшение AL на 37Н
JMP M2 ;безусловный переход на метку M2
M1: SUB AL,30H ; уменьшение AL на 30Н
M2: SHL AL,4H ;логический сдвиг влево на 4 бита
MOV DH,AL ;пересылка содежмого AL в DH
ADD SI,1H ;индекс SI увеличивается на 1
MOV AL,[SI] ;пересылка в регистр AL SI-го элемента массива
CMP AL,40H ;сравнение вида AL<40H и если условие верно...
JB M3 ;... переход к метке М3
SUB AL,37H ;в противном случае уменьшение AL на 37Н
JMP M4 ;безусловный переход на метку M4
M3: SUB AL,30H ; уменьшение AL на 30Н
M4: ADD DH,AL ;сложение содержимого DH и AL
ADD SI,1H ;индекс SI увеличивается на 1
MOV AL,[SI] ;пересылка в регистр AL SI-го элемента массива
CMP AL,40H ;сравнение вида AL<40H и если условие верно...
JB M5 ;... переход к метке М5
SUB AL,37H ; уменьшение AL на 30Н
JMP M6 ;безусловный переход на метку M6
M5: SUB AL,30H ; уменьшение AL на 30Н
M6: SHL AL,4H ;логический сдвиг влево на 4 бита
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.