汇编语言基础课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《汇编语言基础课件.ppt》由会员分享,可在线阅读,更多相关《汇编语言基础课件.ppt(66页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 第五章 汇编语言基础5.1 汇编语言的基本概念 汇编语言是用指令助记符,符号地址和标号书写的语言。用汇编语言编写的程序称为汇编语言源程序。汇编语言源程序必须进行加工翻译转换为机器语言程序。将源程序翻译成机器语言程序的过程叫汇编。完成这种工作的语言程序称为汇编程序。汇编程序是一种系统软件。IBM PC 系统配置了两种汇编程序:一种称为小汇编的ASM,另一种是宏汇编MASM。目前,一般多用宏汇编MASM。*程序设计语言程序设计语言 机器语言 汇编语言:机器语言的符号化,与机器密切相关。高级语言*汇编语言的意义汇编语言的意义 速度:对于同一个问题,用汇编语言设计出的程序能达到“运行速度最快”。空间
2、:对于同一个问题,用汇编语言设计出的程序能达到“占用空间最少”。功能:汇编语言可以实现高级语言难以胜任甚至不能完成的任务。知识:学习汇编语言,有助于对计算机系统的理解、写出更好的程序。511 汇编语言的基本语法1字符集8086/8088 宏汇编语言规定可以使用的字符详见P77-782标示符标示符在程序中用作变量名,常量名,记录名和段名等具体規定见P783保留字8086/8088中指令助记符,伪指令,寄存器名,表达式运算符及属性操作符等均为保留字。保留字不能当作标示符使用。4语句80X86宏汇编有两种基本语句宏汇编有两种基本语句:指令语句指令语句和伪指令语句伪指令语句指令语句对应机器的一种操作,
3、汇编后产生一个目标代码;伪指令是帮助汇编的,不产生目标代码,与机器操作无关;一条语句在源程序中一般只占一行,长度超过一行时必须用续行符号(&)(1)指令语句:一般格式如下一般格式如下:标号:标号:前缀前缀指令助记符指令助记符 操作数操作数;注释;注释其中:标号:表示该指令语句的存储器地址,供 转移指令,调用指令或循环指令作为操作数使用;前缀:是一些必须和其他指令配合使用的特殊指令;指令助记符:是指令中的关键字,不可缺省;操作数:指令要处理的数据,可以是一个或两个,也可没有(隐含);注释:说明指令功能;(2)伪指令语句:一般格式如下一般格式如下:名字伪操作命令操作数;注释 名字可以是符号名,常量
4、名,变量名,过程名和段名等,后面不能有“:”,是和指令语句的显著区别。伪指令命令:主要包括符号定义,变量定义,程序分段定义,过程定义,模块定义,和宏定义等。操作数随伪操作命令的不同而不同,它们的格式和定义将在后面的章节中一一介绍。5汇编语言程序结构由指令、伪指令、变量、标号等组合起来写出的程序成为源程序,一个汇编语言的源程序由若干个段和一行表示程序结束的伪指令组成。80X86宏汇编语言规定程序中最多可包括四种类型的段即:代码段,数据段,堆栈段和附加段,每个段在程序中的先后不定,数目也不定,但必须有段名。综上所述,用汇编语言编写的程序,在结构上具有以下特点:(1)由若干逻辑段组成,各逻辑段包括伪
5、指令语句定义和说明;(2)整个源程序以伪指令END结束;(3)每个逻辑段由语句序列组成,各语句可以是指令语句、伪指令语句、宏指令语句、注释语句或空行语句。单模块汇编语言源程序的结构 DATE SEGMENT数据定义伪指令序列 ;定义数据段 DATE ENDS STACK SEGMENT STACK 堆栈定义伪指令序列 ;定义堆栈段 STACK ENDS CODE SEGMENT 程序段 ;定义代码段 CODE ENDS END 标号在实际应用中,把一个独立汇编的源程序称为一个模块。一个大程序可由几个模块组成,每个模块具有不同的功能,这些模块分别汇编成目标代码后,再用连接程序把它们连接成一个可执
6、行程序,其中只有一个模块可以指出程序的启动地址,该模块称为主模块。这就是汇编语言程序设计上机顺序:首先编写源程序,其次汇编,然后连接,最后执行。编辑程序编辑程序ASM文件文件OBJ文件文件汇编程序汇编程序EXE文件文件连接程序连接程序 汇编语言程序的处理过程汇编语言程序的处理过程常见的汇编程序有以下两种类型:1行汇编程序:对汇编语言源程序进行逐条汇编,常见的IBM PC动态调试程序DEBUG中的A命令就属于这种汇编类型。2宏汇编程序:对扩展名为ASM的汇编语言源程序进行汇编,产生扩展名为OBJ的可重定位的目标代码文件,然后用链接程序LINK链接一个或多个OBJ模块(包括库文件),产生一个扩展名
7、为EXE的可执行目标文件(P80)具体进行汇编处理的过程如下:建立源程序;产生目标代码;链接目标程序;运行和调试;一个简单的例子一个简单的例子 CODE SEGMENT ASSUME CS:CODE MAIN MOV AH,2 MOV DL,A INT 21H MOV AH,4CH INT 21HCODE ENDS END MAIN 本程序功能在屏幕上输出一个大写字母A。52 80X86 指令基础 521 指令格式 1指令和指令系统 指令是计算机能够识别和执行的某种操作命令。一种计算机中所有指令的集合称为该计算机的指令系统。可分为如下几类:(1)数据传送指令(2)算术运算指令(3)逻辑运算指令
8、(4)移位运算指令(5)位与位串操作指令(6)控制转移指令(7)输入/输出指令(8)其他指令2指令格式前缀操作码寻址方式偏移量立即数03字节 1 2字节 1 2字节 1 4字节 1 4字节 80X86机器指令编码的一般格式机器指令编码的一般格式操作码操作码MOD字节 偏移量偏移量操作码操作码MOD字节DATA/DISP操作码操作码MOD字节DATA/DISPLDATA/DISPL操作码操作码MOD字节DATA/DISPLDATA/DISPH DATA操作码操作码MOD字节DATA/DISPLDATA/DISPH DATAL DATAH 8086 CPU 指令形式指令形式第1字节为操作码字节,其
9、构成如下:操作码DW7 2 1 0 8086中指令操作码的长度是固定的,一般占第一字节中的72位;D指示操作方向:D=0 表示REG指出的寄存器是源操作;D=1 表示REG指出的寄存器是目的操作数;W指示是16位寄存器还是8位寄存器参加操作:W=1 16位寄存器参加操作;W=0 8位寄存器参加操作;第第2字节为字节为MOD字节,其构成为:字节,其构成为:MOD REG R/M其中MOD占两位,为寻址方式指示位。MOD 寻 址 方 式0 0存储器寻址方式,无偏移量字节0 1存储器寻址方式,一字节偏移量1 0存储器寻址方式,两字节偏移量1 1寄存器寻址方式REG指示参加操作的寄存器编码;R/M字段
10、可以指示参加操作的寄存器编码,也可以指示有效地址的计算方法。522 寻址方式寻址方式 寻址方式是指令中用于说明操作数所在地址的方法,这里只讨论操作数的寻址方式。80 x86系列计算机有8种基本的操作数寻址方式,其中比例变址寻址只在80386以上的微处理器中使用。1立即寻址:又称立即数寻址。操作数直接放在指令中成为立即数,立即数规定只能是整数。例如:MOV AL,30 ;十进制形式的立即数 MOV AX,3030H;十六进制形式的立即数 MOV AL,11001101B MOV AL,3 ;字符形式的立即数立即寻址还有一些比较复杂的情况。如果操作数是由数字和运算符构成的表达式,汇编语言在汇编时会
11、计算出表达式的值,并将计算结果以立即数的形式翻译到机器指令中。MOV AL,3-30H 1.立即寻址方式立即寻址方式指令操作数部分直接给出指令的操作数,操作数与操作指令操作数部分直接给出指令的操作数,操作数与操作码一起存入代码段中码一起存入代码段中。立即数有立即数有8位和位和16位位,只能为整数。只能为整数。80X86或更高档机器中,立即数也可以是双字等。或更高档机器中,立即数也可以是双字等。例例:MOV AL,5 ;源操作数为立即寻址;源操作数为立即寻址指令执行后,指令执行后,AL=05H,8位数据位数据05H存入存入AL寄存器。寄存器。例例:MOV AX,3064H ;源操作数为立即寻址;
12、源操作数为立即寻址指令执行后,指令执行后,AX=3064H,16位数据位数据3064H存入存入AX寄存寄存器。器。立即数只能是源操作数,此种寻址方式主要用于对寄立即数只能是源操作数,此种寻址方式主要用于对寄存器赋值。操作数在指令中,执行速度快。存器赋值。操作数在指令中,执行速度快。2.寄存器寻址方式寄存器寻址方式 寄存器寻址方式的操作数是寄存器的值,指令中直寄存器寻址方式的操作数是寄存器的值,指令中直接使用寄存器名,包括接使用寄存器名,包括8位或位或16位通用寄存器。位通用寄存器。可使用可使用的的16位寄存器:位寄存器:AX、BX、CX、DX(通用寄存器)、通用寄存器)、SI(源变址寄存器)、
13、(源变址寄存器)、DI(目的变址寄存器)、(目的变址寄存器)、SP(堆栈指针寄存器)、(堆栈指针寄存器)、BP(基址寄存器);其中:(基址寄存器);其中:AX、BX、CX、DX可分成两可分成两8位使用。位使用。例:例:MOV AX,CX MOV AL,BL MOV AX,2056H 对于对于80386或更高档机器中,立即数可为双字或更高档机器中,立即数可为双字 例如:例如:MOV EBX,12345678H 2寄存器寻址:寄存器寻址:操作数在操作数在CPU的内部寄存器中,的内部寄存器中,指令指出寄存器名。(指令指出寄存器名。(P83)例如:例如:MOV AL,BL ;(BL)AL MOV AL
14、,DH MOV AX,SI要注意数据匹配。要注意数据匹配。3.内存寻址方式内存寻址方式 操作数寻址方式主要分为三类,其中内存寻址方操作数寻址方式主要分为三类,其中内存寻址方式最复杂。在内存寻址方式中,操作数是某个内存单式最复杂。在内存寻址方式中,操作数是某个内存单元的内容(值),指令中给出的是内存单元的有效地元的内容(值),指令中给出的是内存单元的有效地址址EA(即偏移地址),段地址通常在隐含的某个段(即偏移地址),段地址通常在隐含的某个段寄存器中。寄存器中。一直接寻址:一直接寻址:直接寻址方式的操作数地址的直接寻址方式的操作数地址的16位位偏移量(又称有效地址偏移量(又称有效地址EA)直接包
15、含在指令中。直接包含在指令中。例如:例如:MOV AX,DS:2000H假设假设(DS)=3000H,则物理地址为则物理地址为32000H.如果指令无前缀,则默认操作数存放在数据段寄存如果指令无前缀,则默认操作数存放在数据段寄存器器DS中。它存放在代码段中指定操作码之后,但操作中。它存放在代码段中指定操作码之后,但操作数一般存放在存储器的数据段中,所以必须先求出操数一般存放在存储器的数据段中,所以必须先求出操作数的物理地址,然后再访问存储器才能取得操作数。作数的物理地址,然后再访问存储器才能取得操作数。例如:例如:MOV AX,2000H MOV AX,ES:2000H在汇编语言中,经常使用符
16、号地址代替数值地址。在汇编语言中,经常使用符号地址代替数值地址。例如:例如:Mov ax,3000h 寻址示意图寻址示意图二寄存器二寄存器间接间接寻址:寻址:在这种寻址方式中,寄存器中存放的是操作数地址的在这种寻址方式中,寄存器中存放的是操作数地址的16位偏移量,位偏移量,注意这里使用的寄存器只有注意这里使用的寄存器只有4个个。基址寄存器基址寄存器(BX、BP)和变址寄存器和变址寄存器(SI、DI)(BX、SI、DI、BP)前三个寄存器对应的缺省段寄存器前三个寄存器对应的缺省段寄存器是是DS;BP对应的缺省段寄存器是对应的缺省段寄存器是SS。如果需要,寄存器间接寻址方式也可以使用段跨越如果需要
17、,寄存器间接寻址方式也可以使用段跨越例如:例如:MOV AL,DS:BP MOV AL,ES:BX MOV AL,SS:DI 例如:例如:MOV AX,BP 寻址示意图寻址示意图 操作数在存储器中,指令中寄存器内容作为操作数所操作数在存储器中,指令中寄存器内容作为操作数所在单元的有效地址。在单元的有效地址。(BX)(SI)(DI)(BP)有效地址有效地址=段寄存器为段寄存器为DS段寄存器为段寄存器为SS物理地址计算方法:物理地址计算方法:物理地址物理地址 =(DS)*16 +(BX)或()或(SI)或)或(DI)物理地址物理地址 =(SS)*16 +(BP)例:已知:(例:已知:(DS)=21
18、00H,(,(DI)=2000H 指令:指令:MOV AX,DI ;(;(AX)(DI)物理地址物理地址=(DS)*16 +(DI)=2100H *16 +2000H =21000H +2000H =23000H 指令结果:将指令结果:将23000H单元内容送单元内容送AL中,中,将将23001H单元内容送单元内容送AH中。中。直接寻址和寄存器间接寻址,是汇编语言中内存型操作数最常用的两种方式。如果与高级语言相比,直接寻址相当于高级语言中的整数,字符等类型的简单变量,而寄存器间接寻址则相当于指向某种数据类型的指针变量。(地址)三、寄存器相对寻址方式(变址寻址)三、寄存器相对寻址方式(变址寻址)
19、(BX)DISP8 (SI)(DI)(BP)DISP16有效地址有效地址=段寄存器为段寄存器为DS段寄存器为段寄存器为SS+又称变址寻址,是将一个基址或变址寄存器中的又称变址寻址,是将一个基址或变址寄存器中的值,与一个值,与一个8或或16位数据相加,其结果作为偏移地位数据相加,其结果作为偏移地址(有效地址)。相见书址(有效地址)。相见书85页举例页举例物理地址物理地址=(DS)*16+(BX)+DISP8(SI)、()、(DI)、)、DISP16类同。类同。物理地址物理地址=(SS)*16+(BP)+DISP16寄存器相对寻址的缺省段寄存器按下列规则处理:寄存器相对寻址的缺省段寄存器按下列规则
20、处理:*变量变量+寄存器寄存器形式,以变量对应的缺省段寄存器为准;形式,以变量对应的缺省段寄存器为准;*寄存器寄存器+数值数值形式,以寄存器对应的缺省段寄存器为准形式,以寄存器对应的缺省段寄存器为准;*不允许同时出现两个或两个以上的变量相加的情况不允许同时出现两个或两个以上的变量相加的情况;但可以出现两个定义在同一段中的变量相减,减但可以出现两个定义在同一段中的变量相减,减法表示两个变量偏移地址的差值,这个差值不再作变量法表示两个变量偏移地址的差值,这个差值不再作变量看待,此时缺省段寄存器则以基址或变址寄存器的缺省看待,此时缺省段寄存器则以基址或变址寄存器的缺省段寄存器为准。段寄存器为准。逻辑
21、地址中的段与偏移的对应关系是非常重要的,逻辑地址中的段与偏移的对应关系是非常重要的,如果搞错对应关系,就无法从内存正确的位置取出正确如果搞错对应关系,就无法从内存正确的位置取出正确的操作数,或将操作数放到内存中一个错误的位置,这的操作数,或将操作数放到内存中一个错误的位置,这种错误不是可以指出的语法错误,而属于逻辑错误,这种错误不是可以指出的语法错误,而属于逻辑错误,这个错误是很难查出的。个错误是很难查出的。寄存器相对寻址的寄存器相对寻址的主要用途主要用途是针对类似高级语言中定是针对类似高级语言中定义的数组,以一个通用寄存器放下标值实现对数组元素义的数组,以一个通用寄存器放下标值实现对数组元素
22、的直接访问。例如:在汇编语言中,设的直接访问。例如:在汇编语言中,设ARR是一个整型是一个整型数组变量,其中存放了数组变量,其中存放了10个字型带符号整数,用个字型带符号整数,用ARR+BX得形式可访问各元素,得形式可访问各元素,BX的取值分别为的取值分别为0,2,4,6,8,10,12,14,16,18;例:例:如果如果(DS)=3000H,(SI)=2000H,COUNT=3000H,执行指令执行指令 MOV AX,CONUTSI,求出此种寻址方式对应的有效地址和物理地址。求出此种寻址方式对应的有效地址和物理地址。有效地址有效地址=2000H+3000H=5000H物理地址物理地址=(DS
23、)*16+5000H =30000H+5000H=35000H例如:例如:MOV AX,COUNTBP若(若(SS)=5000H;(BP)=3000H;COUNT=2040H有效地址有效地址=3000H+2040H=5040H物理地址物理地址=50000H+5040H=55040H四基址加变址寻址:四基址加变址寻址:又称基址变址寻址,使用一个基址寄存器和一个变又称基址变址寻址,使用一个基址寄存器和一个变址寄存器的值相加,计算结果作为操作数的偏移地址。址寄存器的值相加,计算结果作为操作数的偏移地址。缺省时的对应关系是:当基址寄存器是缺省时的对应关系是:当基址寄存器是BX时,段时,段寄存器是寄存器
24、是DS;当基址寄存器是当基址寄存器是BP时,段寄存器是时,段寄存器是SS;如果需要,基址变址寻址方式也可以使用段跨越。如果需要,基址变址寻址方式也可以使用段跨越。例如:例如:MOV AX,BXSI MOV AX,BX+SI 这种寻址方式同样适用于数组或表格处理,首地址这种寻址方式同样适用于数组或表格处理,首地址可存放在基址寄存器中,而用变址寄存器来访问数组可存放在基址寄存器中,而用变址寄存器来访问数组中的各个元素。由于两个寄存器都可以修改,所以使中的各个元素。由于两个寄存器都可以修改,所以使用比较灵活。用比较灵活。(BX)(SI)(BP)(DI)有效地址有效地址=+物理地址物理地址=(DS)*
25、16 +(BX)+(SI)或()或(DI)物理地址物理地址=(SS)*16 +(BP)+(SI)或()或(DI)例:例:MOV AX,BX+DI 或或 MOV AX,BXDI DS:(BX)+(DI)字存储单元内容送字存储单元内容送AX。例:例:MOV AX,BP+SI 或或 MOV AX,BPSI SS:(BP)+(SI)字存储单元内容送字存储单元内容送AX。在高档机中,可用的寄存器更多,参见书在高档机中,可用的寄存器更多,参见书85页页 举举例例 例:如果例:如果(DS)=2100H,(BX)=0158H,(DI)=10A5H,EA=11FDH,执行指令执行指令 MOV AL,BXDI有效
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 基础 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内