Смекни!
smekni.com

Разработка для контроля и определения типа логических интегральных микросхем методом сигнатурного анализа (стр. 12 из 12)

out dx, al

mov dx, 37AH

mov al, ah

out dx, al

or al, 00001000b; устанавливаем 3-й бит для

; записи в порт 37AH

out dx, al; запись данных в регистр

pop dx; восстанавливаем значения

; регистров из стека

pop ax

WRITE_R ENDP

READ_R PROC NEAR

; процедура чтения данных из мультиплексоров DD13-DD16

; Входные параметры: AH - номер мультиплексора

; (0-DD13, 1-DD14, 2-DD15, 3-DD16)

; Выходные параметры: AL - считанное значение

push cx; сохраняем используемые регистры

; в стеке

push dx

mov dx, 37AH

mov al, ah

out dx, al ; выбираем мультиплексор записью

; AL в 37AH

mov al, 0; записываем 0 в регистр 378H для

; выбора для чтения

mov dx, 378H; "младшей" половины

; мультиплексора

out dx, al

mov dx, 379H

in al, dx; считываем данные "младшей"

; половины мультиплексора

mov ah, al; сохраняем их в AH

mov al, 1; записываем 0 в регистр 378H для

; выбора для чтения"старшей"

mov dx, 378H; половины мультиплексора

out dx, al

mov dx, 379H

in al, dx; считываем данные "старшей"

; половины мультиплексора

; далее производим сборку считанных "половинок" из

; мультиплексоров по 4-е байта в 8 байт данных:

mov cl, 4

ror ah, cl; сдвигаем данные в AH

; из 4-7 в 0-3 биты

and ah, 00001111b; сбрасываем 4-7 биты в AH

and al, 11110000b; сбрасываем 0-3 биты в AL

or al, ah; логически суммируем AL и AH

not al ; инвертируем AL

pop dx; восстанавливаем значения

; регистров из стека

pop cx

READ_R ENDP