Аппаратное обеспечение IBM PC


         

Процедура выводит на экран содержимое


regs_87 db 94 dup(?) ten db 10

ntrace87 endp

;========================================== ; Процедура выводит на экран содержимое ; численного регистра с номером, заданным ; в регистре al

Print_numreg proc near push cx push bx

; Выводим обозначение численного регистра

push dx @@out_ch 'S','T','(' pop dx mov al, dl call Print_byte push dx @@out_ch ')','=' pop dx

; Выводим содержимое численного регистра в ; шестнадцатеричном формате

mov cx, 10 ; счетчик байтов в числе с ; расширенной точностью mov bp, 10 ; первоначальное смещение ; к старшему байту числа

; Смещение к полю первого численного регистра ; в области сохранения

mov bx, offset cs:regs_87.st0

; Вычисляем смещение старшего байта численного ; регистра, номер которого задан в регистре DX

mov ax, dx imul cs:ten add bx, ax dec bx

; Выводим в цикле 10 байтов числа

pr_lp: push bx

add bx, bp mov al, cs:[bx] call Print_byte pop bx

dec bp loop pr_lp

push dx @@out_ch 13,10 pop dx

pop bx pop cx ret

Print_numreg endp

;========================================== ; Процедура выводит на экран содержимое AL

Print_byte proc near

push ax push bx push dx

call Byte_to_hex mov bx,dx @@out_ch bh @@out_ch bl

pop dx pop bx pop ax ret Print_byte endp

;========================================== ; Процедура выводит на экран содержимое AX

Print_word proc near

push ax push bx push dx

push ax mov cl,8 rol ax,cl call Byte_to_hex mov bx,dx @@out_ch bh @@out_ch bl

pop ax call Byte_to_hex mov bx,dx @@out_ch bh @@out_ch bl

pop dx pop bx pop ax ret Print_word endp

Byte_to_hex proc near ;-------------------- ; al - input byte ; dx - output hex ;-------------------- push ds push cx push bx

lea bx,tabl mov dx,cs mov ds,dx

push ax and al,0fh xlat mov dl,al

pop ax mov cl,4 shr al,cl xlat mov dh,al

pop bx pop cx pop ds ret

tabl db '0123456789ABCDEF' Byte_to_hex endp

end

Работа программы основана на использовании команды FSAVE, сохраняющей в памяти содержимое всех регистров сопроцессора. Область сохранения описывается следующей структурой, определенной в файле sysp.inc:


Содержание  Назад  Вперед