Professional Documents
Culture Documents
Ec522 8051 08
Ec522 8051 08
ARITHMETIC INSTRUCTIONS
UNSIGNED NOS. CONSIST OF THE DATA BITS WITH NO BIT RESERVED FOR SIGN. THE NOS. ARE 00 TO FFH.
THE INSTRUCTION AFFECTS AF, CF, P THE AFFECT OF ADDITION ON FLAGS MOV ADD A, #0F5H A, #0BH ;A=F5 HEX ;A=F5+0B=00
CY=1
P=0
AC=1
ASSUME THAT RAM LOCATIONS 40 TO 44H HAVE THE FOLLOWING DATA. WRITE A PROGRAM TO ADD ALL THESE. AT THE END OF THE PROGRAM, REGISTER A SHOULD CONTAIN LOW BYTE AND R7 THE HIGH BYTE.
ASSUME THAT RAM LOCATIONS 40 TO 44H HAVE THE FOLLOWING DATA. WRITE A PROGRAM TO ADD ALL THESE. AT THE END OF THE PROGRAM, REGISTER A SHOULD CONTAIN LOW BYTE AND R7 THE HIGH BYTE.
40=(7D) 41=(EB) 42=(03) 43=(C5) 44=(30) MOV MOV CLR MOV ADD JNC INC R0, #40H R2, #5H A R7, A A, @R0 BYPAS R7 ;LOAD POINTER ;LOAD COUNTER ;A=0 ;CLEAR R7 ;ADD BYTE POINTED TO ;A BY R0 ;IF CY=0 DONT ADD TO ;COUNTER OF CY ;UPDATE COUNTER ;OF CY ;INCREMENT POINTER ;REPEAT ;STAY HERE
AI:
R0 R2, AGAIN HI
WRITE APROGRAM TO ADD TWO SIXTEEN BIT NUMBERS. THE NUMBERS ARE 3CE7H AND 3B8DH. STORE THE SUM IN R7 AND R6; R6 SHOULD HAVE LOWER BYTE.
WRITE APROGRAM TO ADD TWO SIXTEEN BIT NUMBERS. THE NUMBERS ARE 3CE7H AND 3B8DH. STORE THE SUM IN R7 AND R6; R6 SHOULD HAVE LOWER BYTE.
C A, #0E7H A, #8DH
MOV
R7, A
;CY=0 ;LOAD LOW BYTE ;ADD LOW BYTE; A=74H, ;CY=1 ;SAVE LOW BYTE ;LOAD HIGH BYTE ;ADD WITH CARRY ;3BH+3CH+1H=78H ;SAVE HIGH BYTE
BCD NUMBERS
USE DA INSTRUCTION
A, #47H ;A=47H FIRST BCD B, #25H ;B=25H SECOND BCD A, B ;HEX ADDITION A=6CH
DA
ASSUME THAT 5 BCD DATA BYTES ARE STORED IN RAM LOCATIONS STARTING AT 40H. WRITE A PROGRAM TO FIND THE SUM OF THESE. THE RESULT MUST BE IN BCD
40=(71) 41=(11) 42=(65) 43=(59) 44=(37)
ASSUME THAT 5 BCD DATA BYTES ARE STORED IN RAM LOCATIONS STARTING AT 40H. WRITE A PROGRAM TO FIND THE SUM OF THESE. THE RESULT MUST BE IN BCD
40=(71) 41=(11) 42=(65) 43=(59) 44=(37)
REP:
BYP:
;CREATE POINTER ;INTIALISE COUNTER ;A=0 ;R7=0 ;ADD DATA POINTED BY R0 TO A ;ADJUST FOR BCD ;DO NOT INCREMENT R7 ;INCREMENT COUNT OF CARRY ;POINT TO NEXT LOCATION ;REPEAT UNTIL R0 EQUALS 0
10
;MAKE CY=0 ;LOAD 3FH INTO A (A=3F) ;LOAD 23H INTO R3 (R3=23H) ;SUBTRACT A R3 AND PLACE ;RESULT IN A
A = 3F R3 = 23 1C
0011 1111 +1101 1101 ( 2s COMPLEMENT) 1 0001 1100 0 CF=0 ( STEP 3) AC=0
CY=0
AND
12
NEXT:
4C - 6E - 22
0100 0110
14
15
;CY=0 ;A=62H ;62H-96H=CCH, CY=1 ;SAVE RESULT ;A=27H ;27H-12H-1=14H, CY=0 ;SAVE THE RESULT
16
UNSIGNED MULTIPLICATION
MUL AB ;A*B, PLACE THE 16 BIT RESULT IN B AND A ;LOWER BYTE IN A AND UPPER BYTE IN B
A #25H B, #65 AB
17
DIV
AB
A, #95 B, #10 AB
18
WRITE A PROGRAM (A) TO MAKE P1 AN INPUT PORT, (B) TO GET DATA BYTE OF HEX DATA IN THE RANGE OF 00 TO FFH FROM P1 AND CONVERT IT TO DECIMAL. SAVE THE DIGITS IN R7, R6, AND R5 WITH LEAST SIGNIFICANT IN R7.P1 MAY BE HAVING DIGITAL OUTPUT OF A TO D CONVERTER.
19
WRITE A PROGRAM (A) TO MAKE P1 AN INPUT PORT, (B) TO GET DATA BYTE OF HEX DATA IN THE RANGE OF 00 TO FFH FROM P1 AND CONVERT IT TO DECIMAL. SAVE THE DIGITS IN R7, R6, AND R5 WITH LEAST SIGNIFICANT IN R7.P1 MAY BE HAVING DIGITAL OUTPUT OF A TO D CONVERTER. MOV MOV MOV MOV DIV MOV MOV DIV MOV MOV A, #0FFH P1, A A, P1 B, #10 AB R7, B B, #10 AB R6, B R5, A ; ;P1 IS INPUT ;READ DATA FROM P1 ;B=0AH ;DIVIDE BY 10 ;SAVE LOWEST DIGIT ; ;DIVIDE BY 10 ONCE MORE ;SAVE NEXT DIGIT ;SAVE THE MOST SIGNIFICANT ;DIGIT B=0AH=10 A=19 QUOT. B=3 LOWEST DIGIT A=2 QUOT. B=5 MIDDLE DIGIT 2 HIGH DIGIT
20
D7
Sign
D6
D5
D4
D3
D2
D1
D0
Magnitude
POSITIVE NUMBERS
NEGATIVE NUMBERS
0 TO 255
-128 TO +127
21
WHILE USING THE SIGNED NUMBER SYSTEM, THE OV FLAG INDICATES THE EXISTANCE OF ERROR. THE CPU APPRECIATES 0s AND 1s AND IGNORES THE CONVENTION OF POSITIVE AND NEGATIVE NUMBERS
MOV MOV ADD A, #+96 R1, #70 A, R1 ;A= 0110 0000 (A=60H) ;R1= 0100 0110 (R1=46H) ;A= 1010 0110 ;A= A6H = -90 DECIMAL ;WHICH IS WRONG AND INVALID
+96 0110 0000 + +70 0100 0110 + 166 1010 0110 The OV Flag is SET
AND OV=1
1. When there is a CARRY from D6 to D7 but no CARRY out fro D7 2. CARRY out from D7 but no CARRY from D6 to D7.
22
OV=1
A, # -2 R1, # -5 A, R1
23
READ AND TEST P1 TO SEE WHETHER IT HAS THE VALUE 45H. IF IT HAS, SEND 99H TO P2; OTHERWISE, IT IS CLEARED.
24
READ AND TEST P1 TO SEE WHETHER IT HAS THE VALUE 45H. IF IT HAS, SEND 99H TO P2; OTHERWISE, IT IS CLEARED.
;CLEAR P2 ;P1 IS AN INPUT PORT ;R3=45H ;READ P1 ;JUMP IF A HAS VALUE ;OTHER THAN 0
EXIT:
MOV -----
P2, #99H
25
ASSUME THAT P1 IS AN INPUT PORT CONNECTED TO A TEMPERATURE SENSOR. WRITE A PROGRAM TO READTHE TEMPRATURE AND TEST FOR A VALUE 75. THE TEMPERTURE BE PLACED IN REGISTERS AS FOLLOWS
IF IF IF T=75 T<75 T>75 THEN THEN THE A=75 R1=T R2=T
26
ASSUME THAT P1 IS AN INPUT PORT CONNECTED TO A TEMPERATURE SENSOR. WRITE A PROGRAM TO READTHE TEMPRATURE AND TEST FOR A VALUE 75. THE TEMPERTURE BE PLACED IN REGISTERS AS FOLLOWS
IF IF IF T=75 T<75 T>75 THEN THEN THE A=75 R1=T R2=T
;P1 IS INPUT ;READ P1 TEMP. ;JUMP IF A NOT EQUAL 75 ;A=75, EXIT ;IF CY=0 THEN A>75 ;CY=1, A<75, SAVE IN R1 ;AND EXIT ;A>75, SAVE IN R2
MOV MOV CJNE SJMP OVER: JNC MOV SJMP NEXT: MOV EXIT: ----
27