找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11036|回复: 15
收起左侧

求大佬告知把C语言程序转成汇编语言的方法

  [复制链接]
回帖奖励 20 黑币 回复本帖可获得 20 黑币奖励! 每人限 2 次(中奖概率 70%)
ID:535873 发表于 2019-5-12 19:06 | 显示全部楼层 |阅读模式
C语言程序如图,实在是不会转汇编,求大佬帮忙指点思路,想自己搞定

//12M晶振。4位共阴数码管,P0 段码,P2.0~P2.3 位控
//显示 00.00~99.99  
//2011 07 07   E:\DPJ_C\00.00\00.00.c

#include <reg51.h>
#define uchar unsigned char
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;

sbit P27=P0^7;
sbit KS=P1^0; //开始
sbit KR=P1^1; //复位

uchar time,xs,ge,shi,bai,qian;
uchar code tab[ ]=        {        
                                        0x3F,/*0*/
                                0x06,/*1*/
                                0x5B,/*2*/
                                0x4F,/*3*/
                                0x66,/*4*/
                                0x6D,/*5*/
                                0x7D,/*6*/
                                0x07,/*7*/
                                0x7F,/*8*/
                                0x6F,/*9*/
                                        };

void delay_ms(unsigned int ms)  //1ms延时
{
           uchar a;
           while(ms--)
        for(a=123;a>0;a--);
}

void display();

void T0intinit( )        //定时器T0初始化
{
        TMOD=0x01;
        TH0=(65536-10000)/256;       //10ms定时
        TL0=(65536-10000)%256;
        EA=1;
        ET0=1;
}

void main()
{         
        T0intinit( );
        while(1)
        {         
                display( );
                while(!KS)            //开始/暂停 键
                {           
                        display( );
                        if(KS)
                        TR0=!TR0;
                }
               
                while(!KR)         //清零键
                {
                        display( );
                        if(KR)
                        TR0=0;
                        qian=0;
                        bai=0;
                        shi=0;
                        ge=0;
                }
                if(bai==10)
                {
                        bai=0;
                        qian++;
                }
                if(qian==10)
                {
                        qian=0;
                        TR0=0;
                }
        }
}


void display( )
{
        P23=0;
        P0=tab[ge];
        delay_ms(1);
        P23=1;
        P22=0;
        P0=tab[shi];
        delay_ms(1);
        P22=1;
        P21=0;
        P0=tab[bai]|0x80;
        delay_ms(1);
        P21=1;
        P20=0;
        P0=tab[qian];
        delay_ms(1);
        P20=1;
}

void T0int( ) interrupt 1 //定时器T0中断 方式1
{
        TH0=(65536-10000)/256;       //重装10ms定时常数
        TL0=(65536-10000)%256;
        ge++;
                if(ge==10)
                {
                        ge=0;
                        shi++;
                }
                if(shi==10)
                {
                        shi=0;
                        bai++;
                }
}


实在是不会
Snipaste_2019-05-12_19-04-46.png
回复

使用道具 举报

ID:374028 发表于 2019-5-12 23:29 | 显示全部楼层
1、完全手工根据C语言的流程和目的,改编成汇编语言,这样做工作量很大  2、利用仿真软件,在仿真环境下,是有相应的汇编代码的,这样做工作量相对较小,但可读性较差。
回复

使用道具 举报

ID:405797 发表于 2019-5-13 01:08 | 显示全部楼层
用keil里仿真的时候会有一个窗口显示汇编程序
回复

使用道具 举报

ID:123289 发表于 2019-5-13 08:19 | 显示全部楼层
KEIL中自动生成的“.asm”文件就是。
回复

使用道具 举报

ID:535873 发表于 2019-5-15 00:07 | 显示全部楼层
18792791321 发表于 2019-5-12 23:29
1、完全手工根据C语言的流程和目的,改编成汇编语言,这样做工作量很大  2、利用仿真软件,在仿真环境下, ...

感谢大佬回复,实在不会
回复

使用道具 举报

ID:537018 发表于 2019-5-15 18:05 | 显示全部楼层
keil可以直接编译,有一个编译窗口
回复

使用道具 举报

ID:539402 发表于 2019-5-15 22:58 | 显示全部楼层
用keil就可以,软件直接编译通过,在DEBUG中有反汇编的窗口,你可以去看看
回复

使用道具 举报

ID:536759 发表于 2019-5-16 19:15 | 显示全部楼层
keil中有转成“asm”的功能
回复

使用道具 举报

ID:554547 发表于 2019-12-16 23:55 | 显示全部楼层
Kritolv 发表于 2019-5-16 19:15
keil中有转成“asm”的功能

能不能发一下具体过程,先谢谢啦
回复

使用道具 举报

ID:643271 发表于 2019-12-17 15:20 来自手机 | 显示全部楼层
用keil中的DEBUG命令会有对应的汇编语言
回复

使用道具 举报

ID:666358 发表于 2019-12-17 15:31 | 显示全部楼层
KEIL中生成的.asm文件打开看就是了。
回复

使用道具 举报

ID:439047 发表于 2019-12-17 16:01 | 显示全部楼层
编译后,你可以.O或ASM,等文件中找到对应的汇编文件。现在少用了,具体的文件你自己找了,通常有相对应的,
回复

使用道具 举报

ID:665863 发表于 2019-12-17 16:24 | 显示全部楼层
keil中有直接编译
回复

使用道具 举报

ID:677920 发表于 2019-12-30 22:20 | 显示全部楼层
keil中有转asm的功能,软件运行程序的时候自动生吧
回复

使用道具 举报

ID:679004 发表于 2020-1-1 18:07 | 显示全部楼层
keil中有转成“asm”的功能,打开看一下就行了
回复

使用道具 举报

ID:627214 发表于 2020-1-2 17:31 | 显示全部楼层
希望对你有帮助!
keil怎样把C语言转换成单片机汇编语言_百度知道 https://zhidao.baidu.com/question/548559856.html
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表