将下面的C语言程序转换成汇编程序 成功之后再补150分

作者&投稿:夔盾 (若有异议请与网页底部的电邮联系)
将下面的C语言变成单片机汇编语言~

ORG 0000H
LOOP:
MOV B,#20
LOOP1:
P0=0F0H;
LCALL delay
P0=0FFH
LCALL delay
DJNZ B,LOOP1
MOV B,#20
LOOP2:
P0=0FH;
LCALL delay
P0=0FFH
LCALL delay
DJNZ B,LOOP2
LJMP LOOP
delay:
MOV R7,#0
MOV R6,#0
LOOP3:
DJNZ R6,$
DNJZ R7,LOOP3
RET
END

我写个,不过你说的外部RAM 我不知道你指的是哪个。所以我就么写,
#include
#define uchar unsigned char
uchar *p;
uchar code table[]={0x21,0x23,0x25,0x26,0x27,0x28,0x29,0x22,0x31,0x33,0x35,0x36,0x37,0x38,0x39,0x32,0x50,0x51,0x52,0x53,0x55,0x56,0x57,0x58,0x69,0x98,0x85,0x76,0x92,0x83,0x65,0x66};
P2 = 0x40;
p=table;//指针p 指向表table 首地址。就相当于把表格整个赋值给P了,P 可以直接指向外部RAM;

将C语言程序转为汇编,有三种方法:
1 读懂C语言的含义,并针对功能,用汇编书写。
由于C语言是很接近底层的语言,大多数C语言语句,都有对应或类似功能的汇编代码段,将相同功能实现即可得到汇编程序。

2 借助于编译软件,自动将C语言转为汇编代码。
编译软件最终将C代码编译成二进制代码,而二进制代码与汇编是一一对应的,所以部分编译器也提供汇编输出功能。
如gcc,要将a.c转为汇编程序a.S,只需要
gcc a.c -o a.S -S即可。

3 先将C语言编译成可执行文件,再利用反编译工具,将可执行文件转为汇编语言。

说明: 2和3的方法本质相同,均会产生大量的冗余代码。

我写个,不过你说的外部ram 我不知道你指的是哪个。所以我就么写,
#include<reg51.h>
#define uchar unsigned char
uchar *p;
uchar code table[]={0x21,0x23,0x25,0x26,0x27,0x28,0x29,0x22,0x31,0x33,0x35,0x36,0x37,0x38,0x39,0x32,0x50,0x51,0x52,0x53,0x55,0x56,0x57,0x58,0x69,0x98,0x85,0x76,0x92,0x83,0x65,0x66};
P2 = 0x40;
p=table;//指针p 指向表table 首地址。就相当于把表格整个赋值给P了,P 可以直接指向外部RAM;

转换成什么汇编语言?

基本上,得重新编写。

编译器直接就可以转换。。。还需要这么麻烦???


将下面的C语言程序转换成汇编程序 成功之后再补150分
1 读懂C语言的含义,并针对功能,用汇编书写。由于C语言是很接近底层的语言,大多数C语言语句,都有对应或类似功能的汇编代码段,将相同功能实现即可得到汇编程序。2 借助于编译软件,自动将C语言转为汇编代码。编译软件最终将C代码编译成二进制代码,而二进制代码与汇编是一一对应的,所以部分编译器也提...

请问如何将下列C语言程序改成matlab中的m文件?
end 代码流程基本和C语言一样,有三个点不同:[1] main脚本中的number = exchange(number),因为Matlab没有指针实现,需要用返回值覆盖原数组 [2] exchang函数采用了向量化实现,num(num < 10) = 0表示将num数组中所有小于10的元素置零,如果要贴近C语言的形式,可以用下面的代码:function num =...

如何用C语言编写程序,将负数转为正数?
用C语言编写程序,将负数转为正数,可以使用函数abs(),当然根据简单的“负负得正”,也可,以下是一个简单的C语言程序:在这个程序中,我们首先定义了一个整型变量num,用于存储用户输入的整数。然后,我们使用scanf函数从用户处获取一个整数,并将其存储在num变量中。接下来,我们检查num的值是否小于0。

C语言:下面要求的C程序怎么编?
先定义一个字符型数组,把这一串字符串都进去,以后撤出他的串长,然后对这个字符串以字符为单位进行一次冒泡排序就可以了。具体的程序代码和运行情况见图片。程序代码文本:include<stdio.h> int main(){ int i,j,n;char s[100],t;scanf("%s",s);for(n=0; s[n]; n++);for(i=0; i<...

下面51单片机C语言程序怎么改成按钮按一下才执行,再按一下就停止,如此...
IO直接作为循环条件即可,如下:如果用户按下键不放会有问题,最好改为用户按下键再弹起为一次输入。

C语言程序十进制的数转换成八进制的数
C语言程序十进制的数转换成八进制的数的办法:include <stdio.h>#include <math.h>void main(){int n,a,sum = 0,i =0;printf("十进制输出一个数n\\n");scanf("%d",&n);while(n){a = n%8;n = n\/8;sum += a*pow(10,i);i++;}printf("八进制输出sum:%d",sum);} ...

c语言怎么变成应用程序
有C语言源代码,要将之转换为可执行的应用软件方法如下: 1、准备一个C语言的编译器,比如TC2、0等等。2、运行编译器TC2、0 。3、加载源代码 。4、按Alt-F9。如果是TC 的话直接编译 执行,编译运行的时候 ,exe文件自然就已经生成。

C语言问题:下面程序的运行结果是
看看程序逐步运行跟踪结果:i=1;[i=1] i<5成立,开始循环: i%2为真, printf输出[*], printf累计输出[*#]i++;[i=2] i<5成立,继续循环: i%2为假, continue;i++;[i=3] i<5成立,继续循环: i%2为真, 累计输出[*#*], 累计输出[*#*#]i++;[i=4] i<5成立,继续循环: i%2为...

c语言。下面程序运行的结果是。答案是d,但为啥
!的优先级最高,但是它的结合方向是从右至左,所以上式等价与: !( 4&& ( !(5|| (!0) ) ) ).

请问下面这个实例用C语言程序怎样编程
printf("成绩等级为:%c\\n", grade);return 0;} 在程序中,先定义了一个整型变量 score 和一个字符型变量 grade,用来分别存储输入的成绩和计算出的等级。然后,使用 scanf 函数从键盘上读入成绩,使用除法运算将成绩转化为 1~10 的整数,并将其作为 switch 语句的选择器。根据成绩范围,使用不同...

梅州市15772022685: 将下面的C语言程序用汇编语言实现 -
姚史治伤: USING 0; int i, sum =0; CLR AMOV R3,AMOV R2,A ; for (i=1;i<=100;i++) MOV DPTR,#01H ?C0036: ; {; if (i%2 == 0 && i%3 !=0 ) MOV R4,#00HMOV R5,#02HMOV R7,DPLMOV R6,DPHLCALL ?C?SIDIVMOV A,R5ORL A,R4JNZ ...

梅州市15772022685: 求将下面的C语言转化成汇编语言.谢谢 -
姚史治伤: 兄弟,你写的C语言都这么长,汇编语言就更长了,我估计没有人会帮你写的,并且你没有说清楚是那种汇编,汇编语言很多,如Intel8086/8088、ARM汇编、MIPS汇编等等,并且各种汇编语言语法与指令都不完全相同.有一种最简单的方法,就是先把你的C语言编译,生成.EXE文件,再用反汇编软件将其反编译即可,这种方法很简单,但是其编译效果较差,编译出来的代码较长.放心,反汇编出来的代码是正确的,只不过它比手工写的代码要长一些.

梅州市15772022685: 如何将C语言代码转换为对应的汇编代码 -
姚史治伤: VC6.0下有两种方法: (1)增加参数/FA:Project->Setting...,C/C++选项卡中的Project Options中增加参数/FA,编译后debug目录中将会增加对应源文件的汇编文件(*.asm). (2)如果想查看C语句对应的汇编代码的话,可以这样:F11单步调试...

梅州市15772022685: 请大神帮我把下面的C程序转换成汇编语言 #include <reg51.h> #include <intrins.h> -
姚史治伤: 可以肯定,你这是一个单片机程序,这是三个头文件,包含了这三个头文件,里面的定义就可以引用了. #include ,这个文件包含了单片机里的资源的定义,比如:如果没有这个文件,你对51单片机端口0进行操作,你就要直接操作端口的地址,比如是0x80(端口不是这个地址,这里只是拿来做例子),但是 reg51.h这个文件里,已经定义好了 P0 代表 0x80这个地址,直接用 P0 进行操作就可以了. intrins.h 和 absacc.h,这两个文件都是C语言里的头文件,引用了它们,就可以使用里面定义的一些函数了.

梅州市15772022685: 把下列C语言的语句改写成功能相同的汇编语言程序 -
姚史治伤: 写的方法很多,可能没有标准语句,下面是我的写法.说明:循环中用AX保存i,BX保存j START:XOR AX,AX ;AX=0 MOV BX,AX ;BX=0 MOV CX,AX AND CX,1 ;和1进行逻辑与运算,结果为0表示为偶数,即能被2整除 JZ NEXT1 JMP NEXT2 NEXT1:ADD BX,AX NEXT2:INC AX CMP AX,0064 JL START MOV i,AX ;也可能AX的值无需保存 MOV j,BX ;保存j的值 然后可以输出结果,我们没有写,因为输出已经不重要,而且DOS下和WINDOWS下的输出方法不同

梅州市15772022685: 求把下面这段C语言翻译成汇编语言 -
姚史治伤: RS BIT P3.0RW BIT P3.1EP BIT P3.2result bit 20H.0;MS DATA 70HI DATA 71HDELAY:;延时程序MOV I,#250YS1: NOPNOPNOPNOPDJNZ I,YS1DJNZ MS,DELAYRETlcd_bz:CLR rs ;SE...

梅州市15772022685: 试将下面C语言转换成汇编语言 if(a==0||b==1) c=d+e;(是在ARM状态下) -
姚史治伤: 我不懂C语言只会汇编不知道编的对不对.ldr r0, = aldr r1, = b ldr r2, = cldr r3, = dldr r4, = e cmp r0, # 0beq yunsuancmp r1, # 1beq yunsuanb tiaochuyuansuan:add r2, r3, r4 tiaochu:b tiaochu

梅州市15772022685: 刚刚自学汇编语言,希望有那位大神能过帮我把下面这段c语言翻译成汇编语言!感激不尽! -
姚史治伤: :~/wenjian/bowl$ gcc -S tie.c -o tie.s:~/wenjian/bowl$ vim tie.s:~/wenjian/bowl$ cat tie.c tie.s#include <stdio.h> int main(void) { int n; int sum=0; do{ printf("please enter an integer:\n"); scanf("%d",&n);sum=sum+n;printf("the sum is %d\n\n",...

梅州市15772022685: 怎么样把c语言的代码翻译成汇编语言? -
姚史治伤: KEIL C51是C源文件前面加一条伪指令: #pragma src // 产生汇编文件其它的估计差不多

梅州市15772022685: 怎样将C语言语句转换成汇编指? 用什么软件?或有没有相关的书籍? -
姚史治伤: 如果 只是简单的几行,可以把编译后的exe文件,用系统自带的debug(windows键+R打开 运行窗口 输入debug 空格 exe的路径)打开debug后,输入U可以看到几行汇编代码.如果是源代码 在vs编译器中调试运行,菜单上的:调试--窗口--反汇编 可以查看,如果是其他编译器 仔细找找也带反汇编的 要资料的话 [天书夜读-从汇编语言到Windows内核编程].谭文.邵坚磊. 这本书的基础部分里 有c语言与汇编的转换

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