比较复杂:
第七集到此结束
今天开始学习第八课
第八集 汇编指令一
其实我个人很认可陈老师的理念,教材和上课都不能太难
结合自己的职业体会,汇编这样的课程,没有实验缓冲,纯理论,就是浪费学生的时间
现在唯一的麻烦是我手头有STC32G12K128和Ai8051U的试验箱,但是没有STC8H8K64U的试验箱
不知道用STC32G12K128的试验箱,能否顶替STC8H8K64U的试验箱?
今天学习C语言里的=,如何在汇编实现?
1.传送指令——MOV
具体理解小心看陈老师的解释:
马上举个例子:
我们建立个新项目:
主程序如下:
$NOMOD51
$include (../../COMM-AI8051U/AI8051U.INC)
Fosc_KHZ EQU 24000 ;24000KHZ
ORG 0000H
LJMP MAIN;跳转到主程序;
ORG 0100H ;定义起始存储器位置
MAIN:
MOV SP, #70H;对堆栈指针赋值
MOV R0,#60H ;将立即数60H送到寄存器R0中
MOV @R0, #56H ;将立即数56H送入到R0间接寻址的单元中,
;执行后60H单元的内容变为56H
LOOP:
LJMP LOOP
END
重点看这2句:
MOV R0,#60H ;将立即数60H送到寄存器R0中
MOV @R0, #56H ;将立即数56H送入到R0间接寻址的单元中,
;执行后60H单元的内容变为56H
我们去Keil 的调试Debug 去看看:
进入Debug:
先在Memory1存储器观察窗口,先输入个D:0
是什么意思?意思是我们要看内部RAM的内容,:0的意思是从地址00H开始看,我们要求从0号单元开始显示出来
一开始都是0:
当然最好拖动,调整一下存储器窗口,让他显示的是整数00 102030 .....
参见下图:
就是让每行刚好是16个数据
我们单步,按F11
SP马上随指令变化:
继续往下执行一步,看看工作寄存器R0 变化否?
执行前的R0: