Задание 5
(Лабораторная работа N 4)
--------------------------

Тема: Исследование системы прерываний 16-разрядного МП

Содержание:

  • Основные положения для отработки на занятии
  • Т Р О Г О С О Б Л Ю Д А Т Ь ПРАВИЛА
  • Программа WDWH.ASM
           текст программы в редакторе
  • Программа WWDS.ASM
           текст программы в редакторе
  • Вывод на печатающее устройство
            текст программы в редакторе


    Цели работы:

    1.Изучить систему прерываний МП фирмы Intel

    2.Изучить основные функции прерываний BIOS (10h) и DOS (21h)

    3.Набрать программу WWYDS.ASM,получить EXE-файл и проверить ее работоспособность

    4.Исследовать подпрограмму WWOD ввода символов с клавиатуры в память с индикацией их на экране

    5.Исследовать макроопределение WYD вывода на экран 16-разрядных двоичных чисел

    Основные положения для отработки на занятии
    -------------------------------------------

    1. Назначение системы прерываний,структура системы прерываний на базе МП фирмы Intel

    2. Основные функции прерывания BIOS 10h,которые предназначены для управления монитором:

    02h - установка курсора в требуемое место экрана
    03h - определение положения курсора на экране
    06h - прокрутка окна вверх
    07h - прокрутка окна вниз
    08h - чтение в текущем месте экрана символа и его
    атрибута
    0ah - вставка в текущее место экрана символ с его
    атрибутом
    0fh - прочитать параметры текущего видеорежима

    3. Основные функции прерывания DOS 21h,которые предоставляют не которые услуги пользователю со стороны операционной системы:

    01h - ввод символа с эхо на экране
    02h - вывод символа на экран
    05h - вывод символа на принтер
    09h - вывод строки символов на экран
    0ah - ввод строки символов с клавиатуры ?
    3fh - ввод строки символов с клавиатуры

    4. Изучить последовательность действий пользователя при использовании прерываний:

    - поместить номер функции (они указаны в пп.2,3) в регистр AH
    - поместить передаваемые параметры для функции в заранее определенные системой регистры
    - вызвать прерывание ассемблерными командами INT 10h или INT 21h
    - извлечь результаты из определенных регистров

    5. Получить ЕХЕ-файл программы с названием WWYDS.ASM и проверить его работу по вводу с клавиатуры символов(которые затем пре образуются в 16-разрядные двоичные числа) и выводу этих чисел на экран.

    С Т Р О Г О С О Б Л Ю Д А Т Ь ПРАВИЛА

    ------------------------------------
    следующие правила при работе с программой:
    ------------------------------------------

    а). вводить только положительные 5-разрядные десятичные числа без знака в диапазоне

    00000 - 65535

    б). незначащие нули в начале числа вводить обязательно.

    в). при отладке с помощью AFDPRO.EXE(или AFD.EXE) для пошагового исполнения команд INT следует использовать клавишу F2 (т.к. команда представляет собой процедуру).

    Несоблюдение этих правил может привести к неверным результатам!

     

    Программа WDWH.ASM

    --------------------

    ; Программа с макроопределением вывода 16-разрядных чисел
    ; в 16-й системе счисления и подпрограммой ввода 5-разрядных
    ; десятичных чисел (файл wdwh.asm).
    ;----------------------------------------------------------------
    .model small
    ;----------------------------------------------------------------
    ; Макроопределение вывода на экран слов в 16-й системе :

    ;----------------------------------------------------------------

    wyh macro wt ; wt - слово в памяти или константа
    local m10
    push ax
    push bx
    push cx
    push dx
    push di
    push bp
    ;...............................
    mov
    mov
    mov
    mov
    ;...............................
    m10: mov
    and
    mov
    shr
    dec
    shl
    ;...............................
    shr
    ;...............................
    xlat
    mov
    mov
    ;...............................
    mov ah,02h
    int 21h
    ;...............................
    dec di
    dec di
    cmp di,0
    jnz m10
    ;...............................
    mov dx,offset spc
    mov ah,9
    int 21h
    ;...............................
    pop bp
    pop di
    pop dx
    pop cx
    pop bx
    pop ax
    ;..........................................................
    endm ; Конец макроопределения
    ;----------------------------------------------------------
    .stack ; Сегмент стека
    ;---------------------------------------------------------
    .data? ; Сегмент данных
    z dw ? ; (неопределенные данные)
    x db 8 dup(?)
    ;----------------------------------------------------------
    .data ; (определенные данные)
    spc db 10,13,'$' ; управляющие символы
    ; перевод строки 10
    ; возврат каретки 13
    ; конец текстовой строки $
    ;.......................................
    cw dw 0,000fh,00f0h ; константы для выреза-
    dw 0f00h,0f000h ; ния 4-битных кодов
    ;.......................................
    tab db 30h,31h,32h,33h ; символы
    db 34h,35h,36h,37h ; цифр
    db 38h,39h,41h,42h ; шестнадцатиричной
    db 43h,44h,45h,46h ; системы счисления
    ; ......................................
    ct dw 10000 ; веса разрядов
    dw 1000 ; 5-ти разрядных
    dw 100 ; десятичных
    dw 10 ; чисел
    dw 1 ;
    ;----------------------------------------------------------
    .code ; Сегмент кода(программа)
    ;__________________________________________________________
    ; Подпрограмма ввода с клавиатуры строки из 5 символов :
    ; Используются символы только десятичных цифр 0,1,2,..,9 :
    ;__________________________________________________________
    wwod: push bx
    push cx
    push dx
    push si
    push di
    mov ah,3fh
    mov bx,00
    mov cx,08h
    mov dx,offset x
    int 21h
    mov bx,0
    mov cx,5
    mov si,offset ct
    mov di,offset x
    m1: mov al,[di]
    and al,0fh
    mov ah,0
    mul word ptr [si]
    add bx,ax
    inc di
    add si,2
    loop m1
    mov z,bx
    pop di
    pop si
    pop dx
    pop cx
    pop bx
    ret
    ;......................................................
    .startup ; Точка входа в программу
    call wwod
    wyh z
    .exit
    ;......................................................
    end

     

    Программа WWDS.ASM
    ---------------------

    ; Программа ввода с клавиатуры 5-разрядных десятичных чисел
    ; и вывода на экран слов в двоичной системе
    ;----------------------------------------------------------
    .model small
    .stack
    ;------------------------------------
    .data?
    z dw ?
    x db 8 dup(?)
    ;------------------------------------
    .data
    spc db 10,13,'$'
    ct dw 10000
    dw 1000
    dw 100
    dw 10
    dw 1
    ;----------------------------------------------------------
    ; Макроопределение вывода двоичных слов на экран :
    ;----------------------------------------------------------
    wyd macro wt ; слово в памяти или константа
    local m11,m12
    push ax
    push cx
    push dx
    ;....................................
    mov cx,8000h
    mov ax,wt
    ;....................................
    m11: push ax
    mov dx,'1'
    test ax,cx
    jnz m12
    mov dx,'0'
    ;....................................
    m12: mov ah,2h
    int 21h
    ;....................................
    pop ax
    shr cx,1
    jnz m11
    ;....................................
    mov dx,offset spc
    mov ah,9
    int 21h
    ;....................................
    pop dx
    pop cx
    pop ax
    ;....................................
    endm
    ;----------------------------------------------------------
    .code ; Начало кодового сегмента
    ;----------------------------------------------------------
    ; Подпрограмма ввода с клавиатуры строки символов :
    ;----------------------------------------------------------
    wwod: push bx
    push cx
    push dx
    mov ah,3fh
    mov bx,00
    mov cx,08h
    mov dx,offset x
    int 21h
    pop dx
    pop cx
    pop bx
    ret
    ;....................................
    .startup
    ;....................................
    call wwod
    mov dx,0
    mov bx,0
    mov cx,5
    mov si,offset ct
    mov di,offset x
    m1: mov al,[di]
    and al,0fh
    mov ah,0
    mul word ptr [si]
    add bx,ax
    inc di
    add si,2
    loop m1
    mov z,bx
    wyd z
    .exit
    ;....................................
    end

     

    Вывод на печатающее устройство

    ;.........................................................
    ; Программа вывода на принтер двоичного числа
    ; с макроопределением PRNT
    ;.........................................................
    .model small
    .stack
    .data
    x db 20
    y db 30
    z db 0
    text db 'z=........'
    db 0dh,0ah
    ;...Макроопределение вывода на принтер....................
    prnt macro mas ; заголовок макроопределения
    mov ah,40h ; функция вывода строки
    mov bx,04 ; номер устройства вывода
    mov cx,12 ; количество выводимых символов
    lea dx,mas ; начальный адрес выводимой строки
    int 21h ; команда прерывания DOS
    endm ; конец макроопределения
    ;.........................................................
    ;....Начало программного(кодового) сегмента..... .........
    .code
    .startup ; точка входа в программу
    mov al,x
    add al,y
    mov z,al
    lea bx,text+2
    call zbyte
    prnt text
    .exit ; точка выхода в DOS
    ;....Подпрограмма формирования двоичных цифр..............
    zbyte: mov cx,8
    m1: rol al,1
    mov byte ptr[bx],30h
    jnc m2
    mov byte ptr[bx],31h
    m2: inc bx
    loop m1
    ret ; конец подпрограммы
    ;..............Конец программы............................
    end


    Word 97 *.doc

     




         главная | новости | институт | курсовые | комплексные | рефераты | преподы | фотоальбом | приколы | АТС | гостевая
     
        ©НОСКІЗ-ДУІТ 2002-2003

     

    Hosted by uCoz