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.
Share This