2020微机原理学习第二讲
1、8086/8088指令系统
(1)数据传送指令
一般格式:MOV A,B;
功能:CPU把一个字或一个字节的内容从B(源操作数)传送至A(目的操作数)
注意:目的操作数不能为立即数;(立即数是编码在处理器指令代码中的,而处理器指令代码执行时通常禁止修改。所以结果无法存在指令代码中)
目的操作数为段寄存器时(CS不能为目的操作数),源操作数不能为立即数;(因为段寄存器无法直接读取,需要通过通用寄存器间接读取)
两操作数不能同时为存储器操作数;如:MOV [BX],[SI];这个是不可以的。(因为在指令代码中需要两个指明存储器地址的字段,通常会大大增加指令代码的长度,还会增加指令代码解码的难度和电路复杂性)
操作数类型(长度)必须一致。如:MOV AL,[SI];其中AL是8位的,只能传8位数据的内容
(2)入栈与出栈指令
进栈(PUSH):先移后进。
出栈(POP ):先出后移。
(3)条件转移指令
值得注意的是,J 表示跳转,N 表示为0(不加则表示不为0),O、S、Z、E、C均表示标志寄存器的意思(如:S表示最高位/符号位)
(4)循环控制指令
LOOP OPRD;
执行的操作包括:(1)CX=CX-1;(2)若CX不为0,则循环。
(5)加法指令
ADD A,B 不带进位的加法指令;
ADC A,B 带进位的加法指令;
区别:ADD进行运算时,运算结果不带上进位;ADC进行运算时带上进位。
注意:若最高位存在进位,若何将最高位表示出来可用如下方法
MOV AH,0
...
ADC AH,0 ;然后再将进位存放入指定地址单元
(6)伪指令
ASSUME 段寄存器:段名
作用:用来通知汇编程序,哪一个寄存器是哪段的段寄存器,以便对源程序中使用变量或标号的指令汇编出正确的目标代码。
未完待定~