谁能帮我把这句汇编语言转化为C语言的,谢谢了

作者&投稿:抄民 (若有异议请与网页底部的电邮联系)
把汇编语言转化成C语言。。。。~

OLLYDBG 反汇编工具
本人没有用过,但是反汇编的东西肯定与C的源码存在差异,毕竟一种功能的实现可以有很多种C语言的写法,最后编译成汇编就只有一种固定的汇编代码了。
但是根据编译器的不同,相同的C代码可能编译出不同的汇编代码。
所以反编译意义不大。

1、打开IAR FOR STM8工程。

2、编一段C语言的延时程序,作为例子。

3、如何在目前实例上,添加我们的汇编。

4、编译一下是否可以编译通过,编译提示OK。

5、进入仿真界面,是否可以运行。把断点设在汇编的程序上,运行后,可以在断点处停止,说明仿真也是正常的。

#include"reg51.h"//这里以51单片机为例,其他单片机请添加其他头文件
unsigned char A;
void main()
{
EA=1;//开总中断
EX1=1;//开外部中断1
PX1=0;//这个貌似设置优先级的,自己查下书
IT1=1;//设置触发方式,边沿触发还是其他触发方式
A=0x01;//赋值,不多说
while(1);
}

void interrupt 0 using 0 //中断,那两个0只适合51系列单片机,其他单片机参考DataSheet
{
A<<=1;
P1=A;
}

include"reg51.h"
unsigned char a;
Timer1() interrupt 3
{
a<<=1;
P1=a;
}
void main()
{
EA=1;
EX1=1;
PX1=0;
IT1=1;
a=0x01;
while(1);
}

include"reg51.h"
unsigned char a;
Timer1() interrupt 3
{
a<<=1;
P1=a;
}
void main()

EA=1;

while(1);

void IN11() interrupt 0
{
ACC=ACC>>2;
P1=ACC;
}
main()
{

EA=1;
EX1=1;
PX1=0;
IT1=1;
ACC=0x01;
while(1);

}楼主好像只会问,不会看啊,辛苦大家打了这么多代码。呃。连个答案也没来确认。


用汇编mov语句怎么表达这句(80H)=(40H)
高 128 字节必须间接寻址 MOV R0, #80H ;用 R0 存放地址 MOV @R0, 40H ;把 40H 单元内容送到 80H 单元

汇编语言排序,把我写的降序改成升序
NEXT2:MOV AL,[DI]INC DI CMP AL,[DI]JNC NEXT3 ;改成:JC NEXT3 即可 MOV DL,[DI]MOV [DI-1],DL MOV [DI],AL NEXT3:DEC BL JNZ NEXT2 DEC CL JNZ NEXT1

这几句汇编语句是什么意思
LES BX,DWORD PTR DS:_OSTCBHiGHrDY ;LES BX,...这种形式就是把某个偏移地址(或说指针)装入到BX中,这个偏移地址的默认段地址就是ES 所以,这里的ES:[BX]指向内容就是OSTCBHiGHrDY的入口地址.而装入的时候是以双字的形式(DWORD),所以,也就把OSTCBHiGHrDY的段地址DS也装入到了ES:[BX+2]中.MOV ...

汇编语言是什么语言?
然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。 汇编语言同样十分依赖于机器硬件,移植性不好,但效率仍十分高,针对计算机特定硬件而编制的汇编语言程序,能准确发挥计算机硬件的功能和特长,程序精炼而质量高,所以至今仍是一种常用而强有...

汇编语言里这两句指令是什么意思?高手帮下忙
把数据段(DS)中EDX寻址的字节单元的内容与DH相加,结果放到该单元中;把数据段中EAX寻址的字节单元的内容与CL相加,结果放到该单元中。

汇编语言谁帮我解释一下!
MOV EAX,DWORD PTR SS:[ESP+4]从堆栈段中ESP+4这个地址里取出数值赋给EAX,然而DWORD是双字,也就是4个字节的意思,从ESP+4里取出来的是4个字节,而且EAX正好可以容纳4个字节。CS 属于代码段,用于存放执行的代码。DS 属于数据段,常常用于存放变量,比如局部的和全局的,可能还有常量。SS 则属于...

请帮我看看下面的汇编语句错在哪里?
(2)mov bx,offset myword[si] 注:myword是一个字变量;错在offset,myword是个变量,而[si]是寄存器间接寻址;而offset只能对静态地址有效.应改为:lea bx,myword[si].(3)mov mybyte1,mybyte2 注:mybyte1和mybyte2都是2字节变量;错在不能直接内存对内存的操作.可以改为 mov ax,mybyte2 mov...

汇编语言,帮忙看下这里面的CLR C和SUBB A,#80H这两句有什么用
CLR C:先把借位清零;SUBB A,#80H:减去A减128,八位为正数最大为+127,如果是正数减128必有借位,c=1,则跳转NEXT2:INC R5;如果是负数,c=0没有借位,则继续执行下一条语句INC R7

汇编语言这段程序的功能是什么啊?
直接传给寄存器DI(这句和上一句不同,自己体会一下)(作为目标地址:那里是到时把数据拷贝过来的地方(做缓冲区用))第三句是把标志寄存器的DF位置0 第四句是把SI地址开始的内容复制到DI地址的地方,每次复制一个字节,重复复制次数为CX中的次数 应该就是这样了!不知道对不对,好久没用汇编了 ...

哪位懂汇编语言的人能告诉我这几条语句起什么作用 希望能详细点 非常...
这是个延时子程序,延时时间为(256*2)*2us=1024us=1.024ms 详细注释如下:DELAY :MOV R4, #0 ; 先将0赋于R4 DJNZ R4, $ ; R4-1后等于FFH,再不断-1,如果不等于零就原地踏 ; 步,等于零就往下执行,$表示当前指针地址 DJNZ R4, $ ; 同上,等于零后就往下执行,...

青海省15317505919: 谁能帮我把下面的汇编语言转换成c语言 -
徵炎捷洛: ORG 0000HJMP MAINORG 0100H MAIN:MOV DPTR, #TABCLR AMOVC A, @A + DPTRMOV 45H, AINC DPTRCLR AMOVC A, @A + DPTRMOV B, 45HADD A, BMOV DPTR, #1000HMOVX @DPTR, A SJMP $TAB:DW 12H, 23H, 34HDB 45H, 56H, 67HEND太简单,不好改.

青海省15317505919: 将汇编代码转换为c语言 -
徵炎捷洛: 目前的反编译软件,只存在将机器指令码反汇编成汇编代码,不存在将汇编代码反编译成C语言的,因为汇编代码是低级语言,最接近于机器码(具体可查看不同硬件平台的技术资料),每条汇编指令都对应一个固定的机器码,这样进行反汇编是可行的,而C语言属于高级语言,编译器没有能力将汇编语言翻译成C或更高级的语言.

青海省15317505919: 怎样把汇编语言转化为C语言 -
徵炎捷洛: 只能你用C语言重新实现一次汇编程序已经实现的功能.汇编是低级语言,c语言是中级语言. 语言越低级越靠近机器思维,比如01010101二进制是最低级的编码方式. 反之越高级就越靠近人的思维. 编译器或虚拟机(相对于脚本语言),负责把人的语言(高级语言)变成机器能理解的超低级语言010011,, 目前并没有工具能把机器的语言变成人类能理解的高级语言. 所以你只能重新写.

青海省15317505919: 求助,将汇编语言转换成C语言! -
徵炎捷洛: 第一段 unsigned char XDATA *pData = (unsigned char *)0xFD00;*pData = 0xd0; pData++;*pData = 0x81; pData++;*pData = 0x28; pData++; pData++;*pData = 0x28; 第二部分 unsigned char CODE FreqL[] ={1,2,3,4,5}; unsigned char CODE ...

青海省15317505919: 请哪位高手帮忙把汇编语言转换为C语言 -
徵炎捷洛: 建议楼主安装 Keil uVision4 之类的 Keil 软件,用这个编写的C语言可以随意看汇编,也可以编写汇编,只要把新建的文件后缀 .c 换成 .asm 就可以了

青海省15317505919: 如何把汇编语言装换为C语言 -
徵炎捷洛: 汇编语言到C语言,没有工具可以转换,低级语言到高级的,目前还没有看见过.所以你的问题需要你自己动手去写C语言的程序,先吃透汇编的内容,然后动手编写相关的C程序吧,没有什么捷径的.不过如果是标准的汇编函数倒是可以找到相对应的C函数,比如加减乘除等基本运算、循环、查询、扫描等等,这些都是有典型C函数库可以找到的.

青海省15317505919: 会汇编语言的朋友,能帮我把这段程序改写成C程序,谢谢各位! -
徵炎捷洛: 这里面只是一部分程序,其中,外部中断0和1服务不在此列.显示和距离计算不在此列. 大概意思如下: main() {TMOD=0x11;TH0=TL0=0;TH1=TL1=0;PX0=1;ET1=1;EA=1;TR1=1;while(1){while(Flag!=1) Display();GetDistance();EA=0;ET0=0;TH0=TL0=0;TR1=1;EA=1;} }最关键的几个部分都不在里面,主要是测距离,采用两个定时中断来完成的.

青海省15317505919: 将一个简单的汇编语言呢转换成C语言程序 -
徵炎捷洛: #include<reg51.h>#define uchar unsigned char uchar disdat[8]={0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80}; main() { uchar a; while(1) { P2=0xc0; while(!P3_3) { a=0; if(P0_0){a=1;break;} if(P0_1){a=2;break;} if(P0_2){a=3;break;} if(P0_3){a=4;break;...

青海省15317505919: 将汇编语言转换成C语言,急用(用P1口做为输入口,使发光二极管从右到左轮流循环点亮,) -
徵炎捷洛: #include <REGX51.H> #include<intrins.h> #define uint unsigned int #define uchar unsigned char void delay(void) {uchar a,b,c;for(a=0x05;a>0;a--)for(b=0x80;b>0;b--)for(c=0xFF;c>0;c--); } void main(void) {uchar i;while(1){for(i=0;i<8;i++){P1=~(1<<i);delay();}} }

青海省15317505919: 下面的汇编语言怎么变为C语言? -
徵炎捷洛: char xdata* ptr; char acc;ptr=0x23; acc = 0x5a *ptr = acc; 或直接 *ptr =0x5a;ptr=0x23; acc=*ptr;ptr=0x0023; acc = 0x5b *ptr = acc; 或直接 *ptr =0x5b;ptr=0x0023; acc=*ptr;

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网