Часть 2. Задание: Отладчик. Постройте программу, которая содержит два фрагмента, один из которых играет роль отладчика
Задание: Отладчик. Постройте программу, которая содержит два фрагмента, один из которых играет роль отладчика, а второй имитирует отлаживаемую программу. Используйте Т-разряд для организации взаимодействия между фрагментами. Имитатор должен обеспечивать звуковой сигнал с использованием второго канала таймера. Блок-схема программы:
Код программы: .MODEL TINY .STACK 100h .DATA buf db ' ','$' num db 0 vector60h dd 0 .CODE .186 interrupt Proc far pusha push es push ds push cs pop ds
push ax push bx push dx mov bx,440d
mov ax,34DDh mov dx,12h div bx mov bx,ax
in al,61h or al,3 out 61h,al
mov al,0Bh mov dx,43h out dx,al
dec dx mov al,bl out dx,al mov al,bh out dx,al
pop dx pop bx pop ax
push ax in al,61h and al,not 3 out 61h,al pop ax pop ds pop es popa iret interrupt endp
start: mov ax,@Data mov ds,ax mov es,ax push es mov cx,256d l1: mov ah,35h mov al,num int 21h mov ax,es cmp ax,0h jnz q1 cmp bx,0h jnz q1 mov al,num mov buf,al lea dx, buf mov ah,09h int 21h q1: add num,1 loop l1 pop es
mov ax,3560h int 21h mov [word ptr vector60h],bx mov [word ptr vector60h+2],es
mov ax,2560h mov dx,offset interrupt push ds mov bx,seg interrupt mov ds,bx int 21h pop ds
int 60h
mov ax,2560h lds dx,[vector60h] int 21h
mov ah,4ch int 21h END start
Используемые в работе прерывания: Int 21h: Ah=0Ch – сброс буфера чтения Ah=0Ah – ввод символа с клавиатуры Ah=02h – вывод символа на экран; Ah=4ch – завершение процесса с возвратом управления; Ah=35h – получение вектора прерывания; Ah=25h – установка вектора прерывания; int 01h – собственная функция обработчика прерывания (для имитации отладчика)
Список использованной литературы 1) С.В. Зубков. «Ассемблер» 2) Л. Дао «Программирование микропроцессора 8088» 3) Справочник по ассемблеру 4) Материалы из интернета 5) Помощь преподавателя и друзей
|