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



         

Программирование сопроцессора - часть 7


State87 struc cr dw ? sr dw ? tg dw ? cmdlo dw ? cmdhi dw ? oprlo dw ? oprhi dw ? st0 dt ? st1 dt ? st2 dt ? st3 dt ? st4 dt ? st5 dt ? st6 dt ? st7 dt ? State87 ends

Для демонстрации возможностей ntrace87 мы немного изменили нашу первую программу, работающую с сопроцессором - после каждой комадны сопроцессора вставили вызов ntrace87:

.MODEL tiny DOSSEG

EXTRN ntrace87:NEAR

.STACK 100h

.DATA x dd 1.0 y dd 2.0 ; Резервируем четыре байта для результата

z dd ?

.CODE .STARTUP

push cs pop ds

; Записываем в стек численных регистров ; значение x call ntrace87

fld x call ntrace87

; Складываем содержимое верхушки стека ; с константой y

fadd y call ntrace87

; Записываем результат в ячейку z

fstp z call ntrace87

; Завершаем работу программы и ; возвращаем управление операционной системе

quit: .EXIT 0

END

В процессе работы этой программы на каждом шаге на экран выводится дамп содержимого регистров центрального процессора и сопроцессора (пустые численные регистры не отображаются):

>---- BREAK ----> At address 2314:0105

AX=0000 BX=0000 CX=00FF DX=2314 SP=FFFE BP=091C SI=0100 DI=FFFE DS=2314 ES=2314 SS=2314 F=7202

Coprocessor state: CNTR=037F STATE=4000 TAG=FFFF CMDADR=023256 OPRADR=02365E Numeric Registers:

Hit any key... >---- BREAK ----> At address 2314:010D

AX=0000 BX=0000 CX=00FF DX=2314 SP=FFFE BP=091C SI=0100 DI=FFFE DS=2314 ES=2314 SS=2314 F=7202

Coprocessor state: CNTR=037F STATE=7800 TAG=3FFF CMDADR=023246 OPRADR=02365E Numeric Registers: ST(00)=3FFF8000000000000000

Hit any key... >---- BREAK ----> At address 2314:0115

AX=0000 BX=0000 CX=00FF DX=2314 SP=FFFE BP=091C SI=0100 DI=FFFE DS=2314 ES=2314 SS=2314 F=7202

Coprocessor state: CNTR=037F STATE=7800 TAG=3FFF CMDADR=02324E OPRADR=023662 Numeric Registers: ST(00)=4000C000000000000000

Hit any key... >---- BREAK ----> At address 2314:011D

AX=0000 BX=0000 CX=00FF DX=2314 SP=FFFE BP=091C SI=0100 DI=FFFE DS=2314 ES=2314 SS=2314 F=7202

Coprocessor state: CNTR=037F STATE=4000 TAG=FFFF CMDADR=023256 OPRADR=023666 Numeric Registers:

Hit any key...




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