标题: 这个C语言语句怎么转成汇编,请高手帮解答下。 [打印本页]

作者: meqqme    时间: 2020-3-14 11:18
标题: 这个C语言语句怎么转成汇编,请高手帮解答下。
while((p3.6=0)&&((time++)<500))          这个while停在这里判断 两个条件    ,  汇编中如果jnb p3.6 $这个就停在这里了,没办法加时间判断。(C中也没有用到定时器)    谢谢。
作者: meqqme    时间: 2020-3-14 11:18
while((p3.6==0)&&((time++)<500))
作者: Y_G_G    时间: 2020-3-14 15:30
只要你的程序可以正常编译,在KEIL仿真一下,会有相应的汇编代码给你看的
作者: meqqme    时间: 2020-3-14 20:39
Y_G_G 发表于 2020-3-14 15:30
只要你的程序可以正常编译,在KEIL仿真一下,会有相应的汇编代码给你看的

好的  试一下看看 谢谢
作者: meqqme    时间: 2020-3-17 12:20
Y_G_G 发表于 2020-3-14 15:30
只要你的程序可以正常编译,在KEIL仿真一下,会有相应的汇编代码给你看的

请大神帮再看下  这个还是看不懂应该怎么写

999999999999.jpg (127.36 KB, 下载次数: 110)

999999999999.jpg

作者: meqqme    时间: 2020-3-17 12:22
请大神帮再看下 还是看不懂这个怎么转的  关键是走不到那个11的位置

999999999999.jpg (127.36 KB, 下载次数: 80)

999999999999.jpg

作者: Y_G_G    时间: 2020-3-17 13:55
这样我看不明白,你把C文件上传,我试一下
作者: 黎明初至    时间: 2020-3-17 15:08
比较90.0(应该是p3.6引脚不为0)跳转到00B3行,即下面3行处,不进行time清零操作
作者: meqqme    时间: 2020-3-18 13:26
Y_G_G 发表于 2020-3-17 13:55
这样我看不明白,你把C文件上传,我试一下

你好帮看下谢谢
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uint v=0,time=0;
sbit key=P1^0;
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
time++;
if((key==0)&&(time>40));  //如果按键时间超过2秒且键未释放,变量+1
if(key==1)time=0;    //如果键释放,时间复位
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
while(1);
}

作者: meqqme    时间: 2020-3-18 13:35
因为C每个人的写法不一样(自己感觉看起来没有汇编的好,具有统一性)  所以想学汇编。 而被这个卡住了 没有明白是这个语句用汇编是怎么写的 所以请教大神帮解答下。
作者: Y_G_G    时间: 2020-3-18 21:05
time++;
if((key==0)&&(time>40));  //如果按键时间超过2秒且键未释放,变量+1
if(key==1)time=0;    //如果键释放,时间复位

你这个是进入中断之后,变量就先+1
后一个语句没有作用,条件成不成立都是执行下一条语句的

不要在函数外面声明变量,这样编译器会生成一大堆无用的汇编代码出来的
作者: meqqme    时间: 2020-3-19 12:03
Y_G_G 发表于 2020-3-18 21:05
time++;
if((key==0)&&(time>40));  //如果按键时间超过2秒且键未释放,变量+1
if(key==1)time=0;    // ...

你好  搞明白了,重新弄了一个  看清楚思路了 。  谢谢




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1