In the part 2, we will learn about controlling program Printer Port and Card 8255 I/O Port by Assembly that can be changed to be language of computer by using Assembler program like SXA-51, Cross-16, Cross-32 that can program by Editor, and then keep in file name .ASM. When comply have finished, will get file .Hex. If we use micro controller like 8051, 8052, 8055, etc. We can take file .Hex to put at CPU by EMULATOR PROGRAM CPU, but I will recommend to use Debug in your PC by typing Debug at C:\> on Dos in order to be learning to use mnemonic code that consist of the main 3 parts like the followings,

1.      Operation Code consists of 2-4 alphabets such as MOV, SJMP, etc.

2.      Operand is operated; it will be the set of alphabets that notify operation that will be one set or 2 sets. If there will be 2, it will have comma (,) like A, #20H, etc.

3.      Comment is explanation the meaning of codes that will be preceded by semicolon (;).

The group of commands of mnemonic code, are divided into 4 main groups,

1.      Logic, such as AND,OR,XOR,NOT

2.      Mathematic  such as INC,DEC,ADD,SUBB,MUL,DIV

3.      Control to manage working

4.      Processing as Boolean

 

The table of writing command doing with data

How to do with data

Examples

1. Directly do at memory position
2. Indirectly do at register position
3. Directly give value with memory
4. According to value of Register
5. According to arrangement
6. Do according condition

MOV A,8CH
MOV A,@R1
MOV A,#7FH
MOV A,R7
MOVC A,@A+PC
INC DPTR

 

The table of the basic command of Assembly

Commands

Examples

Meanings

MOV

MOV A,R1
MOV A,14H
MOV A,#7FH
MOV P1,A

Using for transferring data from start to terminal.
there will be P1 is using to send value out at
Output leg of microcontroller such as 8051,Z80

ADD

ADD A,R1
ADD
A,14H
ADD P1,A

Using for adding data that will have A on the left, if Add R1, A <—- X wrong.  

ANL

ANL A,R1

Is to And value, then keep at the terminal.
<– This is doing And value in A with R1, then keeps value in A as usual.

CJNE

CJNE A,#02H,OUT
MOV P1,#01H
END

Is to do comparison, if the value isn’t be equal, it will skip working <– such as value A isn’t be equal with 02, it will skip at the line named OUT, if to be equal, will take value at P1.

OUT

OUT DX,AL

For sending to PC Port

CLR

CLR A

For clearing data as zero
<– A=0

INC

INC R1

Increasing value> R1=R1+1

DEC

DEC R1

Decreasing value > R1=R1-1

JNZ

ADD P1,A

Skipping to other Label, if A(Accumulator) isn’t be zero

ROR

ROR AL,1

Moving data bit to the right, 1 bit 1 time 1=0001—>1000

ROL

ROL AL,1

Moving data bit to the left, 1 bit 1 time 1=0001—>0010

LOOP

LOOP 0123

For looping working at Address 0123

INT20

INT 20

Show output on screen.

INT21

INT 21

Getting value from keyboard.


Programming to control Card I/O 8255 port in Debug

1. Type the word, Debug at C:\ then will get on the below line.
      2. then, type a, that will get data.
      3. Type
Code like this,

   

4. Press Enter 1 time, then type P or R, you will get for running program that continuously Enter, it will have result like this,

 

     

      From the method I mentioned is experiment to easily program, but writing for real using, you have to write Editor so that you can keep and edit in the next time.