Question: program: INCLUDE P16F877A.INC ; INCLUDING THE LIBRARY OF THE PIC RESULT EQU 0X25 ; DEFINING THE MEMORY ADDRESS 0X25 (H'25'= 25 H) ORG 0X00 ;
program:
INCLUDE "P16F877A.INC" ; INCLUDING THE LIBRARY OF THE PIC
RESULT EQU 0X25 ; DEFINING THE MEMORY ADDRESS 0X25 (H'25'= 25 H)
ORG 0X00 ; THE STARTING ADDRESS IS 0X00 (H'00) ; ORG MEANS ORIGIN ; AND THESE ARE ZEROS NOT LETTER O
; THE AIM OF THE PROGRAM IS TO MAKE THE ADDITION 4+5 AND WRITE RESULT IN MEMORY 25H AND ON OUTPUT PORTD
; REMARKS: ; SET = PUT TO 1 CLEAR = PUT TO 0 ; ; W = WORKING REGISTER= ACCUMULATOR ( INSIDE THE ALU OF THE MICROPROCESSOR); IT IS UNIQUE ; F=FILE =REGISTER(REFERS TO ANY REGITER OUTSIDE MICROPROCESSOR BUT INSIDE MICROCONTROLLER);EX:RAM AND IO INTERFACE ; EVERY TIME WE USE F IN AN INSTRUCTION WE SHOULD SPECIFY THE NAME (OR ADDRESS) OF THIS FILE; ; BIT CLEAR (BCF) AND BIT SET (BSF) AFFECTS ONLY ONE BIT IN A FILE ; WHILE CLRF (CLEARF)CLEARS THE WHOLE REGISTER ; ANYTHING AFTER A SEMICOLUMN (;) IS JUST A COMMENT AND DESCRIPTION AND IS NOT EXECUTED BY COMPILER AND MICRO
CONFI BSF STATUS,RP0 ; BIT SET FILE (BSF) THE BIT RP0 (BIT5) OF THE REGISTER STATUS; THE AIM IS MOVING TO BANK1 MOVLW H'FF' ; LOAD CONSTANT (L=LITERAL=CONSTANT) VALUE H'FF'IN THE WORKING REGISTER W (ACCUMLATOR) MOVWF TRISB ; STORE(WRITE) W IN TRISB (DIRB=DIRECTION OF PORTB) ; THE AIM IS TO HAVE PORTB INPUT MOVLW H'00' ; LOAD CONSTANT (L=LITERAL=CONSTANT) VALUE H'00'IN THE WORKING REGISTER W (ACCUMLATOR) MOVWF TRISD ; STORE (WRITE) W IN TRISD (DIRD=DIRECTION OF PORTD) ; THE AIM IS TO HAVE PORTD OUTPUT BCF STATUS,RP0 ; BIT CLEAR FILE (BCF) THE BIT RP0 (BIT5) OF THE REGISTER STATUS;THE AIM IS MOVING TO BANK0 INIT CLRF RESULT ; CLRF H'25' ( CLEARING MEMORY LOCATION H'25'); CLRF PORTD ; CLEARING THE WHOLE REGISTER PORTD ( THE OUTPUT PORT WHICH SUPPOSED TO BE CONNECTED TO LEDS) MAIN1 MOVLW H'04' ; LAOD 4 IN W ( NOW W CONTAINS 4) ADDLW H'05' ; ADD 5 TO W AND STORE RESULT IN W ( NOW W CONTAINS 9) MOVWF PORTD ; STORE (WRITE A COPY OF) THE CONTENT OF W IN THE PORTD(DATAD);(NOW PORTD=9 AND W STAYS 9) MOVWF RESULT ; STORE(WRITE A COPY OF)THE CONTENT OF W IN MEMORY LOCATION RESULT(H'25';NOW RESULT=9 AND W=9 LOOP GOTO LOOP ; GOTO ADDRESS LINE "LOOP" ; THE AIM IS TO STAY LOOPED
END
a) Read and analyze very carefully the previous program
b) * Create a new black file and save it as lab11.asm ; * Rewrite yourself the same program of lab1 (without necessarily comment in green); Be sure that INCLUDE "P16F877A.INC" and ORG 0x00 are correctly typed. * Make the quick build and correct yourself If any errors
c) Create a new file : lab12.asm and Write a program which makes: 7+ 4 + 8 and save results on PORTD and in memory location H26 ( instead of address H25).Quickbuild and correct errors if any.
d) Create a new file lab13.asm and write a program which makes: 9-2 and save results on PORTD and in memory location H27. Quickbuild and correct errors if any.
Hint: in question (d )we use instruction SUBLW which executes L - W ( not W- L). So this instruction handles numbers oppositely; Therefore we should load first the number 2 to W and then write SUBLW with 9, in order to have 9-2
e) Create a new file : lab14.asm and Write a program which makes: C-8+7 and save results on PORTD and in memory location H28 ( instead of address H25). Quickbuild and correct errors if any.
please answer me this question completely in the CPU design course in less than 2 hours.
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
