LDA / ROL / STA-说明说明

Mar*_*vac 2 6502

有人可以解释LDA,ROL,STA每条指令给出的结果到底是什么?

C=1 (carry flag is 1)

LDA A #$08 0008 | 01
ROL A      0009 | 02
STA A $10  000A | 03  // A result is $11
           000B | 04
           000C | 05
Run Code Online (Sandbox Code Playgroud)

我想到这个:

LDA A #$08 0008   - Store 0000 into memory
ROL A      0009   - Get a data 0x08 from accumulator 0000 0100 add carry +1 = 0000 1011
STA A $10  000A   - get a result 0000 1011 = $11
Run Code Online (Sandbox Code Playgroud)

解释正确吗?

Tom*_*don 5

我对该清单不太了解,但说明如下:

LDA #$08 将$ 08装入累加器,根据装入的值设置N和Z标志。

ROL A将累加器向左旋转1位,将旧进位标志放入位0,将旧位7进入进位标志。左移1位的$ 08为$ 10,由于进位标志为1,结束值为$ 11。(N和Z标志也根据新结果设置。)

STA $10将累加器的值存储到地址为$ 10的存储器中,而累加器保持不变。这些标志不受影响。

(这不是平常喜欢写东西LDA A #$08-是一个涉及的是从助记符,LDA做空闻名的事实大号 OA d 一个。ccumulator ROL A,在另一方面,是这样写的是因为ROL,还可以访问内存中的6502汇编语言语法就现代标准而言并不太一致。)

6502.org有一些很好的参考资料-例如,http ://www.6502.org/tutorials/ 。如果您已经在其他系统上完成了汇编语言编程,那么直接阅读https://en.wikipedia.org/wiki/MOS_Technology_6502#Further_reading的数据表可能会很好。