Pic Codes
Pic Codes
LOOP_SQUARE:
ADD AX, BX ; Add 4 to AX
DEC CX ; Decrease counter
JNZ LOOP_SQUARE ; If CX is not zero, repeat
END: HLT
Explanation:
• Initialize AX to 0.
• Add 4 to AX four times.
• Use DEC and JNZ to repeat the process.
LOOP_MULTIPLY:
ADD AX, BX ; Add 6 to AX
DEC CX ; Decrease counter
JNZ LOOP_MULTIPLY ; If CX is not zero, repeat
END: HLT
3. Solve ((7×4)+(25+3))-6
We first compute 7×47 \times 4, then 25+325 + 3, then sum both, and finally subtract 6.
MULTIPLY_7x4:
ADD AX, BX ; Add 7
DEC CX
JNZ MULTIPLY_7x4 ; Repeat
HLT
ADD_NUMS:
ADD AX, BX ; Add AX and BX
END: HLT
CMP AX, BX
JLE LOAD_AX ; If AX ≤ BX, load AX into DX
MOV DX, 1 ; Else, set DX to 1
JMP END
LOAD_AX:
MOV DX, AX ; Load AX into DX
END: HLT
6. If AX is not less than BX, add CX to DX
MOV AX, 8
MOV BX, 6
MOV CX, 5
MOV DX, 2
CMP AX, BX
JGE ADD_CX_TO_DX ; If AX ≥ BX, add CX to DX
JMP END
ADD_CX_TO_DX:
ADD DX, CX
END: HLT
LOOP_FORWARD:
RLF PORTC, 1 ; Shift left
CALL DELAY
BNZ LOOP_FORWARD ; Continue if not zero
LOOP_BACKWARD:
RRF PORTC, 1 ; Shift right
CALL DELAY
BNZ LOOP_BACKWARD ; Continue if not zero
JMP LOOP
MID_EFFECT:
MOV PORTC, 0b00111100
CALL DELAY
JMP LOOP
CHECK_BUTTON:
BTFSC PORTB, 4 ; Check if button is pressed
INCF COUNT, 1 ; Increment count
CALL DELAY
GOTO CHECK_BUTTON
HLT
MOV A, 0xFF
MOV B, 0xFF
AND A, B
CPL A
MOV PORTC, A
NOR:
MOV A, 0x00
MOV B, 0x00
OR A, B
CPL A
MOV PORTC, A
XNOR:
MOV A, 0xAA
MOV B, 0xAA
XOR A, B
CPL A
MOV PORTC, A
SEG_TABLE:
DB 0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F
EL328_TABLE:
That covers all the tasks in a beginner-friendly way. Let me know if you need explanations for
any part!