4603|6

3

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

求助C语言变成汇编语言 [复制链接]

老师的作业是要求用汇编语言写 可是没有学过汇编 就用C写了  只是很短的一点  哪位大哥大姐可以帮忙翻译成汇编语言  先谢谢各位了(用的是AT89C52)
第一个:
//利用2个独立按键分别控制2组8位LED灯闪烁
#include<reg51.h>

#define LEDs1 P1
#define LEDs2 P2
sbit btn1 = P3^0;
sbit btn2 = P3^1;

delay(char t){

char i,j;

for(i=0;i<t;i++){

for(j=0;j<100;j++);

}
}

void main(void){

char i=0;

P3=0xff;

while(1){

if(btn1==0){

delay(2);

LEDs1=0xfe;

for(i=0;i<8;i++){

LEDs1>>1;

delay(10);

}

}

if(btn2==0){

delay(2);

LEDs2=0xfe;

for(i=0;i<8;i++){

LEDs2>1;

delay(10);

}

}

}

第二个:
//利用4个按键控制4个数码管显示不同的数码

#include"reg51.h"

#define BUTTON P1
#define SEG7 P2
#define ScanSEG P3
char tab[5]={0xc0,0xf9,0xa4,0xb0,0x99};//段码
char sel[4]={0x01,0x02,0x04,0x08};//位选码

void scanLED(char storige){

char k;

for(k=0;k<4;k++){

ScanSEG=sel[k];

SEG7=tab[storige];

}
}

void main(){

char storige=0;

BUTTON = 0xff;

while(1){

if(BUTTON==~0x01)

storige=1;

if(BUTTON==~0x02)

storige=2;

if(BUTTON==~0x04)

storige=3;

if(BUTTON==~0x08)

storige=4;

scanLED(storige);

}
}



}

此帖出自51单片机论坛

最新回复

汇编不是什么难事,去找本单片机的汇编编程方面的书看看即可。用汇编编程会对硬件和时序的理解更加到位,学习单片机时使用汇编编程有很大的好处,通吃高级语言和汇编的工程师比只会其中一样的工程师技术水平更佳的概率是比较大的,至少我见过的能够称得上是真正高手的人都是高级语言和汇编通吃的。  详情 回复 发表于 2012-5-10 17:54
点赞 关注
 

回复
举报

145

帖子

2

TA的资源

一粒金砂(中级)

沙发
 

回复 楼主 我来学习 的帖子

你们老师真是变态,还用汇编?
此帖出自51单片机论坛
 
个人签名非淡泊无以明志,非宁静无以致远。
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
额~为什么不用反汇编直接抄出来呢?
此帖出自51单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

4
 
帮着弄了一个,另一个自己转呗
此帖出自51单片机论坛
 
 
 

回复

6

帖子

0

TA的资源

一粒金砂(中级)

5
 
17: void main(void){
    18:   char i = 0;
C:0x0800    E4       CLR      A
C:0x0801    FC       MOV      R4,A
    19:   P3 = 0xff;
C:0x0802    75B0FF   MOV      P3(0xB0),#0xFF
    20:   while(1){
    21:      if(btn1==0){
C:0x0805    20B013   JB       btn1(0xB0.0),C:081B
    22:            delay(2);
C:0x0808    7F02     MOV      R7,#0x02
C:0x080A    120838   LCALL    delay(C:0838)
    23:            LEDs1 = 0xfe;
C:0x080D    7590FE   MOV      P1(0x90),#0xFE
    24:            for(i=0;i<8;i++){
C:0x0810    E4       CLR      A
C:0x0811    FC       MOV      R4,A
    25:              LEDs1 >> 1;
    26:                  delay(10);
C:0x0812    7F0A     MOV      R7,#0x0A
C:0x0814    120838   LCALL    delay(C:0838)
    27:            }
C:0x0817    0C       INC      R4
C:0x0818    BC08F7   CJNE     R4,#0x08,C:0812
    28:          }
    29:  
    30:          if(btn2==0){
C:0x081B    20B1E7   JB       btn2(0xB0.1),C:0805
    31:            delay(2);
C:0x081E    7F02     MOV      R7,#0x02
C:0x0820    120838   LCALL    delay(C:0838)
    32:            LEDs2 = 0xfe;
C:0x0823    75A0FE   MOV      PPAGE_SFR(0xA0),#0xFE
    33:            for(i=0;i<8;i++){
C:0x0826    E4       CLR      A
C:0x0827    FC       MOV      R4,A
C:0x0828    C3       CLR      C
C:0x0829    EC       MOV      A,R4
C:0x082A    6480     XRL      A,#P0(0x80)
C:0x082C    9488     SUBB     A,#TCON(0x88)
C:0x082E    50D5     JNC      C:0805
    34:              LEDs2 >> 1;
    35:                  delay(10);
C:0x0830    7F0A     MOV      R7,#0x0A
C:0x0832    120838   LCALL    delay(C:0838)
    36:            }
C:0x0835    0C       INC      R4
C:0x0836    80F0     SJMP     C:0828
     9: delay(char t)
    10: {
    11:   char i,j;
    12:   for(i=0;i C:0x0838    E4       CLR      A
C:0x0839    FE       MOV      R6,A
C:0x083A    C3       CLR      C
C:0x083B    EF       MOV      A,R7
C:0x083C    6480     XRL      A,#P0(0x80)
C:0x083E    F8       MOV      R0,A
C:0x083F    EE       MOV      A,R6
C:0x0840    6480     XRL      A,#P0(0x80)
C:0x0842    98       SUBB     A,R0
C:0x0843    5009     JNC      C:084E
    13:     for(j=0;j<100;j++);
C:0x0845    E4       CLR      A
C:0x0846    FD       MOV      R5,A
C:0x0847    0D       INC      R5
C:0x0848    BD64FC   CJNE     R5,#0x64,C:0847
    14:   }
C:0x084B    0E       INC      R6
C:0x084C    80EC     SJMP     C:083A
    15: }
C:0x084E    22       RET      
   133:                 MOV     R0,#IDATALEN - 1
C:0x084F    787F     MOV      R0,#0x7F
   134:                 CLR     A
C:0x0851    E4       CLR      A
   135: IDATALOOP:      MOV     @R0,A
C:0x0852    F6       MOV      @R0,A
   136:                 DJNZ    R0,IDATALOOP
C:0x0853    D8FD     DJNZ     R0,IDATALOOP(C:0852)
   185:                 MOV     SP,#?STACK-1
   186:  
   187: ; This code is required if you use L51_BANK.A51 with Banking Mode 4
   188: ; Code Banking
   189: ; Select Bank 0 for L51_BANK.A51 Mode 4
   190: #if 0   
   191: ;      Initialize bank mechanism to code bank 0 when using L51_BANK.A51 with Banking Mode 4.
   192: EXTRN CODE (?B_SWITCH0)
   193:                 CALL    ?B_SWITCH0      ; init bank mechanism to code bank 0
   194: #endif
   195: ;

C:0x0855    758107   MOV      SP(0x81),#0x07
   196:                 LJMP    ?C_START
C:0x0858    020800   LJMP     main(C:0800)
C:0x085B    00       NOP      
C:0x085C    00       NOP      
C:0x085D    00       NOP      
C:0x085E    00       NOP
此帖出自51单片机论坛
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(中级)

6
 
这个是 反汇编出来的吗?   这门课之前有个前置课是汇编语言   不强制选 当时没注意 结果现在用了
 
还让写出注释  要对着程序讲解  晕了 我根本不认识汇编  郁闷 
此帖出自51单片机论坛
 
 
 

回复

1万

帖子

140

TA的资源

版主

7
 
汇编不是什么难事,去找本单片机的汇编编程方面的书看看即可。用汇编编程会对硬件和时序的理解更加到位,学习单片机时使用汇编编程有很大的好处,通吃高级语言和汇编的工程师比只会其中一样的工程师技术水平更佳的概率是比较大的,至少我见过的能够称得上是真正高手的人都是高级语言和汇编通吃的。
此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表