Docstoc

cs401 Assignment solution

Document Sample
cs401 Assignment solution Powered By Docstoc
					        Question:


        DC motor (fig 1) is operated through two terminals, whenever the potential difference is
        created (throughbatteries, cells etc) across these terminals the motor starts its motion.
        Suppose we have connected a DC motor to our system’s parallel port through a secure
        circuitry (fig 3).


        We wish to operate the DC motor through our parallel port (fig 2) using some input through
        our keyboard. Like “F” key for running motor in “Forward Direction”, “R” for “Reverse
        Direction”, “S” for “Stop” and “E” for “Exit from code”.
        We have suggested that we will use parallel port’s Pin 2 and Pin 3 (the last 2 pins of parallel
        port’s data check fig 2 and table 1).


Pin 2                         Pin 3                        Outcome
0                             0                            Stop

0                             1                            Forward

1                             0                            Reverse

1                             1                            No Operation

        Table 1
        You have to write a code in assembly language that take an input character
        from keyboard (S, F, R and E) and on the basis of these characters transmit the code (with
        respect to the truth table) to the parallel port to operate that connected DC motor.
        NOTE: your code only use ASCII code for Capital letters F, R, S and E as an input from
        the keyboard and will transmit the specific data to the parallel port. Through this program, we
        are interested in communicating with aDC motor through parallel port.
        Solution:
        ; show scancode on external LEDs connected through parallel port
        [org 0x0100]
        jmp start


        oldisr:     dd 0              ; space for saving old ISR


        ; keyboard interrupt service routine
        kbisr:      push ax
        push dx
in al, 0×60           ; read char from keyboard port
mov dx, 0×378
out dx, al            ; write char to parallel port


pop ax
pop dx
jmp far [cs:oldisr]     ; call original ISR


start:       xor ax, ax
mov es, ax             ; point es to IVT base
mov ax, [es:9*4]
mov [oldisr], ax        ; save offset of old routine
mov ax, [es:9*4+2]
mov [oldisr+2], ax        ; save segment of old routine
cli               ; disable interrupts
mov word [es:9*4], kbisr ; store offset at n*4
mov [es:9*4+2], cs        ; store segment at n*4+2
sti               ; enable interrupts


mov dx, start           ; end of resident portion
add dx, 15             ; round up to next para


and keyboard comprisan code for this problems are
e = 0×012


r= 0×13


f= 0×21


s=0x1f

				
DOCUMENT INFO
Categories:
Tags:
Stats:
views:38
posted:7/1/2012
language:English
pages:2