實驗8 查找相同數個數
一、實驗目的
熟悉匯編語言編程
二、實驗內容
在2000~200FH中查出有幾個字節是零,把零的個數放在2100H中。
三、程序框圖
四、實驗步驟
在2000~200FH的幾個單元中填入零,運行本程序后檢查2100H單元中的數是否與2000~200FH中零的個數相同。
實驗代碼:
ORG 00H
AJMP MAIN
ORG 30H
MAIN:
MOV R0,#16
MOV R6,#00H
MOV R7,#00H
LOOP1:
MOV A,R7
MOV DPTR,#0FFH
INC A
MOV R7,A
MOVC A,@A+DPTR
MOV DPH,#20H
MOV DPL,R6
MOVX @DPTR,A
INC R6
DJNZ R0,LOOP1
MOV R1,#16
MOV R2,#00H
MOV DPTR,#2000H
LOOP2:
MOVX A,@DPTR
INC DPTR
CJNE A,#00h,NEXT
INC R2
NEXT:
DJNZ R1,LOOP2
MOV A,R2
MOV DPTR,#2100H
MOVX @DPTR,A
ORG 100H
TAB:
DB 12H,34H,24H,00H,00H,11H,00H,56H
DB 23H,0BH,2FH,00H,0A2H,00H,25H,45H
END
實驗截圖:
五、實驗體會
通過本次實驗,我熟悉了匯編語言編程,并且對c51單片機有了更深一步的認識。
六、思考題
在1000~100FH的幾個單元中填入8H,檢查8H的個數,并填入1100H單元中,如何來修改程序?
修改后代碼:
ORG 00H
AJMP MAIN
ORG 30H
MAIN:
MOV R0,#16
MOV R6,#00H
MOV R7,#00H
LOOP1:
MOV A,R7
MOV DPTR,#0FFH
INC A
MOV R7,A
MOVC A,@A+DPTR
MOV DPH,#10H
MOV DPL,R6
MOVX @DPTR,A
INC R6
DJNZ R0,LOOP1
MOV R1,#16
MOV R2,#00H
MOV DPTR,#1000H
LOOP2:
MOVX A,@DPTR
INC DPTR
CJNE A,#08h,NEXT
INC R2
NEXT:
DJNZ R1,LOOP2
MOV A,R2
MOV DPTR,#1100H
MOVX @DPTR,A
ORG 100H
TAB:
DB 12H,34H,24H,08H,00H,11H,00H,56H
DB 23H,0BH,2FH,00H,0A2H,00H,25H,45H
END
七、參考程序
ORG 0AA0H
L5800: MOV R0,#10H ;查找16個字節
MOV R1,#00H
MOV DPTR,#2000H
L5811: MOVX A,@DPTR
CJNE A,#00H,L5816;取出內容與00H相等嗎?
INC R1 ;取出個數加1
L5816: INC DPTR
DJNZ R0,L5811 ;未完繼續
MOV DPTR,#2100H
MOV A,R1
MOVX @DPTR,A ;相同數個數送2100H
L581E: SJMP L581E
END
|