DREACYOU
DREACYOU
一般不作自我介绍
关注数: 34
粉丝数: 158
发帖数: 9,297
关注贴吧数: 0
收坏的 NC2600 有出的朋友留言
文曲星 INT中断实现分析 文曲星大量使用了INT中断来实现系统调用,但6502并没有INT指令。 文曲星的INT指令的指令码是0x00,这是BRK指令的指令码,INT指令长度是3个字节,一个操作码+2字节绝对地址码,而BRK指令是隐含寻址,指令长度是1字节。 6502只有3个中断向量,一个是RESET,一个是IRQ,一个是NMI,BRK指令触发的IRQ中断,W65C02会给标志寄存器bit4、bit2置1,bit3置0,R65C02则没有标示给bit3置0,因为IRQ和NMI中断服务程序都是通过RTI返回的,此时的PC+1->S,而INT指令长度是3字节,所以需要在中断服务程序里把PC出栈+2再入栈,需要弄清楚,IRQ产生是,硬件将哪些寄存器按什么顺序入栈,然后再获取栈顶指针,将指向PC在栈中的值取出,+2->S 但是JSR只支持绝对寻址,即,地址必须跟在JSR后面,所以不可能在中断服务程序中,使用JSR去实现系统调用,但可以用JMP去跳转到系统调用的入口,然后直接在系统调用程序执行完之后直接RTI,另外一种方式就是把系统调用整个程序搬到SRAM上固定的地址,这样就能在中断服务中直接JSR,然后在中断服务中RTI。 要区分是哪种方式实现INT的,只需要找到对应系统调用真正的入口,然后JSR一下这段程序,如果出错,就是JMP实现的,如果能够正常运行,就是搬运实现的。
无线遥控踩的坑 最开始就特别简单的设想,用超声波获取水箱的水位,然后根据水位和时间来自动遥控水泵的开关,某宝有成套的系统,要一百多 但是,我的水泵已经加装了遥控开关,抽屉的uno3也该发挥它的用途了。 最开始的设想是用uno3来模拟遥控码,在外围做一个发射电路,用太阳能+锂电供电
以德报怨,何以报德 一楼御赐免死金牌
电子竞技-一场智力的比拼
论从0开始写一个mud游戏 很久之前,就有一种想写个贪吃蛇之类的小demo,奈何有空想毛得技术,翻遍c语言教材所有章节也不知从何入手。 当然也想过我大copy法,肯定也下过别人的code,你敢相信我看得懂,我这种智商不适合看别人的代码 前阵子想搞一下图形库的,奈何配置不好环境,我觉得我还是放弃gui吧,老老实实搞黑黑的cmd就好了
开个贴 手撸FAT32文件系统 warning:随时烂尾断更
有老哥做过tf卡的初始化咩 调了一整天都不通,可耻的伸手中
小老弟请不要挖我坟,我来讲讲黑客 立个flag先
有没想练手的同学,帮忙做一个文件操作的测试 如题,我提供文件和测试的函数,可能需要另外写一个测试,在函数里做也行。
来个大神 有做过返回值是字符串的函数的大神没有? 除了将字符串指针放进函参之外,还有其他办法没有? unsigned char oxchar[5]; unsigned char mast[]={ '0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f' }; void hex(unsigned char c) { oxchar[0] = '0'; oxchar[1] = 'x'; oxchar[2] = mast[c>>4]; oxchar[3] = mast[c&0xf]; oxchar[4] = '\0'; }
冒泡排序都写不出了,吓尿 int swap(int *x, int *y, int model) { int temp; if(((*x > *y)&&model)||((*x < *y)&&!model)) { temp = *x; *x = *y; *y = temp; return 1; } return 0; }
1
下一页