今天是何教授的第七节课;
在MCS-251 ISA中,字和双字以大端形式保存在内存和寄存器文件中:
MCS-251的ISA兼容了MCS-51的ISA,也就是说在MCS-251的ISA中包含了全部MCS-51 ISA的指令;
、
一条机器指令包含两部分,即:操作码和操作数。
在单片机中,将CPU寻找操作对象(操作数)所在存储位置的方式,称为寻址模式;
MCS-251的ISA支持以下寻址模式(区分源和目的):
寄存器寻址:指令中包含操作数的寄存器;
立即寻址:指令中包含操作数;
直接寻址:指令中包含操作数地址;
间接寻址:指令中包含操作数地址的寄存器;
位移寻址:指令指定一个寄存器和一个偏移量,操作数地址是寄存器内容(基地址)和偏移量之和;
相对寻址:指令包含从下一条指令到目标地址(控制转移的地址,例如跳转地址)的带符号偏移量;
位寻址:指令中包含位地址。
ADD指令:
CY:如果相加结果第7位有进位,则将进位标志位CY设置为“1”;
AC:如果与字节变量相加,且相加结果的第3位有进位,则将标志位的AC设置为“1”(注:AC只对8位数据的相加运算有效);
之后,陈教授还仔细讲解了每一个加法减法等运算指令的原理,内容太多,我就不再赘述一遍了;
(红框中的,在SOURCE模式下不需要添加A5前缀,在BINARY模式下则需要A5前缀)
今天听课时因为下雨停电多次,之后会好好观看回放的。
本次课程讲解的内容衔接上节课,主要介绍了逻辑指令:
包括逻辑“或”,逻辑“异或”,移位指令,半字交换指令。
其中,数据传输指令包括:通用传输(MOV)、代码空间数据传输指令(MOVC)、外部数据储存器传输指令(MOVX)、
堆栈操作指令包括了:压栈(push)、出栈(pop)。
数据交换指令(XCHD)。
位指令包括了:清除指令(CLR)、置位指令(SETB)、取反指令(CPL)、逻辑与指令(ANL)、逻辑或指令(ORL)、传输指令(MOV)。
本次课程接续上次,继续讲解控制指令。
首先是返回指令:
RET:从子程序中返回、不影响标志位:
ERET:实现扩展的返回、不影响标志位。
无条件跳转指令:
AJMP addr11(*):绝对跳转、目标地址必须与AJMP之后指令的第一个字节位于程序储存器的同一个2kb“页面”内;
EJMP:扩展跳转、目标地址可以在整个16mb内存空间中的任意位置、不影响标志位;
LJMP:长跳转、目标可以在真个64kb的程序储存器的任意地址、不影响标志位;
SJMP:短跳转,控制程序无条件地跳转到制定地址、不影响标志位、该指令执行的操作和机器指令格式;
JMP:间接跳转、累加器A的内容和数据指针不受影响、不影响标志位。
进位标志CY控制的跳转指令:
JC rel(*):如果设置进位标志CY,则跳转、不改变标志位;
JNC rel(*):未设置CY标志位,则跳转、不影响标志位;
JB
JNB
JBC
有关累加器的跳转指令:
JZ:累加器A内容为零时,则跳转、不修改累加器内容且不影响标志位。
由Z标志位控制的跳转指令:
JE:若相等,则跳转。
由Z和CY标志位控制的跳转指令:
JG:若大于,则跳转;
JLE:若小于或等于,则跳转。
由标志N和OV控制的跳转指令:
JSL:若小于,则跳转(带符号);
JSGE:若大于等于,则跳转(带符号)。
标志位N、OV和CY控制的跳转指令:
JSLE:若小于等于,则跳转(带符号);
JSG :若大于,则跳转(带符号)。
比较跳转指令:
CJNE
所谓的汇编语言程序就是按照一定的规则组合在一起机器语言助记符和汇编器助记符命令。
课堂之初,何教授讲解了汇编语言程序框架。
页:
1
[2]