谁能帮我把这段c语言改成汇编?

作者&投稿:澄宇 (若有异议请与网页底部的电邮联系)
谁能把这段汇编改成C语言的?~

翻译完成,编译通过,但无法调试。
这段程序的目的是 在头信号后,数数据部分的脉冲数。

程序中的延时须要仔细处理。
调试时注意那几个延时比较的大小。

; /*********************************************************************/
; // jieshou_zxcg.c
; // 遥控发射器
; // PJC 2008.11.22
; /*********************************************************************/
; //使用AT89C51单片机,12MHZ晶振,


b_IRIO EQU P3.2
c_COUNT EQU 30H


_DELAY_100US: ;{
PUSH 0

MOV R0,#48H
DJNZ R0, $

POP 0
RET
;}
_DELAYMS: ;{
LCALL _DELAY_100US
DJNZ 0E0H, _DELAYMS ; 0E0H (A)
RET ;}

_IR_RECEIVE: ;{
PUSH 0

SETB b_IRIO

MOV R0,#0

JB b_IRIO, $
_HEAD:
JB b_IRIO, _HEAD_USE
LCALL _DELAY_100US
INC R0
AJMP _HEAD
_HEAD_USE:
CLR C
MOV A,#65
SUBB A,R0
MOV R0,#0
JNC _4P5MS_TEST

POP 0
RET

_4P5MS_TEST:
JNB b_IRIO, _4P5_USE
LCALL _DELAY_100US
INC R0
AJMP _4P5MS_TEST
_4P5_USE: ;IF < 30
CLR C
MOV A,#30
SUBB A,R0
JNC _4P5_USE1

POP 0
RET
_4P5_USE1: ; IF > 70
CLR C
MOV A,#70
SUBB A,R0
JC _DATA0

POP 0
RET

_DATA0:
MOV c_COUNT,#0
_DATA:
JNB b_IRIO,$
MOV R0,#0
INC c_COUNT

_DATA_LONG:
JNB b_IRIO, _DATA_USE
LCALL _DELAY_100US
INC R0
AJMP _DATA_LONG
_DATA_USE:
CLR C
MOV A,#20
SUBB A,R0
JNC _DATA

MOV A,#80
LCALL _DELAYMS

POP 0
RET
;}


_MAIN: ;{
MOV P0,#0FFH
_MAIN_LOOP:
LCALL _IR_RECEIVE
MOV DPTR,#_TAB
MOV A, c_COUNT
MOVC A,@A+DPTR
MOV P2,A
AJMP _MAIN_LOOP

;}
_TAB:
DB 0c0H,0f9H,0a4H,0b0H,099H,092H,082H,0f8H,080H,090H
END
满意请采纳。

这本身就是一段C语言程序,只是它是GCC平台的写法(你可以用gcc来直接编译的) (gcc用的是GNU汇编,而我们一般是用MASM用的格式来写汇编代码的)
这是内联汇编
不知道你用的是什么编译器,如果用的是VC++ ,那么可以修改下写法
大概是类似于下面这样的:
static int __inline fls( int x )
{
__asm {
mov ecx, [x]
bsrl eax, ecx
jnz ffs1
mov ecx, -1
ffs1:
inc eax
}
}

这里说明一下,汇编中返回值默认是在EAX寄存器中的
BSRL的功能是用指定位来设置ZF标志位

翻译完成,编译通过,但无法调试。
这段程序的目的是 在头信号后,数数据部分的脉冲数。

程序中的延时须要仔细处理。
调试时注意那几个延时比较的大小。

; /*********************************************************************/
; // jieshou_zxcg.c
; // 遥控发射器
; // PJC 2008.11.22
; /*********************************************************************/
; //使用AT89C51单片机,12MHZ晶振,

b_IRIO EQU P3.2
c_COUNT EQU 30H

_DELAY_100US: ;{
PUSH 0

MOV R0,#48H
DJNZ R0, $

POP 0
RET
;}
_DELAYMS: ;{
LCALL _DELAY_100US
DJNZ 0E0H, _DELAYMS ; 0E0H (A)
RET ;}

_IR_RECEIVE: ;{
PUSH 0

SETB b_IRIO

MOV R0,#0

JB b_IRIO, $
_HEAD:
JB b_IRIO, _HEAD_USE
LCALL _DELAY_100US
INC R0
AJMP _HEAD
_HEAD_USE:
CLR C
MOV A,#65
SUBB A,R0
MOV R0,#0
JNC _4P5MS_TEST

POP 0
RET

_4P5MS_TEST:
JNB b_IRIO, _4P5_USE
LCALL _DELAY_100US
INC R0
AJMP _4P5MS_TEST
_4P5_USE: ;IF < 30
CLR C
MOV A,#30
SUBB A,R0
JNC _4P5_USE1

POP 0
RET
_4P5_USE1: ; IF > 70
CLR C
MOV A,#70
SUBB A,R0
JC _DATA0

POP 0
RET

_DATA0:
MOV c_COUNT,#0
_DATA:
JNB b_IRIO,$
MOV R0,#0
INC c_COUNT

_DATA_LONG:
JNB b_IRIO, _DATA_USE
LCALL _DELAY_100US
INC R0
AJMP _DATA_LONG
_DATA_USE:
CLR C
MOV A,#20
SUBB A,R0
JNC _DATA

MOV A,#80
LCALL _DELAYMS

POP 0
RET
;}

_MAIN: ;{
MOV P0,#0FFH
_MAIN_LOOP:
LCALL _IR_RECEIVE
MOV DPTR,#_TAB
MOV A, c_COUNT
MOVC A,@A+DPTR
MOV P2,A
AJMP _MAIN_LOOP

;}
_TAB:
DB 0c0H,0f9H,0a4H,0b0H,099H,092H,082H,0f8H,080H,090H
END

就这样变...

"变"


这段C语言程序能够正常把输入复制输出,输入 EOF 确停止不了程序,求帮...
EOF=-1 意思是文件结束(是End Of File的英文缩写)VC中应该输入,ctrl + Z,显示为^Z一遍不行,两遍就可以了,按住Ctrl键输入Z 如果已经输入回车了(已经输入一行了,只需要输入一个 ^Z ,否则第一个会当作回车处理,必须在输入一次 ^Z )...

帮我编个简单的C语言程序(改错)
1要改成1.0,180要改成180.0,不然算出来的是0.000000,注意是否是相同类型的数

请个高手帮我写一小段C语言程序
int main(){ int gdriver, gmode;gdriver=DETECT;initgraph(&gdriver, &gmode, "");setcolor(BLUE);settextstyle(1, 0, 8);outtextxy(213, 160, "The Book Manage System");getch();closegraph();} 我运行过的 绝对正确 顺便告诉你一些画图的函数 进入了图形模式后我们就可以用图形函数...

求大神帮我写下这个C语言程序 把源代码回复给我 谢谢了!
\/* determine the amount of the change change = (paid - check) * 100;determine the number of dollars in the change dollars = change \/ 100;…(1). Using the previous statements as a starting point, write a C program that calculates the number of dollar bills(100 cents), ...

谁帮我讲一下这段IAR的c语言程序,200分重谢!
4-ADC12应有例程 \/\/ \/\/MSP430F149 ADC12模块+串行通讯的实验程序 \/\/使用ADC12采集实验,将采集到数据送向PC.(单路单次采集)\/\/P3.4为发送,P3.5为接收 晶体使32768HZ\/8MHZ. 串行波特率B\/S \/\/使用SMCLK作为波特率发器时,不能使用LPM2,LPM3!\/\/以下程序已验证通过,初学者可直接使用.由时间仓促和...

我有一段C语言程序,拜求哪位大神能帮我注释一下?小学生50以内,随机10...
sscanf(inputInfo.c_str() , "%d" , &ans) ;\/\/接收的字符串转换成整形 if(ans == res) {\/\/成功答对了 cout << outInfo[6] ;\/\/输出成功 score += scoreGet[tryTime] ;\/\/通过次数获得分 scoreEveryProblem[problemNumber - 1] = scoreGet[tryTime] ;\/\/这道题得分 break ;} else ...

谁能帮我解一下这道c语言程序题
n+=a++;return n;} main:a=3;s=f(a); \/* 进入函数f() *\/ f(a) 进入int f(n):n=3;a=1;n+=a++; \/* 这里先n = n(3)+a,即n=3+1=4,之后a++,即a=2 *\/ return n; \/* 将n的值返回到main中 *\/ s=f(a)=(return n)=4;s=s+f(a); \/* s = s(4)+f(a...

帮我看看我的这段简单C语言哪里出错了(只有五行很简单)问题傻钱多速...
include<stdio.h>main(){ printf("请输入一遍大写字母\\n"); char a=getchar(); putchar(a-1); putchar(a); putchar(a+1);} 应该是你的printf 函数后面的分号 写错了。

大家帮忙看看我的这段C语言程序在keil C51里为什么不能通过编译 高分...
void count(void) interrupt 0 using 0 { Delay(10);if(INT0==1) goto end00;Pass++;if(Pass==100) Pass=0;end00: ; 只要在这里加上冒号,就可以通过编译。} 你的错误提示,是说你的"REG51.H"文件内容有错误,而且不少。如果想省事,可以把这个文件删除,再重新安装KEIL,即可解...

哪位C语言的大神能帮我把下面的这段访问网页接口代码改成C语言的。
你发个http 的 get 就可以获取到网页内容, windows 下借助 WinInet API, linux 下调用wget

璧山县15776432833: 有谁知道怎么可以把c语言转换成汇编语言程序的 -
进以香砂: 写好c以后,使用编译器可以把c变成汇编.具体设置或者操作的话,需要看你使用的是哪个c环境了.gcc -S

璧山县15776432833: 怎样将C语言编译成汇编 -
进以香砂: 1. 编译完了,反汇编.2. 你自己学汇编语言,把实现改成汇编,算法可能要调整. 3. 有一个在线编译器,可以直接编译成汇编: 很好用.

璧山县15776432833: 帮我把c语言转成汇编语言 -
进以香砂: int zhh_strcmp(const char *src, const char * dest) { int result=0; //定义临时变量用于保存返回结果 __asm //内联汇编开始 { mov esi,src //将源字符串放入ds:esi mov edi,dest //将目标字符串放入es:edi START: //开始 lodsb //将ds:esi的第一个字节装...

璧山县15776432833: 刚刚自学汇编语言,希望有那位大神能过帮我把下面这段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",...

璧山县15776432833: 求高手将以下C语言改成汇编语言,急需谢谢 -
进以香砂: .CODE MOV AX,@DPTR MOV DX,AX SETB C MOV A,R7 SUBB A,#0x00 MOV A,R6 SUBB A,#0x00 JC C:00AC MOV R5,#0x7D MOV R4,#0x00 MOV A,R5 DEC R5 JNZ C:00A1 DEC R4 MOV A,R5 ORL A,R4 JNZ C:009C MOV A,R7 DEC R7 ...

璧山县15776432833: C语言转换成汇编语言? -
进以香砂: win-tc可以将C代码编译为汇编代码. 在“运行”,“编译配置”里选取中编译目标为汇编文件. 另外,将其它语言编译为汇编代码不叫“反汇编”.

璧山县15776432833: 怎么把c语言转换成汇编语言啊 -
进以香砂: 写好一个正确的C程序后,按F10去单步调试,最后会看到汇编的代码

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

璧山县15776432833: 找人帮忙把单片机的C语言转换成单片机的汇编语言,程序如下 谢谢了 急用啊.. -
进以香砂: 你将程序导入到KEILC里面,编译完成后,进入DEBUG模式,调出disassembly windows窗口(在view菜单),就可以显示汇编语言了.

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

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