51单片机汇编程序代码,该如何处理

51单片机汇编程序代码
题目:用51单片机I/O端口和扩展口控制LED和按键
     ①按键扫描子程序,每50ms检查按键状态。
     ②LED输出子程序
     ③按1次键,377扩展输出口驱动LED灯(位输出“1”点亮相应位灯)显示内容改变1次(0x00-0x01-0x02-0x04-0x08-0x10-0x20-0x40-0x80-0xff循环),初始状态显示0x00。           
------解决思路----------------------
引用:
题目:用51单片机I/O端口和扩展口控制LED和按键
     ①按键扫描子程序,每50ms检查按键状态。
     ②LED输出子程序
     ③按1次键,377扩展输出口驱动LED灯(位输出“1”点亮相应位灯)显示内容改变1次(0x00-0x01-0x02-0x04-0x08-0x10-0x20-0x40-0x80-0xff循环),初始状态显示0x00。           


看来是个作业题啊,实在不行就先用C写出来实现功能了,反汇编出汇编的代码得了
------解决思路----------------------
如果验证是机器验  直接C   汇编出来汇编代码算了  
汇编的话   里面的函数调用会有点麻烦
------解决思路----------------------
KEY BIT P1.0
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
    MOV TMOD,#01H
   MOV TH0,#HIGH(65536-50000)   ;定时50毫秒
   MOV TL0,#LOW(65536-50000)
   SETB TR0
    SETB ET0
    SETB EA
    CLR A
    SJMP $
T0ISR:
    CLR TR0
   MOV TH0,#HIGH(65536-50000)
   MOV TL0,#LOW(65536-50000)
   SETB TR0
    JB KEY,T0E
    MOV DPTR,#LEDTAB
    PUSH ACC
    MOVC A,@A+DPTR
    MOV P0,A
    POP ACC
    INC A
    MOV B,#10
    DIV AB
T0E:
    RETI
LEDTAB:
    DB 00H,01H,02H,04H,08H,10H,20H,40H,80H,0FFH
    END