《教学课件微机原理第三章指令系统及汇编程序设计171p》由会员分享,可在线阅读,更多相关《教学课件微机原理第三章指令系统及汇编程序设计171p(32页珍藏版)》请在金锄头文库上搜索。
1、教学课件微机原理第三章指令系统及汇编程序设计171p 第三章指令系统及汇编程序设计本章内容 1、指令系统概述 2、8086指令系统的指令格式及用法 1、指令系统概述 2、8086指令系统的指令格式及用法 3、伪指令格式及应用 4、汇编语言程序结构及程序设计方法 5、汇编语言程序的上机过程学习重点 1、掌握8086各种寻址方式 2、掌握每条8086指令的格式及用法 1、掌握8086各种寻址方式 2、掌握每条8086指令的格式及用法 3、熟练掌握常用伪指令的格式及应用 4、熟练掌握汇编语言程序设计的方法3.1指令系统概述3.1. 1、指令的基本格式指令通常以二进制代码的形式提供给计算机指示计算机执
2、行什么操作的命令。 一、指令(Instruction):指令通常以二进制代码的形式提供给计算机,这种指令称为机器指令。 指令通常以二进制代码的形式提供给计算机,这种指令称为机器指令。 例1000100011011000就是一条2字节的机器指令,指示计算机执行“把寄存器BL内容复制到寄存器AL之中”的操作。 表示为:AL?BL。 ( 二、指令系统(Instruction System):( 三、程序(Program):完成某个特定任务而编制的一系列指计算机所能执行的全部指令。 完成某个特定任务而编制的一系列指令的有序集合。 程序的执行一般是按指令的先后次序一条一条执行,但遇到转移类指令时则可能改
3、变指令的执行次序。 程序的执行一般是按指令的先后次序一条一条执行,但遇到转移类指令时则可能改变指令的执行次序。 四、指令的表示方法1.二进制代码表示机器语言指令2.助记符表示汇编语言指令例1000100011011000令例MOV BL,ALMOV表示“传送”助记符,BL(寄存器)表示结果存放的位置,AL(寄存器)表示数据的。 助记符表示的指令便于书写、理解和记忆,但最终必须将助记符指令“翻译”成机器指令才能被识别和执行。 这个过程“”。 叫汇编助记符指令机器指令汇编机器指令汇编?地址数据和指令存放的位置。 数据存放的位置可以是寄存器、存储器或I/O端口指令存放的位置只能是存储器3.1.280
4、86指令的寻址方式或I/O端口,指令存放的位置只能是存储器中的代码段。 ?寻址方式寻找指令地址和操作数地址的方式。 ?寻址过程形成指令地址和操作数地址的过程。 1.立即数寻址操作数作为立即数就在指令中给出。 例MOV AX,1234H操作把立即数1234H送寄存器AX中。 机器码B83412(低字节在地址小的单元)AH ALAX.B834125678代码段(存储器中)操作码(B8)操作数(1234H)立即数一条指令一条指令1234MOV AX,1234H.指令执行后,AX=1234H(原有的内容被新的内容替换)。 2.寄存器寻址操作数在某个寄存器中。 例INC BL操作使BL中内容加1后送回B
5、L+1BL00若BL=00H,则执行后BL=01HBL=FFH,则执行后BL=00H(自动溢出)013.存储器寻址操作数在存储器中的一个或几个单元中。 在这种寻址方式下,要找到该操作数,关键是必须找到该操作数所在单元的地址。 由于8086采用存储器段组织结构,内存单元的地址由址段起始地址(基地址)和该单元与段起始地址之间的离距离(以字节数计)两部分共同决定。 ?段起始地址(基地址)某个段寄存器的内容(又称段基值)乘以16得到。 ?段内偏移量该单元与段起始地址之间的距离距离(字节数)。 又称有效地址EA。 (CS,DS,ES,SS)?16?段基地址有效地址EA待寻址的内存单元物理地址=段基值?1
6、6+EA内存单元物理地址8086规定,在执行某种操作时,采用的段寄存器有一个预先的约定。 故指令中一般只需给出有关EA的信息,则CPU将能选,够根据该次操作自动选用段寄存器,并与EA一起形成物理地址。 存储器寻址的实质就是如何形成有效地址有效地址EA。 (1)直接寻址方式指令中以偏移量方式直接给出操作数的有效地址。 即EA=指令中给出的偏移量例MOV AX,1234H机器码A13412操作把偏移量1234H作为EA,在数据段中找到相应的字单元,再将字单元的内容送AX。 本例执行完后,AX=3050HEA=3100H设DS=2000HDS?16=2000H16.A10031.指令代码段MOV A
7、X,3100H23100H3100H?EA=3100H23100H56783050=20000H20000H=2000H16.5030.数据段AH ALAXa.直接寻址的操作过程与立即寻址不同。 为表示它们的区别,直接寻址的偏移量用一对“”表示。 立即寻址MOV AX,3100H注立即寻址MOV AX,3100H直接寻址MOV AX,3100Hb.段基值乘以16,相当于段基值(二进制表示)左移4位,或段基值(十六进制表示)在末尾添一个0H。 (2)间接寻址方式以间接的方式得到有效地址EA,有几个专用的寄存器可用于间接寻址BX,BP,SI,DI。 a.基址寻址方式?以BX作为基址寻址寄存器,操作
8、数在数据段中。 ?以BP作为基址寻址寄存器,操作数在堆栈段中。 EA=BX或BP的内容+8位或16位位移量例MOV AX,BX机器码8B04EA=BX(位移量为0)操作以BX的内容作为有效地址EA,在数据段中找到对应的字单元,再将该字单元的内容送AX中。 (位)设DS=3000H,BX=1000H本例执行后AX=1234HDS=3000HDS?1630000H8B.04代码段EA=BX(=1000H)31000H12343412数据段AXAH AL这种寻址方式的优点就在于可以随时修改BX寄存器的内容,而指向不同的存储单元。 故BX又称为基址指针寄存器。 例MOV AL,DATABP这里DATA
9、是以符号表示的位移量。 EA=BP+位移量DATA操作以EA作为有效地址,在堆栈段中去寻址字节单元,再将该字节单元内容送AL。 b.变址寻址方式以SI,DI寄存器作为间接寻址寄存器,操作数在数据段中。 EA=SI或DI内容+8位或16位位移量例ADD AX,SIEA=SI操作以EA作为有效地址,在数据段中找到某个操作数,再将该操作数与AX的内容相加,结果存放在AX中。 c.基址变址寻址方式既有基址寄存器(BX或BP),又有变址寄存器参与(SI或DI)寻址,操作数在基址寄存器所规定的段中。 EA=BX或BP+SI或DId.相对基址变址寻址方式操作数的有效地址是一个基址寄存器和一个变址寄存器的内容
10、和操作数的有效地址是一个基址寄存器和一个变址寄存器的内容和88位或16位位移量这三者之和。 同样地,当使用基址寄存器位位移量这三者之和。 同样地,当使用基址寄存器时D BX,缺时,缺省的段寄存器是DS当;当使用基址寄存器BP时,缺省的段寄存器是SS。 EA=BX或BP+SI或DI+8位或16位位移量例MOV AX,0260HBXSIEA=BX+SI+0260H,操作数在数据段中MOV AX,INFBP+DIEA=BP+DI+位移量INF,操作数在堆栈段中*以上两种基址+变址的格式都是合法的。 ?8086的段约定8086在执行某种操作时,预先规定,即了采用的段寄存器和段,即有基本的段约定。 如果
11、要改变默认的段约定,则段约定。 如果要改变默认的段约定,则需要在指令中明确指出来。 8086/8088的段约定存储器存取方式基本段约定允许修改的段偏移地址取指令堆栈操作存储器存取方式基本段约定允许修改的段偏移地址取指令堆栈操作CSSS无无无无IPSP源串目的串用源串目的串用BP作基址寄存器通用数据读写作基址寄存器通用数据读写DSESSSDSES,CS,SS无CS,DS,ESCS,ES,SSSIDIEAEA寻址方式小结?寄存器寻址操作数在某个寄存器中?立即数寻址操作数就是操作码后跟的立即数?存储器寻址直接寻址间接寻址基址寻址变址寻址基址+变址寻址相对基址+变址寻址3.28086指令系统8086指
12、令按功能分为五大类。 传送类指令数据操作类指令8086指令系统数据操作类指令串操作类指令控制转移类指令处理器控制指令3.2. 1、传送类指令数据传送指令能够完成下列操作数的传送任务。 立即数通用寄存组存储器段寄存器CS,DS,ES,SS通用寄存器组AX,BX,CX,DXBP,SP,SI,DI(CS不能作目的)通1.通用数据传送指令 (1)MOV d,s功能将源操作数s复制到目标操作数d,源保持不变,目标被源代替。 注d,s不能同时为存储器d不能为立即数d,s必须同时为字节型或字型设DS=3000H,SI=200H,BX=1000H,DATA的偏移量为100H,则EA=SI+BX+DATA=20
13、0H+1000H+100H=1300H例MOV AX,DATASI+BX物理地址=DS?16+EA=30000H+1300H=31300H即从31300H和31301H两单元中取出内容送AX。 DS?1630000HEA=1300HDATASIDATA123434H12HAXAH ALBX31300H31301HMOV AX,DATASI+BX (2)PUSH s;SP2?SP,源操作数压入堆栈保存POP d;SP所指堆栈的内容送目标,SP+2?SP注s和d只能为16位寄存器或存储器例PUSH BX;把BX内容压入堆栈设SS=2000H,SP=0040H,BX=2340H则执行后,2340H被
14、保存到堆栈,同时SP=003EH,BX内容不变SS?1620000HSP=0040H(初值)SP=0040H(初值)xx0HxxEH4023SP=003EH(压栈后)XX2340BX (3)XCHG d,s;交换源和目标操作数注d=通用寄存器s=通用寄存器或存储器例XCHG AX,SI+400H执行后,5678H被送到内存单元AX=1234H3412SI+400H5678AH ALAX34127856 (4)XLAT;查表转换功能该指令通过AL和BX寄存器进行表格查找,将8位数装入AL中。 它完成的操作为ALBX+AL,XLAT指令常用于查表操作,即BX寄存器含有表格的起始地址,而AL中的值是
15、作进入表格中的偏移量,查出表格中的内容送入AL中。 例设DS=2000H,AL=10H,BX=0300H执行指令XLAT作用是将存储单元20310H的内容送入AL中。 地2.地址传送指令对于任一个存储器操作数,由段地址和偏移地址确定了它们在存储器中的位置。 目标地址传送指令就用于获得存储器操作数的段地址或偏移地址。 (1)LEA d,s功能取存储器源操作数有效地址送入目标dd=通用寄存器 (2)LDS d,s功能装入地址指针,段地址?DS,偏移地址?d (3)LES d,s功能装入地址指针,段地址?ES,偏移地址?d标3.标志位传送指令 (1)LAHF功能将标志寄存器低8位装入AH寄存器 (2)SAHF功能