КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Функция ввода символа
ВЫВОД СТРОКИ НА ЭКРАН ДИСПЛЕЯ ФУНКЦИИ ВВОДА/ВЫВОДА ПРИМЕР НА ОБРАБОТКУ МАТРИЦЫ
Сумма матрицы. A DW 50 DUP (?) N DW (?) M DW (?) S DW (?) ; -------------------- ; ┌───┬───┬───┬───┬───┐ ┐ ; │A11│A12│A13│A14│A15│>┐ │ A [BX + SI] ; └───┴───┴───┴───┴───┘ │ │ / \ ; ┌───────────────────────┘ │ смещение строк смещ. эл-тов ; │ ┌───┬───┬───┬───┬───┐ │ относительно в строке от- ; └>│A21│A22│A23│A24│A25│>┐ ├─ N=3 начала носит.начала ; └───┴───┴───┴───┴───┘ │ │ строки ; ┌───────────────────────┘ │ SI = 0,2,4,6 -> дельта SI = 2 ; │ ┌───┬───┬───┬───┬───┐ │ BX = 0,8,16 -> дельта BX = 8 ; └>│A31│A32│A33│A34│A35│ │ ; └───┴───┴───┴───┴───┘ ┘ ; Решение на Паскале: ; for i:= 1 to n do ; for j:= 1 to m do ; s:=s+a[i,j]
MOV BX,0 MOV DX,M;- дельта BX = m*2 SHL DX,1;/ MOV AX,0;S:=0 MOV CX,N;счетчик цикла по строкам C1: PUSH CX MOV CX,M;счетчик цикла по столбцам MOV SI,0 C2: ADD AX,A[BX,SI] INC SI INC SI LOOP C2 POP CX ADD BX,DX LOOP C1 MOV S,AX
В квадратной матрице поменять значения элементов, симметричных, относительно главной диагонали.
A DW 50 DUP (?) N DW?; <=7 ; --------------------------- ; ┌───┬───┬───┐ Решение на Паскале: ; │A11│A12│A13│>┐ for i:= 1 to n-1 do ; └▄▄▄┴───┴───┘ │ for j:=i+1 to n do ; ┌───────────────┘ A[i,j] <-> A[j,i] ; │ ┌───┬───┬───┐ ; └>│A21│A22│A23│>┐ ; └───┴▄▄▄┴───┘ │ SI = 0,2,4,6 -> дельта SI = 2 ; ┌───────────────┘ BX = 0,8,16 -> дельта BX = 8 ; │ ┌───┬───┬───┐ ; └>│A31│A32│A33│ ; └───┴───┴▄▄▄┘ ;Будем использовать в программе математические индексы i,j ;В специальной процедуре будем вычислять смещение текущего элемента, ;относительно начала матрицы ; SI = 1,2..N – строки ; DI = 1,2..N – столбцы ; BX - смещение = f(i,j) = f(SI,DI) ; Cмещение строки = (i-1)*n*2 ; Cмещение эл-тов строки = (j-1)*2 ; BX = (i-1)*n*2 + (j-1)*2 = 2*((i-1)*n+j-1) PUSH SI; i PUSH DI; J CALL SM MOV AX,A[BX] JMP --- SM PROC NEAR PUSH AX PUSH DX MOV BP,SP MOV AX,[BP+8] DEC AX IMUL N MOV BX,[BP+6] DEC AX IMUL N MOV BX,[BP+6] DEC BX ADD BX,AX SHL BX,1 POP DX POP AX RET 4 SM ENDP ---------------------- MOV CX,N;-счетчик просмотра строк DEC CX;/ MOV SI,1;i:=1 с1: PUSH CX ;значение в CX в данном примере определяет кол-во просматривае- ;мых элементов текущей строки, поэтому новое значение CX не формируется. MOV DI,SI;-начальное значение j INC DI;/ C2: PUSH SI PUSH DI CALL SM MOV AX,AC[BX] PUSH BX PUSH DI PUSH SI CALL SM XCNG BX MOV A[BX],AX INC DI; j:=j+1 LOOP C2 POP CX INC SI; i:=i+1 LOOP C1
Реализованы в 21h прерывании MS DOS. Функция вызова команды int 21h Команда работает аналогично команде сall, дополнительно она сохраняет в стеке регистры флагов и сбрасывает флаг прерывания. Функции MS DOS реализованы как обычные процедуры. Каждая из команд заканчивается командой IRET, аналогично RET, но дополнительно из стека восстанавливается регистр флагов.
MSD1 DB 'Введите размеры матрицы ',13,10,'$' ; с переводом каретки на начало строки ; $ – ограничитель строки MOV AH,0Ah LEA DX,BL_PARAM INT 21h ;при вызове 21H прерывания машина ожидает ввода строки, начиная ;с текущей позиции курсора. Пользователь может набрать на экране ;6 символов максимум. При вводе следующего символа выдается ;предупреждающий звуковой сигнал и символ не вводится. Если стро- ;ка введена неправильно, то клавишей BackSpace ее можно исправить.
1) СТРОКА _ ENTER 123456 7 ┌───┬───┬───┬───┬───┬───┬───┐ │'С'│'Т'│'Р'│'О'│'К'│'А'│0Dh│ └───┴───┴───┴───┴───┴───┴───┘ actlen = 6
2) CТР _ ENTER
┌───┬───┬───┬───┬───┬───┬───┐ │'С'│'Т'│'Р'│0Dh│ * │ * │ * │ └───┴───┴───┴───┴───┴───┴───┘ actlen = 3
Если не набран не один символ, то actlen = 0, а в поле S код = 0Dh
MOV AH,07h INT 21h Ввод символа без эха на экране. Символ возвращается в AL.
MOV AH,01h INT 21h Ввод символа с эхом на экране. Символ возвращается в AL.
Дата добавления: 2014-01-04; Просмотров: 217; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |