有人可以解释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)
解释正确吗?
我对该清单不太了解,但说明如下:
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的数据表可能会很好。
| 归档时间: |
|
| 查看次数: |
752 次 |
| 最近记录: |