Содержание
- 2. Операции ввода/вывода
- 3. Операции ввода/вывода по прерыванию INT 21H АН = 01: Ввод с клавиатуры с эхоотображением. Данная функция
- 4. Работа со стеком push dx ;поместить значение ;регистра dx в стек pop dx ;записать в dx
- 5. Задача Вывести значение переменной на экран.
- 6. Программа org 100h .model tiny chislo dd 12345 ;число для вывода .code convert: mov ax, chislo
- 7. Задача 1. Найти сумму двух чисел введенных с клавиатуры, если сумма 2. Найти сумму двух чисел
- 8. Программа .model tiny org 100h .data stroka1 DB 'Введите первую цифру ','$' stroka2 DB 13,10,'Введите вторую
- 9. ВВОД С КЛАВИАТУРЫ ПО КОМАНДЕ BIOS INT 16H Команда BIOS INT 16H выполняет специальную операцию, которая
- 11. Скачать презентацию
Слайд 2
Операции ввода/вывода
Операции ввода/вывода
Слайд 3
Операции ввода/вывода по прерыванию INT 21H
АН = 01:
Операции ввода/вывода по прерыванию INT 21H
АН = 01:
Ввод с клавиатуры с эхоотображением. Данная функция возвращает значение в регистре AL.
АН = 02: Вывод символа. Для ввода символа на экран в текущую позицию курсора необходимо поместить код данного символа в регистр DL.
АН = 06: Ввод/вывод данных. Может использоваться как для ввода, так и для вывода. Для вывода занесите в DL выводимый символ (но не FFH!) и прерывание 21Н. Для ввода в DL занесите FFH, выполните прерывание 21Н. Программа при этом не останавливается, продолжает выполняться. При нажатии клавишы символ вводится в AL.
АН = 07: Прямой ввод с клавиатуры без эхоотображения. Данная функция работает аналогично функции 01.
АН = 08: Ввод с клавиатуры без эхоотображения. Данная функция действует аналогично функции 01 с одним отличием: введенный символ не отображается на экране, т.е. нет эха.
АН = 09: Вывод строки символов. Выводимая строка должна заканчиваться знаком доллара $. Адрес начала строки должен быть помещен в DX.
AH=0AH: Ввод данных в буфер: Определяется максимальная длина вводимого текста. Это необходимо для предупреждения пользователя звуковым сигналом, если набран слишком длинный текст; символы, превышающие максимальную длину, не принимаются. Во второй байт буфера команда возвращает действительную длину введенного текста в байтах. Адрес буфера помещается в региcтр DX.
АН = 0ВH: Проверка состояния клавиатуры. Данная функция возвращает шестнадцатеричное значение FF в регистре AL, если ввод с клавиатуры возможен, в противном случае - 00.
АН = 02: Вывод символа. Для ввода символа на экран в текущую позицию курсора необходимо поместить код данного символа в регистр DL.
АН = 06: Ввод/вывод данных. Может использоваться как для ввода, так и для вывода. Для вывода занесите в DL выводимый символ (но не FFH!) и прерывание 21Н. Для ввода в DL занесите FFH, выполните прерывание 21Н. Программа при этом не останавливается, продолжает выполняться. При нажатии клавишы символ вводится в AL.
АН = 07: Прямой ввод с клавиатуры без эхоотображения. Данная функция работает аналогично функции 01.
АН = 08: Ввод с клавиатуры без эхоотображения. Данная функция действует аналогично функции 01 с одним отличием: введенный символ не отображается на экране, т.е. нет эха.
АН = 09: Вывод строки символов. Выводимая строка должна заканчиваться знаком доллара $. Адрес начала строки должен быть помещен в DX.
AH=0AH: Ввод данных в буфер: Определяется максимальная длина вводимого текста. Это необходимо для предупреждения пользователя звуковым сигналом, если набран слишком длинный текст; символы, превышающие максимальную длину, не принимаются. Во второй байт буфера команда возвращает действительную длину введенного текста в байтах. Адрес буфера помещается в региcтр DX.
АН = 0ВH: Проверка состояния клавиатуры. Данная функция возвращает шестнадцатеричное значение FF в регистре AL, если ввод с клавиатуры возможен, в противном случае - 00.
Слайд 4
Работа со стеком
push dx
;поместить значение ;регистра dx в стек
pop
Работа со стеком
push dx
;поместить значение ;регистра dx в стек
pop
dx
;записать в dx число
;из стека
;записать в dx число
;из стека
Слайд 5
Задача
Вывести значение переменной на экран.
Задача
Вывести значение переменной на экран.
Слайд 6
Программа
org 100h
.model tiny
chislo dd 12345 ;число для вывода
.code
convert:
mov ax,
Программа
org 100h .model tiny chislo dd 12345 ;число для вывода .code convert: mov ax,
chislo ;число в AX
mov cx,0 ; CX=0 – счетчик цифр
mov bx,10 ; BX=0 – основание системы
; счисления
.divide:
mov dx,0 ;DX = 0;
div bx ;деление AX на BX, ;частное в AX ;остаток в DX
add dx, ' 0' ;добавление ASCII-код ; цифры 0 к остатку
push dx ;сохранение в стеке
inc cx ;счетчик +1
cmp ax,0 ;все? (Частное = 0?) jnz .divide ;если нет .reverse: pop ax ;иначе число уже ;преобразовано, цифры ;сохранены в стеке, ; СХ содержит их ;количество ;выбор цифры из стека mov ah,02h mov dx,ax int 21h dec cx ;уменьшаем счетчик цифр, ; оставшихся в стеке cmp cx,0 ;цифры кончились ? jnz .reverse ;Нет?
ret
cmp ax,0 ;все? (Частное = 0?) jnz .divide ;если нет .reverse: pop ax ;иначе число уже ;преобразовано, цифры ;сохранены в стеке, ; СХ содержит их ;количество ;выбор цифры из стека mov ah,02h mov dx,ax int 21h dec cx ;уменьшаем счетчик цифр, ; оставшихся в стеке cmp cx,0 ;цифры кончились ? jnz .reverse ;Нет?
ret
Слайд 7
Задача
1. Найти сумму двух чисел введенных с клавиатуры, если сумма <
Задача
1. Найти сумму двух чисел введенных с клавиатуры, если сумма <
10.
2. Найти сумму двух чисел введенных с клавиатуры для любой суммы.
2. Найти сумму двух чисел введенных с клавиатуры для любой суммы.
Слайд 8
Программа
.model tiny
org 100h
.data stroka1 DB 'Введите первую цифру ','$' stroka2
Программа
.model tiny org 100h .data stroka1 DB 'Введите первую цифру ','$' stroka2
DB 13,10,'Введите вторую цифру ','$‘
stroka3 DB 13,10,'Сумма равна $'
.code mov ah,9 ; функция вывода строки mov dx,offset stroka1 ; ссылка на stroka1 int 21h ; вывести stroka1 на экран mov ah,1 ; функция ввода символа int 21h ; ввод 1-го символа sub al,30h ; преобразование 1-го ;символа в цифру push ax ; перемещение в стек mov ah,9 ; функция вывода строки mov dx,offset stroka2 ; ссылка на stroka2 int 21h ; вывести stroka2 на экран mov ah,1 ; функция ввода символа int 21h ; ввод 2-го символа sub al,30h ; преобразование 2-го символа ; в цифру push ax ; перемещение в стек mov ah,9 ; функция вывода строки mov dx,offset stroka3 ; ссылка на stroka3 int 21h ; вывести stroka3 на экран pop ax ; извлечение из стека 2-й ;цифры pop dx ; извлечение из стека 1-й ;цифры add dl,al ; сумма add dl,30h ; преобразование в символ mov ah,2 ; функция вывода символа mov al,dl ; сумма в al int 21h ; вывод символа ret ; завершить программу
.code mov ah,9 ; функция вывода строки mov dx,offset stroka1 ; ссылка на stroka1 int 21h ; вывести stroka1 на экран mov ah,1 ; функция ввода символа int 21h ; ввод 1-го символа sub al,30h ; преобразование 1-го ;символа в цифру push ax ; перемещение в стек mov ah,9 ; функция вывода строки mov dx,offset stroka2 ; ссылка на stroka2 int 21h ; вывести stroka2 на экран mov ah,1 ; функция ввода символа int 21h ; ввод 2-го символа sub al,30h ; преобразование 2-го символа ; в цифру push ax ; перемещение в стек mov ah,9 ; функция вывода строки mov dx,offset stroka3 ; ссылка на stroka3 int 21h ; вывести stroka3 на экран pop ax ; извлечение из стека 2-й ;цифры pop dx ; извлечение из стека 1-й ;цифры add dl,al ; сумма add dl,30h ; преобразование в символ mov ah,2 ; функция вывода символа mov al,dl ; сумма в al int 21h ; вывод символа ret ; завершить программу
Слайд 9
ВВОД С КЛАВИАТУРЫ ПО КОМАНДЕ BIOS INT 16H
Команда BIOS INT
ВВОД С КЛАВИАТУРЫ ПО КОМАНДЕ BIOS INT 16H
Команда BIOS INT
16H выполняет специальную операцию, которая в соответствии с кодом в регистре АН обеспечивает следующие три функции ввода с клавиатуры.
АН = 00: Чтение символа. Данная функция помещает в регистр AL очередной ASCII-символ, введенный с клавиатуры, и устанавливает скэн-код в регистре АН. Если на клавиатуре нажата одна из специальных клавиш, например, Home или F1, то в регистр AL заносится ОО. Автоматическое эхо символа на экран не происходит.
АН = 01: Определение наличия введенного символа. Данная функция сбрасывает флаг нуля (ZF=0), если имеется символ для чтения с клавиатуры; очередной символ и скэн-код будут помещены в регистры AL и АН соответственно и данный элемент останется в буфере.
АН = 02: Определение текущего состояния клавиатуры. Данная функция возвращает в регистре AL состояние клавиатуры из адреса памяти 417Н:\
АН = 00: Чтение символа. Данная функция помещает в регистр AL очередной ASCII-символ, введенный с клавиатуры, и устанавливает скэн-код в регистре АН. Если на клавиатуре нажата одна из специальных клавиш, например, Home или F1, то в регистр AL заносится ОО. Автоматическое эхо символа на экран не происходит.
АН = 01: Определение наличия введенного символа. Данная функция сбрасывает флаг нуля (ZF=0), если имеется символ для чтения с клавиатуры; очередной символ и скэн-код будут помещены в регистры AL и АН соответственно и данный элемент останется в буфере.
АН = 02: Определение текущего состояния клавиатуры. Данная функция возвращает в регистре AL состояние клавиатуры из адреса памяти 417Н:\