Questions tagged «assembly»

这是与正在编程的机器的指令集相对应的底层编程语言。

6
我的PIC16多任务RTOS内核不工作的原因是什么?
我正在尝试为PIC x16微控制器创建一个半抢占式(协作式)RTOS。在我之前的问题中,我了解到在这些内核中无法访问硬件堆栈指针。我在PIClist中查看了此页面,这就是我正在尝试使用C实现的页面。 我的编译器是Microchip XC8,当前正在使用在配置位中选择了4MHz内部RC振荡器的PIC16F616。 我了解到,可以通过查看编译器的头文件来使用C访问PCLATH和PCL寄存器。因此,我尝试实现一个简单的任务切换器。 如果我在重新启动,重置并在光标不在第一行(TRISA=0;)而不是另一行(例如ANSEL=0;)上时将调试器设置为光标后暂停调试器,则它可以在调试器中正常工作。在调试器的第一次启动中,我在以下位置获得这些消息Debugger Console: Launching Programming target User program running No source code lines were found at current PC 0x204 编辑:我不知道是什么使它起作用,但是调试器现在可以完美地工作了。因此,省略上面的输出和段落。 编辑:更改这样的主要定义使下面的代码工作。这将在程序地址处启动主要功能0x0099。我不知道是什么原因造成的。这不是一个真正的解决方案。我现在猜测存在编译器特定的错误。 void main(void) @ 0x0099 { 这是我的C代码: /* * File: main.c * Author: abdullah * * Created on 10 Haziran 2012 Pazar, 14:43 */ #include <xc.h> …

3
微编程与机器语言编程
我在微编程级别与机器语言级别之间有些困惑。例如: 两种程序在执行时都驻留在哪里? 两者都没有1:1映射到汇编语言真实操作指令吗? 两者的格式是否由处理器体系结构定义?

2
需要一些帮助来了解PIC内存映射
一些背景。我将MPLABx与PicKit2结合使用来对不同类型的图片进行编程。目前是16F887。我尝试坚持使用高科技PICC Lite工具链,但对某些组件的组装方式越来越不满意。相对较快的操作(考虑8Mhz的500ns指令周期)最多需要20us才能完成。因此,我开始插入自己的ASM代码来处理它。 但是,我很难理解第20页的数据表中提供的内存映射。 程序存储器从0005h开始。但是,第23页显示了专用寄存器的文件地址,例如端口A。端口A的地址显示为“ 05h”。 我很困惑如何区分存储位置0005h和位于05h的专用寄存器。如何引用专用寄存器? 我已经为较旧的HC11芯片完成了相当广泛的汇编程序编程,但这是我第一次涉足PIC asm编码。在这里的任何帮助,将不胜感激。

6
微处理器和微处理器之间的编程差异?
因此,在对微处理器进行汇编编程时,我经常会看到书籍/教程和参考资料……然后,我看到一些人将其称为微控制器。 例如Atmel ATtiny2313 ....我看到了一些教程,有人称它为微处理器,有人称其为微控制器? 哪有 并且对它们进行编程(基本上)是否相同?(在组装中)

3
读取端口和PIN的区别
读PORTA和PINA有什么区别?端口与其引脚之间的关系是什么?我真的很困惑!!! 读取端口的示例:(读取引脚在这里没有用) 装配f = 1MHZ ATmega8我需要每1ms对PORTB进行一次补充(占空比= 50%) LDI R16,$FF OUT DDRB,R16 MAIN: LDI R16,00 DELAY:CPI R16,200 BREQ LOOP INC R16 RJMP DELAY loop:IN R17,PORTB COM R17 OUT PORTB,R17 OUT R17,PORTB RJMP MAIN

5
为什么没有以更简单的方式编写此代码?
在使用汇编语言时,我遇到了一个问题。这是问题: 假设位P2.2用于控制室外光,位P2.5用于控制建筑物内的光。展示如何打开外部灯和关闭内部灯。 给出的解决方案: SETB C ; CY = 1 ORL C, P2.2 ; CY = P2.2 ORed w/ CY MOV P2.2, C ; turn it on if not on CLR C ; CY = 0 ANL C, P2.5 ; CY = P2.5 ANDed w/P2.5 MOV P2.5,C ; turn it off …

3
业余爱好者的ARM设置可以像此AVR一样简单吗?
我喜欢Atmel AVR设置对于业余爱好者汇编语言编程的简单性。例如: 将普通的ATmega DIP芯片{A}放在面包板上 将6针连接到连接到计算机(例如)的USB编程器{B}。(在写入和正常操作期间,芯片都通过此连接的一部分供电)。 使用任何文本编辑器编写汇编语言程序。 使用Avra {C}汇编程序 使用avrdude {D}将程序写入芯片 ARM世界是从根本上讲是更高层次/更复杂的世界,还是可以告诉我等效于{A} {B} {C}和{D}的类似设置的等效条件?仅限Windows的所有内容与我无关。 谢谢。 注意:简单设置的动机是汇编编程,我想完全避开编译器和IDE。
8 avr  arm  assembly  avrdude 

1
虽然优化了循环
我的微控制器程序中有以下代码: // Wait for ADC conversion to complete while ( ( ADCSRA && _BS( ADSC ) ) == _BS( ADSC ) ) {} ADCSRA是一个寄存器,它将在模拟转换完成后更改其值,而我想等一下。该位指示转换完成。 查看生成的汇编代码,将整个循环替换为一条指令: in r24, 0x06 ; ADCSRA 读取了该寄存器,但尚未测试其值! 如何更改C ++代码以指示编译器继续重新检查寄存器,而又不会不必要地延迟程序? 我使用avr-gcc工具链。 编辑: 我更改了代码,如下所示(Thnx:lhballoti): while ( ( ADCSRA & _BS( ADSC ) ) == _BS( ADSC ) ) …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.