《第三讲 8086汇编语言-1.ppt》由会员分享,可在线阅读,更多相关《第三讲 8086汇编语言-1.ppt(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三讲第三讲 80868086汇编语言汇编语言v教学目的教学目的理解机器语言、汇编语言、高级语言的含义极其理解机器语言、汇编语言、高级语言的含义极其各自特点;各自特点;掌握掌握80868086汇编指令的汇编指令的7 7 种寻址方式,进一步了解种寻址方式,进一步了解80868086系统系统MPUMPU各寄存器的各寄存器的功能及其存储器的使用;功能及其存储器的使用;掌握汇编指令集中一些常用指令掌握汇编指令集中一些常用指令(数据传送、加减、数据传送、加减、逻辑操作类指令逻辑操作类指令);掌握汇编语言中的符号和伪指令;掌握汇编语言中的符号和伪指令;掌握汇编语言完整的框架结构;掌握汇编语言完整的框架结构
2、;学会学会INT 21INT 21系统功能调用和常用系统功能调用和常用BiosBios功能调用。功能调用。q汇编语言汇编语言 是一种是一种面向机器面向机器的的符号语言符号语言,使用指令助记符、地址标号,使用指令助记符、地址标号等编写程序,需编译、链接转换成机器代码(等编写程序,需编译、链接转换成机器代码(.exe文件或文件或.com文件),文件),才能执行。才能执行。运行速度快,可移植性差,功能不强、难于普及,但运行速度快,可移植性差,功能不强、难于普及,但非常非常利于计算机底层硬件的操作利于计算机底层硬件的操作,代码效率也很高。,代码效率也很高。人人计算机计算机计算机语言计算机语言常用计算机
3、语言常用计算机语言q机器语言机器语言 用二进制码用二进制码“0”和和“1”表示,能被计算机表示,能被计算机直接识别和执直接识别和执行行。编写、调试程序都很繁琐,编写的程序编写、调试程序都很繁琐,编写的程序可移植性差,可移植性差,但执但执行速度很快。行速度很快。为何需要计算机语言?为何需要计算机语言?实现人机对话的需要实现人机对话的需要3.1 3.1 计算机语言计算机语言如要实现如要实现“将将AX AX 中的值送中的值送BXBX”的操作,只的操作,只需用下列汇编指令需用下列汇编指令:MOVMOVBX,AXBX,AX将将AX AX 中的值送中的值送BXBX的的机器码机器码:89C3H89C3H若若
4、CPUCPU从内存中的从内存中的代码区代码区读取到读取到89C3H89C3H,则,则执行执行“将将AX AX 中的值送中的值送BXBX”的操作。的操作。是是类似于自然语言和数学描述语言类似于自然语言和数学描述语言的程序设计语言的程序设计语言(如如C),运行效率不及汇编语言编写的程序。,运行效率不及汇编语言编写的程序。可移植性好、易于理解,对可移植性好、易于理解,对底层硬件进行操作时编程复杂底层硬件进行操作时编程复杂。常用计算机语言常用计算机语言q机器语言机器语言q汇编语言汇编语言q高级语言高级语言3.1 3.1 计算机语言计算机语言高级语言高级语言和和汇编语言汇编语言最终都要最终都要编译编译、
5、链接链接成为成为机器码,机器码,才能被计算机执行才能被计算机执行。如同如同C语言程序的设计、开发具有语言程序的设计、开发具有Turboc2.0、VC6.0等集等集成开发环境成开发环境(IDE)一样,可以用一样,可以用MASM、TASM等软件进行等软件进行PC汇编语言程序汇编语言程序的编辑、编译、链接、调试。的编辑、编译、链接、调试。一、汇编指令格式一、汇编指令格式一条完整的汇编指令格式:一条完整的汇编指令格式:标号:操作助记符 目的操作数 ,源操作数 ;注释 如:3.2 3.2 汇编指令的寻址方式汇编指令的寻址方式标号标号:指令在内存中存放地址指令在内存中存放地址(偏移地址偏移地址)的符号表示
6、;的符号表示;操作助记符操作助记符 指明指明指令的功能,即执行什么操作指令的功能,即执行什么操作,如,如mov、add、and等;等;目的操作数目的操作数 指明操作结果的存放位置;指明操作结果的存放位置;,源操作数,源操作数 指明被操作对象;指明被操作对象;注释;注释 注释。注释。一、汇编指令格式一条完整的汇编指令格式:标号:操作助记符 目的操作数 ,源操作数 ;注释3.2 3.2 汇编指令的寻址方式汇编指令的寻址方式标号和注释部分并不是必需的标号和注释部分并不是必需的;有的指令的操作数隐含在指令;有的指令的操作数隐含在指令中,如:中,如:DAA;BCD数加法调整指令,源:数加法调整指令,源:
7、AL;目的:;目的:AXPUSHAX;入栈指令,源:;入栈指令,源:AX;目的:;目的:SS:SPPOPCX;出栈指令,源:;出栈指令,源:SS:SP;目的:;目的:CX汇编指令可以对汇编指令可以对各种数值各种数值、CPU中的寄存器中的寄存器、内存中内存中的程序的程序/数据数据进行操作,或者说,进行操作,或者说,数值、寄存器、内存单数值、寄存器、内存单元都可以成为汇编指令的操作对象元都可以成为汇编指令的操作对象。汇编指令查找操作对。汇编指令查找操作对象的方式称为象的方式称为寻址方式寻址方式。8086汇编共有汇编共有7种寻址方式。种寻址方式。二、汇编二、汇编指令指令寻址方式寻址方式1.寄存器寻址
8、寄存器寻址 操作对象操作对象为寄存器为寄存器3.2 汇编指令的寻址方式例例:MOV CX,BX;若执行前;若执行前CX=1234H;BX=5678H;则执行后;则执行后CX=BX=5678H源和目的操作数都是寄存器寻址方式;源和目的操作数都是寄存器寻址方式;寄存器可以是寄存器可以是8位或位或16位的寄存器位的寄存器例例:MOV BL,AH;BL=AH因为寄存器在因为寄存器在CPU内部,所以采用寄存器寻址可提高内部,所以采用寄存器寻址可提高运行效率。运行效率。二、汇编二、汇编指令指令寻址方式寻址方式2.立即数寻址立即数寻址操作对象操作对象是立即数(数值常量)是立即数(数值常量)3.2 汇编指令的
9、寻址方式例:例:MOV CX,2009H;CX=2009H源操作数:源操作数:2009H,立即数寻址;,立即数寻址;目的操作数:目的操作数:CX,寄存器寻址;,寄存器寻址;立即数可以是立即数可以是8位或位或16位,负数用补码表示:位,负数用补码表示:例:例:MOVBL,5;BL=0FBH ADDAH,125;AH+7DHAH MOV CX,5;CX=0FFFBH 上述三指令源操作数为立即数寻址,目的操作数为寄存器寻址;上述三指令源操作数为立即数寻址,目的操作数为寄存器寻址;立即寻址方式只用于源操作数,主要用来给寄存器或存储单元赋立即寻址方式只用于源操作数,主要用来给寄存器或存储单元赋初值,也可
10、以与初值,也可以与RegReg或或MemMem进行算术逻辑运算。进行算术逻辑运算。二、汇编二、汇编指令指令寻址方式寻址方式3.直接寻址直接寻址操作对象操作对象为存储单元中的值,为存储单元中的值,并且其逻辑地址用下列并且其逻辑地址用下列两种方式两种方式直接直接 给出:给出:v 段寄存器段寄存器:偏移地址值偏移地址值3.2 汇编指令的寻址方式例:MOV CX,SS:2003H;CX=(SS:2003H)=5413H源操作数:SS:2003H,直接寻址;目的操作数:CX,寄存器寻址;v 已定义的数值变量名称已定义的数值变量名称例:例:VARY DB33H MOVAL,VARY;AL=(DS:VARY
11、)=33H目的:寄存器寻址;源:目的:寄存器寻址;源:DS:VARY代表的逻辑地址代表的逻辑地址二、汇编二、汇编指令指令寻址方式寻址方式4.间接寻址(地址间接寻址(地址间接间接 给出)给出)操作对象操作对象为存储单元中的值,为存储单元中的值,并且其逻辑地址的偏移并且其逻辑地址的偏移地址存储在指令中给出的地址存储在指令中给出的方括号中的方括号中的BX、SI、DI、BP之之一中;一中;v若以若以SI,DI,BX 间址,段地址缺省为间址,段地址缺省为DS 例:例:MOV AX,SI;(DS:SI)AX;源:间接;目的:寄存器;源:间接;目的:寄存器v若以若以BP间址,间址,段地址缺省为段地址缺省为S
12、S 例:例:MOV BP,AX;AX(SS:BP);源:寄存器;目的:间接源:寄存器;目的:间接3.2 汇编指令的寻址方式v只有只有SI,DI,BX,BP 可作为间址寄存器,如可作为间址寄存器,如MOV AX,CX 是错误的。是错误的。间址寻址主要用于连续存取存储单元中的数据间址寻址主要用于连续存取存储单元中的数据将将DS:0000DS:0000开始的字节开始的字节数据累加:数据累加:MOVMOVSI ,0000HSI ,0000HMOVMOVAL,00HAL,00HADCADCAL,SIAL,SIINCINCSISIADCADCAL,SIAL,SIINCINCSISIADCADCAL,SIA
13、L,SIINCINCSISI二、汇编二、汇编指令指令寻址方式寻址方式5.基址寻址(地址基址寻址(地址间接间接 给出)给出)操作对象操作对象为存储单元中的值,为存储单元中的值,并且其偏移地址是并且其偏移地址是BX或或BP中的内容与指令中给出的中的内容与指令中给出的8位或位或16位偏移量之和;位偏移量之和;v若以若以BX 基址,段地址缺省为基址,段地址缺省为DS 例:例:MOV 2BX,CL;CL (DS:BX+2)或或 MOV BX+2,CL ;源源:寄存器;目的寄存器;目的:基址基址v若以若以BP为基址,为基址,段地址缺省为段地址缺省为SS例:例:MOV BX,6BP;源源:基址;目的基址;目
14、的:寄存器寄存器或或 MOV BX,BP+6 ;(SS:BP+6)BL;(SS:BP+7)BH3.2 汇编指令的寻址方式只有只有BX,BP可用来可用来基址寻址基址寻址,所以所以BX,BP称为基称为基址寄存器址寄存器二、汇编二、汇编指令指令寻址方式寻址方式6.变址寻址(地址变址寻址(地址间接间接 给出)给出)操作对象操作对象为存储单元中的值,为存储单元中的值,并且其偏移地址是并且其偏移地址是SI或或DI中的内容与指令中给出的中的内容与指令中给出的8位或位或16位偏移量之和;位偏移量之和;以以SI、DI变址寻址,段地址缺省为变址寻址,段地址缺省为DS 例:例:MOV AX,2SI 或或 MOV A
15、X,SI2;(DS:SI2)AL;(DS:SI1)AH;源;源:变址;目的变址;目的:寄存器寄存器3.2 汇编指令的寻址方式只有只有SI,DI可用来可用来变址寻址变址寻址,所以所以SI,DI称为变址称为变址寄存器寄存器二、汇编二、汇编指令指令寻址方式寻址方式7.基址变址寻址(地址基址变址寻址(地址间接间接 给出)给出)操作对象操作对象为存储单元中的值,为存储单元中的值,并且其偏移地址是指令并且其偏移地址是指令中指定的基址寄存器的内容,变址寄存器内容及中指定的基址寄存器的内容,变址寄存器内容及8位或位或16位位偏移量之和,即前两种方式的组合。偏移量之和,即前两种方式的组合。例例:MOV AX,4
16、BXDI或或MOV AX,BX+DI+4 ;(DS:BX+DI+4)AL ;(DS:BX+DI+5)AH ;源;源:基址基址变址变址以以BX为基址,为基址,段地址缺省为段地址缺省为DS;以以BP为基址,为基址,段地址缺省为段地址缺省为SS。MOV BP+DI+4,CX ;目的;目的:基址基址变址变址3.2 汇编指令的寻址方式二、汇编二、汇编指令指令寻址方式寻址方式课堂练习:课堂练习:3.2 汇编指令的寻址方式(1)MOVAX,1000H(2)MOVAX,ES:1000H(3)MOVBX,AL(4)MOVDI,SI(5)ADDAX,BX+4(6)SUBAX,BX+DI+4(7)MOVDI+2,A
17、X(8)ADDAX,BP+DI-7立即数寻址立即数寻址 寄存器寻址寄存器寻址直接寻址直接寻址 寄存器寻址寄存器寻址寄存器寻址寄存器寻址 间接寻址间接寻址间接寻址间接寻址 寄存器寻址寄存器寻址基址寻址基址寻址 寄存器寻址寄存器寻址基址变指寻址基址变指寻址 寄存器寻址寄存器寻址寄存器寻址寄存器寻址 变指寻址变指寻址基址变指寻址基址变指寻址 寄存器寻址寄存器寻址源操作数源操作数 目的操作数目的操作数(6)源操作数的源操作数的段段地址缺省为地址缺省为DS(因用因用BX)(8)源操作数的源操作数的段段地址缺省为地址缺省为SS(因用因用BP)二、汇编二、汇编指令指令寻址方式寻址方式v寻址方式实质寻址方式实
18、质对对数值数值、CPU中的寄存器中的寄存器、内存中内存中的程序的程序/数据数据进行操作进行操作立即数寻址立即数寻址操作对象为操作对象为立即数(数值常量)立即数(数值常量)寄存器寻址寄存器寻址操作对象为操作对象为为为CPU寄存器寄存器直接寻址直接寻址操作对象为操作对象为为为为存储单元中的值,且存储单为存储单元中的值,且存储单元的地址元的地址直接直接在指令中给出在指令中给出间接寻址间接寻址操作对象为操作对象为为为为存储单元中的值,但存储单为存储单元中的值,但存储单元的地址借助元的地址借助CPU寄存器寄存器间接间接给出:给出:间址间址:地址为指令中的某一个地址为指令中的某一个CPU寄存器寄存器BX/
19、BP/SI/DI中的值;中的值;基址基址:地址为一个寄存器地址为一个寄存器BX/BP中的值再加一个偏移量;中的值再加一个偏移量;变址变址:地址为一个寄存器地址为一个寄存器SI/DI中的值再加一个偏移量;中的值再加一个偏移量;基址变址基址变址:地址为两个地址为两个regs中(中(BX/BP、SI/DI)的值之和再加)的值之和再加一个偏移量一个偏移量3.2 3.2 汇编指令的寻址方式汇编指令的寻址方式二、汇编二、汇编指令指令寻址方式寻址方式8.寻址方式中的段地址确定寻址方式中的段地址确定v间接寻址、基址寻址、变址寻址、基址变址寻址间接寻址、基址寻址、变址寻址、基址变址寻址指令指令中中段段的的缺省约
20、定关系:缺省约定关系:P46,表,表2-13.2 汇编指令的寻址方式访问存储器访问存储器 约定约定 可更可更 偏移偏移 的方式的方式 段段 换段换段 地址地址 取指令取指令 CS CS 无无 IPIP 堆栈操作堆栈操作(PUSH,(PUSH,POP,CALL,RET POP,CALL,RET 等等)SS )SS 无无 SPSP 数数 通用数据存取通用数据存取 据据 (直接寻址,直接寻址,BXBX,DS CS,SS,ES EADS CS,SS,ES EA 存存 SISI,DIDI,间址,间址)取取 以以BPBP间址,基址间址,基址 SS CS,DS,ES EASS CS,DS,ES EA 字符串
21、源地址字符串源地址 DS CS,SS,ES SIDS CS,SS,ES SI 字符串目的地址字符串目的地址 ES ES 无无 DIDI二、汇编汇编指令指令寻址方式寻址方式 8.寻址方式中的段地址确定寻址方式中的段地址确定v跨段或段超越跨段或段超越 当要改变以上的段默认状态,到其它段寻找操作当要改变以上的段默认状态,到其它段寻找操作数时,必须用数时,必须用跨段前缀跨段前缀指明操作数所在段的段寄存器指明操作数所在段的段寄存器名名。例例:MOV CX,SS:0000H;(SS:0000H)CX MOV AX,DS:BP;(DS:BP)AL,(DS:BP+1)AH MOV AX,CS:BX;(CS:BX)AL,(CS:BX+1)AH3.2 汇编指令的寻址方式v8086指令系统中共使用指令系统中共使用115个指令助记符代表个指令助记符代表91种操作种操作,可分六大类,可分六大类:数据传送指令数据传送指令算术运算指令算术运算指令逻辑运算逻辑运算(位操作位操作)指令指令串操作指令串操作指令控制转移指令控制转移指令处理机控制指令。处理机控制指令。学习时注意指令学习时注意指令格式格式及及功能功能本节先介绍:本节先介绍:传送,算术运算,逻辑运算传送,算术运算,逻辑运算指令指令3.3 常用汇编指令