Outputting to the parallel port (assembly 8086)

  1. So I'm having a problem in some code I'm working on in Assembly(8086). I've tried everything I can think of, but I can't seem to figure out the problem. So I have a circuit that I built with a DB25 plug so that it can communicate with the parallel port on the computer. All we had to do is make a simple down counter that was displayed to the LEDs on the circuit. The problem is that I can't get the correct port to work. The port should be 378H, but it only seems to sort of work with 3BCH. I've even tried the following simple code to just get a single number to output using port 378H:

    .MODEL SMALL
    .STACK 64
    .DATA

    .CODE

    MAIN PROC FAR
    MOV AL, 55H
    MOV DX, 378H
    OUT DX, AL

    mov AH,4Ch ; return to DOS
    int 21h

    MAIN ENDP
    END MAIN

    Can anyone think of a reason that this won't work? Also, I have tested the circuit, and it seems to be working correctly.
     
  2. jcsd
  3. mgb_phys

    mgb_phys 8,952
    Science Advisor
    Homework Helper

    There is no rule that says the parallel port must be at 378, it can also be at 3BC or even 278. Check in the bios you can probably choose what address to set it to.
     
  4. Well, we think the port address issue is why the program won't work. Every other person in the class has had it work fine using port 378H except our group and one other, and they are having the same problem as we are. We even compiled/ran a friends program that worked at his lab station, but it didn't work on ours. I guess something could be wrong with the circuit, but then I don't know that that would explain why I can get it to output single numbers using 3BCH and not 378.

    edit- Also, the actual hardware profile is showing the port address as 378H.
     
  5. Also, if your OS isn't setting the control bits for the parallel port, then you might need to write them yourself to tell the chip that you want those pins to be outputs. The control register is at port number base+3. 'Course that wouldn't directly explain why others are getting it to work, though.
     
  6. Can any of you think of why only 2 groups out of 15 would have a problem using port 378H? Even using the simple code I posted above is not working.
     
Know someone interested in this topic? Share a link to this question via email, Google+, Twitter, or Facebook