51 汇编编程:8×8 点阵驱动

110 篇文章 37 订阅
25 篇文章 3 订阅

  百度知道上有个题目,要求把 C 语言的程序,改成汇编的。
  题目链接:C 语言程序改成汇编语言程序

  做而论道看他原来的 C 程序,是驱动 8 * 8 LED 点阵显示器显示字符的。
  根据程序,做而论道画出了点阵驱动电路,运行 C 程序后显示如下所示:

  程序运行时,LED 显示器将轮流显示 “ i、L、O、V、E、U”,循环不止。LED 所显示的全部字符图形都在图片下方给出了。有些字符的图形,还是很有创意的,呵呵

  做而论道写出了功能相同的汇编程序,全部代码如下:

;8*8 LED 点阵显示
    ORG   0000H
    JMP   START
;-----------------------
RED:
    DB  0x18,0x00,0x18,0x18,0x18,0x18,0x18,0x18;i
    DB  0x0C,0x0C,0x0C,0x0C,0x0C,0x0C,0xFC,0xFC;l
    DB  0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C;o
    DB  0x00,0x00,0x44,0x44,0x44,0x44,0x28,0x10;v
    DB  0x00,0x3E,0x02,0x02,0x3E,0x02,0x02,0x3E;e
    DB  0x81,0xA5,0xDB,0xC3,0xA5,0x99,0x81,0xFF;u
;-----------------------
START:
    MOV   DPTR, #RED
    MOV   R2, #254
LP0:MOV   R3, #0
LP1:MOV   R5, #100
LP2:MOV   R4, #0
LP3:MOV   A, R3
    ADD   A, R4
    CALL  DISP
    INC   R4
    CJNE  R4, #8, LP3
    DJNZ  R5, LP2
;-----------------
    MOV   A, R3
    ADD   A, #8
    MOV   R3, A
    CJNE  R3, #48, LP1
    SJMP  LP0
;-----------------------
DISP:
    MOVC  A, @A + DPTR
    MOV   P2, A
    MOV   P0, R2
    MOV   A, R2
    RL    A
    MOV   R2, A
    DJNZ  R7, $
    DJNZ  R7, $
    MOV   P2, #0
    RET
;-----------------------
END

  但是,做而论道把汇编程序提交到百度知道后,却出现下面的提示:

  >_<!! 您的回答可能违反了知道内容规范,暂时仅您自己可见。可发起申诉找回。

  这种事情,出现过多次了,申诉后,也没有什么结果的,只能就此算了吧。
  呵呵,百度知道网管的判断能力、水平,真难以用语言描述。

  原题目给出的 C 程序如下:

#include <reg52.h>
#define uchar  unsigned char
#define uint   unsigned int
uchar code  RED[] = {
    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
    };
void delay(uint t)
{
    for(; t > 0; t--);
}
void main()
{
    uchar r, j, q = 0, t = 0;
    while(1)  {
      for(r = 0; r < 40; r++) {
        for(j = q; j < q + 8; j++) {
          P0 = (~(0x01 << t));
          P2 = RED[j]; delay(200); P2 = 0;
          t++;  t %= 8;
        }
      }
      q += 8;  q %= 48;
    }
}

  大家可以检验一下,这两种语言的程序的功能,是否相同。

  有位网友,利用反汇编 C 语言的方法,得出了汇编语言程序,程序长很多且不说,而且还编译不成功。

  一般来说,必须是由精通这两种语言的人,才能进行两种语言的转换。用软件来转换,是难以成功的。


--本文完--

  

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值