51 匯編編程:8×8 點陣驅(qū)動
;有個題目,要求把C語言的程序,改成匯編的,鏈接如下:
;看他原來的程序,是驅(qū)動8*8LED點陣顯示字符的。
;
;根據(jù)程序,做而論道畫出了點陣驅(qū)動電路,運行C程序后顯示如下所示:
;
;
;LED所顯示的全部字符都在下面給出了,有些字符的圖形,還是很有創(chuàng)造力的,呵呵
;全部代碼如下:
;8*8LED點陣
ORG0000H
JMPSTART
;-----------------------
RED:
DB0x18,0x00,0x18,0x18,0x18,0x18,0x18,0x18;//i
DB0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFC,0xFC;//l
DB0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C;//o
DB0x00,0x00,0x44,0x44,0x44,0x44,0x28,0x10;//v
DB0x00,0x3E,0x02,0x02,0x3E,0x02,0x02,0x3E;//e
DB0x81,0xA5,0xDB,0xC3,0xA5,0x99,0x81,0xFF;//u
;-----------------------
START:
MOVDPTR,#RED
MOVR2,#254
LP0:MOVR3,#0
LP1:MOVR5,#100
LP2:MOVR4,#0
LP3:MOVA,R3
ADDA,R4
CALLDISP
INCR4
CJNER4,#8,LP3
DJNZR5,LP2
;-----------------
MOVA,R3
ADDA,#8
MOVR3,A
CJNER3,#48,LP1
SJMPLP0
;-----------------------
DISP:
MOVCA,@A+DPTR
MOVP2,A
MOVP0,R2
MOVA,R2
RLA
MOVR2,A
DJNZR7,$
DJNZR7,$
MOVP2,#0
RET
;-----------------------
END
;做而論道把匯編程序提交后,卻出現(xiàn)下面的提示:
;
;>_
;
;這種事情,出現(xiàn)過多次,申訴后,也沒有什么結(jié)果的。
;
;呵呵,百度知道的某些網(wǎng)管,判斷能力、水平,真難以用語言描述。
;
;
;本題目給出的C程序如下:
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharcodeRED[]={
0x18,0x00,0x18,0x18,0x18,0x18,0x18,0x18,//i
0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFC,0xFC,//l
0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C,//o
0x00,0x00,0x44,0x44,0x44,0x44,0x28,0x10,//v
0x00,0x3E,0x02,0x02,0x3E,0x02,0x02,0x3E,//e
0x81,0xA5,0xDB,0xC3,0xA5,0x99,0x81,0xFF//u
};
voiddelay(uintt)
{
for(;t>0;t--);
}
voidmain()
{
ucharr,j,q=0,t=0;
while(1){
for(r=0;r<40;r++){
for(j=q;j P0=(~(0x01< P2=RED[j];delay(200);P2=0; t++;t%=8; } } q+=8;q%=48; } } 大家可以試試,兩種程序的功能,是否相同。