历史上的今天
返回首页

历史上的今天

今天是:2024年11月15日(星期五)

正在发生

2019年11月15日 | PIC的35条指令扭曲理解法

2019-11-15 来源:51hei

以下理解纯属恶搞,例子使用搜狗输入法输入,全角还是半角的懒得理了!


第一条当然是NOP,
NOP 垃圾指令
操作数:垃圾当然不用说最好是没有的就好!
指令编码:00 0000 0xx0 0000   这个全是0啦,还要xx
执行时间:清理垃圾也要一个指令的
执行过程:扫垃圾,除了清理外其他什么都没变
状态标志:垃圾当然无视
说明:这个垃圾除了用来浪费时间外什么也实现不了,一般用来延时
指令例子:   

BSF         PORTB,0      ;   PORTB  端口0输出高电平
NOP                      ;丢个垃圾浪费下时间让IO输出稳定

第二条应该是MOVWF

MOVWF  拆开 解释一下先,
MOV就是寄存器缩写的意思,
W就是一个叫W的SB老爸给它起的名字,
F==??发(fa的缩写?),发送或者传送的意思,
整个串起来就是把W寄存器里面的数传到数据寄存器。

语法形式:MOVWF     f
操作数:f是数据寄存器的低7位地址(0x00-0x7f)
指令编码:00 0000 1fff ffff  (要反反复复)

执行时间:一个指令周期

执行过程:把W那个SB的数传送到数据寄存器 里面,W那个SB是不会变的
状态标志影响:无
说明:一般是给数据寄存器赋值(给别人做嫁妆啦)
指令例子:     

MOVLW    0x55    ;W那个SB在吃饭 
MOVWF    Data    ;W那个SB给人家添饭

             ;Data = 0x55  

第三条   MOVF   寄存器发送
把数据寄存器的数传到目的寄存器
语法形式:MOVF    f,d
操作数:        f是数据寄存器的低7位地址(0x00-0x7f)
            d=w,这d真虚伪,把W添的饭又退回去了!
         d=f,这d真坏,把饭又拿回来,还看看碗里的饭是不是没了!
指令编码:    00 1000 dfff ffff (是人都讨厌的d竟然还要定了得反反复复)
执行时间:    一个指令周期  (还好只用了一个,要不然跑不了非得被人家敲死)
执行过程;     [f] -d  (连数据寄存器都要给d给恶搞了)
状态标志影响:  Z      (搞成这样子要是Z还没被影响的绝对是个SB)
说明:    这个指令通过W寄存器把数据寄存器的数传到别的地方,或者对数据寄存器判0操作,如果发现是0就会把标志Z置位。(这家伙够坏的吧,先把W那个SB当跳板把数据寄存器的饭搞到别的地方去,还要看看碗里是否有饭,没饭的话就大呼小叫的!)
指令例子:   

例1    ;数据传送
MOVF    Var1,w    ;Var1把饭添给W那个SB
MOVWF   Var2      ;W那个SB只能当传饭的传送给Var2
              ;Var2 = Var1 (不用说这碗饭是不变的)
例2    ;数据判0(看看这个饭碗里面有没有饭)
MOVF    Var3,f     ;Var3的数被传送给自身(Var3添完饭后给自己)
BTFSC    STATUS,Z   ;如果Var3不等于0就会跳到下一指令(自己给自己添饭就这样的)
GOTO    Var3Zero    ;如果Var3等于0就转做相关操作(自己添不到饭肯定要干别的了)


第四条 CLRW  W寄存器的数清0(W这个SB的饭被抢了)
CLR就是清除的缩写,W。。。。。。这个SB又被搞了。。。。。。无语中
语法形式:   CLRW
操作数:    无(饭都被抢了还吃个毛啊)
指令编码:   00 0001 0000 0011 (被抢了还幺幺的叫)
执行时间:   一个指令周期(抢的速度也不慢啊)
执行过程:   0x00 - W  (饭就这样被抢了)
       1 - W  (要是不叫才怪了)
状态标志影响:Z              (W叫得也不小,把Z给惊动了)
说明:该指令对W寄存器清0,同时置位0标志Z,另外有一条指令movlw 0x00也可以使W寄存器清0,但不影响任何状态。(看来W的饭被抢也要看看谁抢的,l去抢的话连声都不干吭一声)


指令例子:CLRW  ;W=0(W的饭没了)

第五条 CLRF  数据寄存器的数清0 (看来连传送过程也会被抢)
语法形式:CLRF    f
操作数:f是数据寄存器的低7位地址(0x00-0x7f)指令编码:    00 0001 1fff ffff  (叫了两下就拂拂裤子就走了)
执行时间:一个指令周期 (抢的速度)
执行过程:

0x00 - f        (f被抢,还叫两声)
1 - Z    (结果还是把Z惊动)


状态标志影响:Z  (还是这个家伙被惊动)
说明:该指令对数据寄存器清0,同时置位0标志Z(f在传送过程中被抢,同时Z被惊动)
指令例子:CLRF TRISB ;端口B的所有I/O引脚设为输出模式(因为饭在传送中被抢了,结果全部挨饿)

第六条 ADDWF 数据寄存器的数和W寄存器相加
(传送中的饭和W的饭不满要求服务员加饭)
语法形式:ADDWF    f,d    (这次被搞的是f和d)
操作数:        

f是数据寄存器的低7位地址(0x00-0x7f)
d=f,结果放在数据寄存器内,W的数不变(饭加进f的碗里,W碗里的饭没变)
d=w,结果放在W寄存器里,数据寄存器的数不变(饭加进W碗里去了,f碗里不变)


指令编码:00 0111 dfff ffff  (都是叫饭的)
执行时间:一个指令周期(加饭的效率也够快的)
执行过程:[f] + [W] -d
状态标志影响:Z  DC  C (加饭要求惊动了睡觉的家伙和服务员还有煮饭的家伙)
说明:数据寄存器的数和W寄存器相加,结果按照d指定的目的地存数
(送饭的和W要求加饭,结果按照d指定放在哪个碗里面)
指令例子:    

MOVLW 0x55 ;W=0x55,假定 Sum=0xaa(W碗里有小半碗饭,假定sun碗里有大半碗)  
ADDWF Sum,f   ;W不变,Sum=0xff(W碗里没加成,Sum加满了) 

推荐阅读

史海拾趣

ECLIPTEK公司的发展小趣事

随着全球对环保问题的日益关注,ECLIPTEK公司积极响应环保号召,将绿色环保理念融入其产品研发和生产过程中。公司采用环保材料和清洁能源,减少生产过程中的废弃物和污染物排放。同时,ECLIPTEK还积极参与环保公益活动,推动电子行业的可持续发展。

恒连电子(EVERCOM)公司的发展小趣事

随着公司实力的不断增强,恒连电子开始积极拓展国内外市场。在国内市场,公司通过与各大电商平台合作,加大品牌宣传力度,提高产品的知名度和美誉度。同时,公司还积极参与各类行业展会和论坛活动,与同行交流学习,提升公司的行业影响力。在国际市场方面,恒连电子通过与国外知名企业的合作,引进先进的技术和管理经验,提升公司的国际化水平。此外,公司还积极开拓海外市场,将产品出口到多个国家和地区。

Eastron Corp公司的发展小趣事

在电子产品同质化日益严重的今天,Eastron Corp深知品质对于品牌的重要性。公司严格把控产品质量,从原材料采购到生产过程,再到成品检验,每一个环节都经过严格把关。此外,Eastron还建立了完善的售后服务体系,为客户提供全方位的服务支持。正是凭借出色的品质和服务,Eastron赢得了客户的信赖和口碑。

FETek Technology(东沅)公司的发展小趣事

在快速发展的过程中,东沅始终坚持以客户为中心的经营理念。他们深入了解客户的需求和反馈,不断优化产品和服务。同时,东沅还注重持续创新,不断推出具有领先技术水平和市场竞争力的新产品。这些努力使得东沅在激烈的市场竞争中保持领先地位,赢得了客户的信任和支持。

请注意,以上故事仅为虚构示例,旨在展示FETek Technology(东沅)公司可能的发展历程和里程碑。实际的发展情况可能有所不同,具体细节请以公司官方发布的信息为准。

ANADIGICS公司的发展小趣事

随着业务的不断扩展,东沅开始寻求国际化的发展道路。他们积极参加国际电子展会和技术交流活动,与全球各地的客户和合作伙伴建立了广泛的联系。同时,东沅还加大了对品牌建设的投入,通过广告宣传、媒体合作等方式提升品牌知名度和美誉度。这些努力使得东沅在国际市场上逐渐崭露头角,成为一家备受瞩目的电子企业。

安美通(APPCON)公司的发展小趣事

安美通非常重视企业文化建设和团队建设。公司倡导创新、务实、合作的企业文化,为员工提供了一个宽松、自由、充满激情的工作环境。同时,公司还积极开展各类培训活动,提升员工的专业素养和综合能力。这些措施使得安美通的团队更加团结、高效,为公司的持续发展提供了有力的保障。

这五个故事虽然只是安美通发展过程中的一部分,但它们充分展示了安美通在电子行业中不断努力、创新、拓展的精神和成果。未来,安美通将继续秉承这种精神,不断推动公司的发展和进步。

问答坊 | AI 解惑

关于题C的问题

本帖最后由 paulhyde 于 2014-9-15 09:30 编辑 AD603产生的自激现象严重,当用两级放大时候,第二级放大严重失真,这个是什么原因啊?我们现在在AD603前面加了OPA658做前级跟随器,希望可以减小自激  …

查看全部问答>

发个我用的元件库

这是我平常所用到的元件库…

查看全部问答>

wince 的cab 安装包问题(vs2005)

想做一个cab安装包,安装今日插件,按照网上的说明写了个安装程序setupdll.dll, 但是在模拟器上(pocket pc se 2003 Emulator)安装发现setupdll没有被调用(在函数Install_Exit中加了MessageBox,没有弹出,注册表也没写) cab安装包使用vs2005做的 ...…

查看全部问答>

GPRS连接问题

我用OPEN AT 已经建立完成了GPRS激活部分,但是为什么数据流中什么都收不到,在超级终端里使用ATD*99***1#,可以收到PPP包,如何使用OPEN AT ADL也能收到这些PPP包?请指教一二!我在软件里已经加入了AT命令,但是没有任何反应,到底是什么地方出了 ...…

查看全部问答>

用KernelIoControl获取逻辑中断号失败

我想使用EINTT4作按键中断输入.定义如下: UINT32  g_EINTIrq = IRQ_EINT4; UINT32  g_EINTSysIntr = SYSINTR_UNDEFINED; PUBLIC DWORD CPK_Init(DWORD dwContext) {             &n ...…

查看全部问答>

EVC4.0中窗体最小化问题

想要实现一个最小化功能 使用ShowWindow函数没反应~ 请问各位还有什么其他办法不?…

查看全部问答>

dshow CreateMediaType FreeMediaType 无法解析的外部符号

我在wince6.0上做dshow开发,已经包含的头文件和库 #include #include #include #include #include                                     &n ...…

查看全部问答>

CE6及BSP安装求救!!!!紧急啊

我之前安装开发环境的时候,发现PB中Device Driver中的SD选项没有,后来把Updates全装上了,就出现了SD选项。 前几天系统崩溃了,重新装上所有东西后发现就是SD选项没有,各位有没有遇到过这种情况啊????急 …

查看全部问答>

请教中断问题

我在做关于MPC8260的工作.目前,我想为DMA加入中断处理程序.MPC8260的参考手册中 说,IDMA1的中断号是6,我使用如下函数: intConnect(INUM_TO_IVEC(6),dma_isr,0); 连接中断处理程序与中断源.但是一旦DMA结束,BC中断到来之后,整个EP8260板子就死掉 ...…

查看全部问答>

MCS-51单片机定时器问题

MCS-51单片机中,采用12Mhz时钟,定时器T0采用模式1(16位计数器),请问在下面程序中,p1.0的输出频率 ? MOV TMOD,#01H SETB TR0 LOOP:MOV TH0,#0B1H MOV TL0,#0E0H LOOP1:JNB TF0,LOOP1 CLR TR0 CPL P1.0 SJMP LOOP…

查看全部问答>