微机原理与接口技术复习笔记(3)

2019-03-11 15:54

循环移位指令:ROL、ROR、RCL、RCR。 ROL(Rotate Left):循环左移指令。最高位进入标志位CF并移入最低位,按一个闭环回路进行移位。目的操作数可以是寄存器数或存储器数。格式:ROR dst,CL;CL是移位的位数。 Exp:ROL AL,1 MOV CL,4 ROL AL,CL

循环移位为1位时,若移位后的操作数的最高位不等于标志位CF,则溢出标志OF=1;否则OF=0.用来表示移位前后操作数的符号位是否发生改变(OF=0表示符号位为改变)。

ROR(Rotate Right)循环右移指令,与ROL指令的功能相似,仅移动方向相反,最低位进入标志位CF并移入最高位。

只移1位时,移位后的操作数的最高位与次高位不相等,则溢出标志OF=1;否则OF=0。可由此判断移位前后操作数的符号位是否发生改变。

RCL:带进位的循环左移指令。最高位移入标志位CF,CF移入最低位形成环路。

循环移位为1位时,若移位后的操作数的最高位与标志位CF不相等,则溢出标志OF=1;否则OF=0。可由此判断移位前后操作数的符号位是否发生改变。 RCR:带进位的循环右移指令。最低位移入标志位CF,CF移入最高位。形成环路。

循环移位为1位时,若移位后的操作数的最高位与次高位不相等,则溢出标志CF=1;否则OF=0。可由此判断移位前后操作数的符号位是否发生改变。

串操作指令:是用一条指令实现对一串字符或数据的操作。串是存储器中一系列连续的字或字节,串操作就是针对这些字或字节进行的某种相同的操作。

8086串操作特点:

1) 所有串操作指令都用SI对DS段中的源操作数进行间接寻址,用DI对ES段中的目的操作数进行间接寻址,即目的串和源串地址分别有ES:DI和DS:SI提供。使用前应先设定好SI和DI的初值。 2) 串操作指令执行时自动修改地址指针,地址指针的修改与方向标志DF有关。 3) 若源串和目的串在同一段中,则把数据段基址DS和附加段基址ES设成相同的数字,即DS=ES,仍由SI和DI分别指出源串和目的串的有效地址。 4) 任何一条串操作指令,可在前面加一个“重复前缀”,通过它们来控制串操作指令的重复执行。

5) 串操作指令是唯一的一组源操作数和目的操作数都在存储单元的指令。

重复前缀:REP、REPZ(REPE)、REPNZ(REPNE)。

功能是重复执行紧跟其后的串操作指令,不能单独使用,只能加在串操作指令前用来控制串操作的重复执行,且不影响标志位。

REP:重复前缀(无条件重复)。执行操作时,(CX)=0,退出重复串操作;否则重复串操作。过程如下:

1、 若(CX)=0,退出重复操作REP,否则往下执行; 2、 修改CX,即CX=CX-1;

3、 执行串操作一次,并修改SI、DI,执行第1步。

其中,DF=0,则SI、DI内容自动加1或加2;否则自动减1或2. 用途:用于字串传送MOVS或保存字串STOS指令的的前缀。 REPZ(REPE):相等重复前缀。若执行的操作为(CX)~=0且ZF=1,重复串操作;否则,退出重复操作。 用途:用于比较两个字符串,找出不同的字。REPZ(REPE)与串操作指令CMPS与SCAS配合。表示只有当两数相等时才继续比较;否则可提前结束串操作。 REPNZ(REPNE):不相等重复前缀。执行的操作为(CX)~=0且ZF=1,重复串操作;否则不重复。

用途:在一个字串中,找到需要的字。也可用于比较两个字串,找出相同的字。REPNZ(REPNE)和串操作指令CMPS与SCAS配合。表示只有当两书不相等时才继续比较;否则可提前结束串操作。

串传送指令格式:MOVSB/MOVSW;用于字节/字的传送。 操作:((ES:DI))<—((DS:SI));不影响标志位。

该指令把数据段一SI为有效地址的源串中的字节或字传送到附加段以DI为有效地址的目的串中,同时自动修改SI和DI中的有效地址,使之指向下一个元素。

串比较指令格式:CMPSB/CMPSW;源字节串比较或字串比较。

((ES:EI))<—((DS:SI));6个标志位:AF、ZF、OF、PF、CF、SF反映了目的串与源串的关系。

CMPS指令把由SI指定的数据段中源串的一个字节或字与DI指定的附加段目的串的一个字节或字相减,但不回送结果,只是影响标志位。比较后按照DF的值修改地址指针SI和DI。

SCAS:串扫描指令。格式:SCASB/SCASW;字节串或字串扫描。

操作:把AL/AX的内容减去DI指定的目的串中的一个字节或字数据。不送运算结果,只根据结果影响标志位,并按照DF的值修改DI。用于从一个字串中查找一个与AL或AX中不同的字符,或查找一个相同的字符。 LODS:读取串指令。格式:LODSB/LODSW。

操作:把源串中的一个字节或字的数据送入AL或AX中,同时按照DF标志修改SI。该指令正常情况是不重复操作的,因为每重复一次操作,累加器的内容就会改写,但在软件设计中,该指令是十分有用的。 STOS:存串指令。格式:STOSB/STOSW。

操作:把AL或AX中的一个字节或字的内容送入目的串所在单元,并按照DF的值修改DI。STOS指令常用于初始化某一缓冲区为同一数据。

控制转移类指令:无条件转移指令、条件转移指令、循环控制指令、中断指令。

JMP:无条件转移指令。可实现短、近、远转移,使用方便,包括段内直接转移、段内间接转移、段间直接转移、段间间接转移。

CALL/RET:调用和返回指令。子程序完成功能之后,最后执行的一条指令必

须是返回指令RET,返回地址由执行CALL调用指令时入栈保存的断点值提供。 条件转移指令:满足条件,则转移到指定的目标地址;否则,继续执行该条件转移指令的下一条指令。条件转移分为:单个状态条件转移、无符号条件转移、带符号条件转移3种。

指令格式:JX Target;X代表转移条件,条件成立,则转到标号Target处执行;否则顺序执行;Target是短目标地址。

LOOP、LOOPE/LOOPZ、LOOPNE/LOOPNZ:短目标标号。

第四章:

表达式:由若干操作数和运算符构成的有意义的组合序列。表达式可出现于源程序的任何地方,在汇编过程中可产生确定的值。表达式是常数、寄存器、标号、变量与运算符的组合。

汇编时按优先规则对表达式进行计算,计算出具体数值,在运行时不能改变,而寄存器间接寻址的地址计算则是按照执行指令时寄存器的值先取指后计算的。

运算符:算术运算符、逻辑运算符、关系运算符、分析运算符、合成运算符。 算术运算符:+、-、*、/、取模运算(MOD)。 Exp: MOV AL, 5 MOD 2 ;汇编后为MOV AL,1

‘/’是取商部分,只有整数部分,没有余数;而MOD只是取余数。

逻辑运算符:AND、OR、XOR、NOT。逻辑运算符在两个操作数之间按位进行布尔运算,逻辑表达式只能对常数进行运算,所得结果也是常数。 关系运算符:在两个无符号操作数之间进行大小关系比较,满足关系则返回全1,否则返回全0。包括:相等(EQ)、不相等(NE)、小于(LT)、大于(GT)、小于等于(LE)、大于等于(GE)。运算结果是一个逻辑值,即真或假。 1)关系运算符只能对常数(或相当于常数)进行运算,且为无符号数。 2)关系为真,结果为全1;否则为全0。

分析运算符:SEG、OFFSET、TYPE、LENGTH、SIZE。 SEG:取变量或标号的段地址。 OFFSET:取变量或标号偏移地址。

TYPE:取变量的类型,对于变量类型返回值可以是1(字节)、2(字)、4(双字)、6(三字)、8(四字)、10(五字);对于标号类型,返回值可以是-1(NEAR)或-2(FAR)。

LENGTH:取变量中元素的个数。若使用DUP( )定义的数组变量,结果为单元的个数;否则结果为1。

SIZE:取所定义存储区的字节数(等于LENGTH*TYPE)。若使用DUP(),取所定义的变量或字节个数;没使用DUP( ),则取第1个数据的字节数。

合成运算符:对已定义的但个操作数重新生成段基地址、偏移量相同而类型不同的新操作数,主要介绍PTR、THIS。 1) PTR:用来指定地址操作数的类型。

格式为:<新类型> PTR <存储器操作数>

类型:BYTE、WORD、DWORD、NEAR、FAR。

功能:指定原存储器的操作数为新类型,新操作数的段基地址和偏移量与原操作数相同;PTR也可用来进行强制类型转换。 THIS:指定“新类型”。格式为:THIS <新类型>;代表新的操作数的类型

即为式中指定的“新类型”。

伪指令:符号定义伪指令、数据定义伪指令。 符号定义伪指令:EQU、=。

格式:<符号> EQU <表达式>。用EQU定义的符号未清除前不能进行重定义。清除EQU定义可用:PURGE伪指令。格式:PURGE <符号>。

用“=”定义的符号可在任何时候进行重定义,其他用法与EQU完全相同。两者均不占用存储空间,仅是给符号赋值在编译过程中完成。 数据定义伪指令:<变量名> 数据定义伪指令 <操作数,操作数,···> 操作数可以是常数、变量或表达式。

常用的数据定义伪指令有:DB定义字节、DW定义字、DD定义双字、DQ定义4字、DT定义5字。 Exp:DATA DB ‘HELLO’ 复制操作符:DUP

定义重复的数据可使用复制操作符,括号中的内容可以为DUP重复定义的嵌套。 Exp:DATA DB 8 DUP (8 DUP (0) );连续分配64个字节单元,初值为0。

$表示取当前地址。 段定义伪指令:

格式:<段名> SEGMENT [定位类型] [组合方式] [类别] <汇编语言语句> <段名> ENDS

SEGMENT和ENDS总是成对出现的,且段名一样。SEGMENT说明一个段的开始,ENDS则说明一个段的结束。 ASSUME:明确段与寄存器的关系。 Exp:ASSUME CS:CODE DS:DATA ES:DATA ORG:规定了段内的指令或数据存放的开始地址,格式:ORG <表达式>,表达式的值即为开始地址,从此地址连续存放程序或数据。 PROC、ENDP:过程定义伪指令。

注意:PROC和ENDP必须成对出现,且过程名相同。过程的类型有NEAR、FAR两种,分别表示段内、段间调用,默认模式为NEAR。

END:汇编结束伪指令。格式:END <表达式>,表达式通常就是第一条指令的标号,指示程序的入口地址。

中断:当CPU内部或外部出现某种事件(中断源)需要处理时,终止正在执行的程序(断点),转去执行请求中断的那个事件的处理程序(中断服务程序),执行完后,在再返回被暂时中止执行的程序(中断返回),从断点处继续执行。 中断源的分类:外设中断源;硬件故障中断源;软件中断源。

CPU响应外中断的条件:

1)有中断源发出中断信号,并保存在中断请求触发器中,直至CPU响应此中断请求之后才清除。 2)开放总中断。可通过对CPU标志位IF的置位或复位使中断响应开放或禁止。只有开放总中断(执行STI指令),CPU才能响应外部可屏蔽中断;当一个中断被响应后,CPU会自动关闭中断。在中断服务程序中仍需开放总中断以允许嵌

套发生。

3)在现行指令结束之后响应中断。

中断类型码:为一个字节,是识别中断源的唯一标志。CPU通过中断类型码,确定对应为它服务的中断服务程序。

中断向量:每一个中断服务程序都有一个确定的入口地址,中断服务程序入口地址则称为中断向量。中断向量由段地址(CS)和偏移地址(IP)组成,占用四个字节,低两字节为偏移地址,高两字节为段地址。

中断向量表:把系统中所有中断向量集中起来,按中断类型码从小到大的顺序存放到存储器的某一区域内,这个存放中断向量的存储区叫做中断向量表,即中断入口地址表。

中断向量在表中的位置称为中断向量地址,中断向量地址与中断类型码的关系为: 中断向量地址(首地址)=中断类型码*4

中断请求可能在任意时刻被送到CPU,但实际上8086 CPU只是在每条指令执行的最后一个机器周期才采样中断请求信号。CPU是否响应中断,要看中断允许标IF,IF=1,则响应;IF=0,则不响应。

中断响应阶段

1、获取中断类型码;2、CPU进入自动处理阶段:1)关中断:CPU清IF位;2)断点保护:自动将标志寄存器FLAG和与断点地址CS和IP压入堆栈;3)形成中断入口地址:系统通过中断类型码获取中断向量,即获得中断服务程序的入口地址,从而进入中断服务程序。可得出结论:8086响应可屏蔽中断的条件:1、接收到有效的中断请求信号;2、CPU开放中断;3、CPU执行完当前指令。

中断服务阶段:

1、保护现场:用入栈指令把中断服务程序中要用到的寄存器内容压入堆栈,以便返回后CPU能正确运行源程序,断点地址是由硬件自动保护的,不用在中断服务程序中保护。 2、CPU开放中断:以便执行终端服务时能响应高一级中断请求,实现中断嵌套。需要注意的是:用STI指令开放中断时,是在STI指令的后一条指令执行完后,才真正开放中断。中断过程中,可以多次开放和关闭中断,但一般只在程序的关键部分才关闭中断,其他部分则要开放中断以允许中断嵌套。 3、中断服务程序:执行输入/输出或事件处理程序。 4、CPU关中断:为恢复现场作准备。

5、恢复现场:用出栈指令把保护现场时进栈寄存器内容恢复,注意应按先进后出的原则与进栈指令一一对应。出栈后,堆栈指针也应恢复到进入中断处理时的位置。

中断返回:8086CPU必须根据中断结束方式,发中断结束指令,并在最后用一条IRET指令结束中断。当执行到IRET指令时,断点地址自动出栈到IP和CS,并回复标志寄存器到FLAG,返回中断前的程序位置,继续执行。

一、中断服务程序设计步骤: 1、主程序应做的工作

1)CPU关中断,即用CLI置IF=0; 2)设置中断向量;

3)CPU开中断,用STI置IF=1; 4)等待中断。

2、编写中断服务子程序,完成中断服务任务:

1)保护现场,用入栈指令把中断服务程序中要用到的寄存器内容压入堆栈; 2)中断服务程序的编写,与普通子程序类似;

3)在中断子程序结束前,恢复现场,用出栈指令将堆栈中保护的寄存器内容弹出到原寄存器;

4)用IRET中断返回指令返回主程序被中断处。 二、中断向量表的装入与修改 三、软件中断服务程序设计

8259A的功能模块: 1、8位中断请求寄存器 2、8位中断服务寄存器 3、优先权比较器

4、8位中断屏蔽寄存器 5、控制逻辑

6、读/写控制逻辑

7、8位数据总线缓冲器 8、级联缓冲/比较器

8253:定时时间=时钟脉冲Tc x 预置的计数初值n


微机原理与接口技术复习笔记(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:不可不背:考研英语写作最常用的95个单词

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: