8086_PENTIUM指令系统(5)汇编语言程序设计.ppt
《8086_PENTIUM指令系统(5)汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《8086_PENTIUM指令系统(5)汇编语言程序设计.ppt(80页珍藏版)》请在三一办公上搜索。
1、1,3.3 汇编语言中的标记、表达式和伪指令,3.3.1 汇编语言概况,图3.8 由汇编程序执行的汇编过程,2,汇编语言用指令助记符来表示机器语言。汇编语言编写的程序源程序。汇编语言中的指令与机器指令之间具有一一对应的关系。经过汇编后,得到目标代码。汇编语言是面向机器的语言。它的优点直接面向机器,硬件操作能力强,目标代码小,执行效率高。缺点:与其它高级语言相比较,程序阅读、理解相对困难,可移植性差。下面看一段汇编语言程序例子,3,DATASEGMENT;数据段定义开始 DAI DBINPUT STRING:$BUFDMADB80HDUP(?)DATAENDS;数据段定义结束STACKSEGME
2、NT;堆栈段定义开始 ME1DB80HDUP(?)STACKENDS;堆栈段定义结束CODESEGMENT;代码段定义开始ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSET MEIMOVAH,09HINT21HMOVDX,OFFSET BUFDMA MOVAH,0AHINT21HCODEENDS;代码段定义结束END;程序结束,规范程序,4,3.3.2 汇编语言中的标记,汇编语言是面向机器的程序设计语言。汇编语言程序设计在计算机的程序设计中占据重要的地位,特别是对于自动化专业更是如此。汇编语言程
3、序的最大优点:直接面对计算机的硬件,可以直接操作计算机的全部资源,具有最高的效率和控制硬件的能力。最主要缺点:面向特定的计算机,不方便程序移植,需要熟悉硬件。,5,1 汇编语言指令的书写格式及标识符,(1)指令书写格式标号:指令助记符 操作数,(操作数);注释(2)标号:又叫标识符。为可选项,它在指令助记符前,以“:”结尾。标号是该指令在内存中存放的符号地址,转移指令,过程调用指令通常使用该标号来作为目的地址。一个程序段的开头、一个数据段的开头一般会给出标识符。子程序投、转移程序的转移目的需要给出标识符。,6,标号由英文字母、数字、或“_,?”等组成,但应注意:第一个符号不能是数字;“?”不能
4、单独做标号。保留字不能作为标号使用。所谓保留字,就是所有的指令,伪指令以及汇编语言定义的特殊符号,例如 LJMP DB 等。标号不是每一条指令都必须的,只有需要时,指令前面才加标号。所谓需要,就是转移指令的目的地址,或过程(子程序)的第一条指令,或其它目的。标号的长度:不超过31位。,7,标号由英文字母、数字、或“_,?”等组成,但应注意:第一个符号不能是数字;“?”不能单独做标号。保留字不能作为标号使用。所谓保留字,就是所有的指令,伪指令以及汇编语言定义的特殊符号,例如 LJMP DB 等。标号不是每一条指令都必须的,只有需要时,指令前面才加标号。所谓需要,就是转移指令的目的地址,或过程(子
5、程序)的第一条指令,或其它目的。标号的长度:不超过31位。,8,例如:START MY_CODE X ABCD1?001 L004 ABC都是有效的标号,9,而以下这些标号 4ABC 第一个字符是数字 MAIN$使用了非法字符$STR=6 使用了非法字符=A/B 使用了非法字符/?问号不能单独作标号使用 MOV 使用了保留字 MOV 都是无效的标号。保留字是指整个字符串,如果字符串中只有部分字符与保留字相同则没关系例如:A_MOV_B AND123等,都是有效标号。,10,(3)指令助记符和操作数,前面学过。,11,(4)注释,是可选项,它主要是为了增加程序的可读与可理解性,注释部分不影响程序
6、的执行。注释部分以“;”号开始,可以使用任何符号。一行写不下,可以使用多行,凡是“;”后面的,都是注释。注释放在一段程序之前,对这段程序进行说明。或者放在指令之后,对这条指令执行的作用进行说明。,12,DATA SEGMENT;数据段定义开始DA1DB This is a sample program DB 0DH,0AH,$DATA EMDS;数据段定义结束 STACK SEGMENT;堆栈段定义开始 ST1 DB 100DUB(?);定义100个字节 STACK ENDS DATA SEGMENT;数据段定义开始DA1DB This is a sample program DB 0DH,0
7、AH,$DATA EMDS;数据段定义结束,13,STACK SEGMENT;堆栈段定义开始 ST1 DB 100DUB(?);定义100个字节堆栈空间 STACK ENDSCODE SEGMENT;代码段定义开始MAIN PROC FAR ASSUME CS:CODE,DS:DATA,SS:STACKORG 1000 START:PUSH DS;程序代码开始 MOV AX,0 MAIN EMDP;代码结束 CODE ENDS;代码段定义结束 END START;程序结束,14,2 保留字,汇编语言中用到的,不能给用户随意定义为其它功能的字符和字符串。例如:全部的指令助记符,寄存器名 伪指令符
8、号 表达式符号等。,15,3.分界符,汇编语言程序设计中,作为程序,或一条指令中两个部分的分隔符用。例如 两个操作数之间的分隔符,标号的分隔符 注释的分隔符教材124页表3.2 给出了可用的分界符。,16,4.常数,在指令中,它就是立即数。可以使用各种数制,注意不同数制的表示方式。如果是字符串,需要用单引号括起来,例如ABCD它表示包含4个字符的字符转,分别用每个字符的ASCII码存放41H,42H,43H,44H1234表示的是字符串,存放31H,32H,33H,34H,17,3.3.3 表达式,1.表达式的组成:操作数和运算符。2.操作数:可以代表一个数据,也可以代表一个地址。逻辑运算符关
9、系运算符分析运算符综合运算符,18,3.运算符,(1)算术运算符包括+;-;*;/;取模运算 MOD取模运算 MOD两数相除,取它的余数。例如:20 MOD 7 结果为?6 55 MOD 6=1,19,(2)逻辑运算符,包括:与(AND);或(OR),非(NOT),异或(XOR)注:只能对常数进行,结果也是常数 他与指令的逻辑运算有区别该运算符在汇编时进行计算,而指令实在程序执行过程中进行运算。例如 AND DX,PORT AND 0FEH,逻辑表达式,汇编时计算出结果,逻辑指令,程序执行时起作用,20,3 关系运算符,两个操作数的关系相等 EQ,不等 NE,小于 LT,大于 GT,小于或等于
10、 LE,大于或等于GE。参与运算的两个操作数必须都是数据,或者是同一段存储单元的地址;结果是数据,关系成立,结果等于 0FFFFH,或0FFFF FFFFH如果关系不成立,结果等于 0例如:MOV BX,PORT LT 3如果确实 PORT 3,则汇编后,得到的代码相当于指令MOV BX,0FFFFH,21,反之,如果关系不成立,汇编后的机器代码相当于MOV BX,0关系运算符往往和逻辑运算符组合使用。例如MOV BX,(PORT LT 5)AND 20)OR(PORT GE 5)AND 30)如果是 32位寄存器,结果0,或 0FFFF FFFFH,22,4.分析运算符,将存储单元的地址分解
11、为段码和偏移值。OFFSET取偏移地址例如 MOV DX,OFFSET DAT SEG取存储单元的段码(段基址)例如:MOV AX,SEG ABC MOV DS,AXTYPESIZE LENGTH,23,5.综合运算符,主要要求掌握 PTR与BYTE,WORD,DWORD合用,定义存储单元的类型。MOV BYTE PRT 1000,12HMOV WORD PTR 1000H,12H,24,3.3.4 语句,汇编语言程序有一系列语句有序构成。两种语句指令性语句就是一条指令。例如MOV AX,1234HADD AX,BX 指示性语句不产生机器指令代码的语句,又叫伪指令语句。ABC DB 50H,3
12、5HSEGMENT CODE 等,25,它们的区别:指令性语句对应着一条机器指令,汇编后会产生对应的机器指令代码指示性语句只为汇编过程提供某些信息,让汇编程序在汇编过程中执行某些特定的功能。指示性语句使用标号时,标号后不用冒号分隔符。最本质的区别:是否产生目标代码。,26,3.3.5 伪指令,最常用的伪指令有:CPU定义.586/.586 P标号赋值 EQU;定义存储单元 DB、DW、DD、DQ、DT;定义存储类型 BYTE、WORD、DWORD;段定义位指令SEGMENT、ENDS、ASSUME和ORG;简约段定义位指令 DATA、STACK、CODE过程定义 PROC、ENDP、NEAR、
13、FAR;程序结束 END,27,默认为8086,如果不是,则需要定义。例如.386.586.586 P,1.确定CPU的伪指令,28,2.标号赋值伪指令EQU,定义标号或符号常数比如:ABC EQU 220XYZ EQU ABC程序设计中,对一些端口,或常数,一般会定义一个符号常数,然后再源程序设计中使用符号常数。例如 COM1 EQU 3F8H COM2 EQU 2F8H LPT EQU 378H,29,DB、DW、DD、DQ、DT比如:CR DB0DHLF DB0AHBUF_DIS DB?DO_2 DB 9 DUP(?)DONT DW10 DUP(?)TABLE DB00,01,03,02
14、,06,04,05,07 DB 0FH,0EH,0CH,0DH,09 DB 0BH,0AH,08比如:COUNT1 DT?相当于语句COUNT1 DB 10 DUP(?),3.定义存储单元的伪指令,30,4 定义存储单元类型的伪指令,BYTE、WORD和DWORD比如:MOV BYTE PTR DI,00MOV WORD PTR 1000,00INC BYTE PTR DIMOV DWORD PTR 2000,0FFFFFFFFH,注意:最高位大于9,补一个0,教材上129页的例,有错误,31,5 段定义伪指令,(1)SEGMENT、ENDS将汇编语言源程序分为若干段代码段,堆栈段、数据段(2
15、)ASSUME 定义段寄存器 ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA(3)ORG定义目标代码的偏移地址。ORG 2000HSEGMENT CODE ENDS,ORG 后面的代码从 CS:2000H开始。,32,5 简约段定义,简化的段定义伪指令.DATA/.STACK/.CODE.MODEL SMALL.586.DATAM1DW 00FFHM2DW00FFHP1DW?P2DW?.STACKSTDB100DUP(?).CODESTART:MOVAX,DATAMOVDS,AX,33,MOVAX,TOPMOVSP,AXMOVBX,OFFSET M1MOVAX,
16、BXMOVDX,00MOVBX,OFFSET M2MUL BXMOVBX,OFFSET P1MOV BX,AXMOVBX,OFFSET P2MOV BX,DXHLTENDSTART,34,6.过程定义伪指令,PROC/ENDP NEAR FAR例子:BCD码相加的程序段。.MODEL SMALL.586.DATAFIRSTDB 11,22,33,44SECONDDB 55,66,77,88SUMDB20 DUP(?).STACKSTADB20 DUP(?).CODESTART:MOVAX,DATAMOVDS,AX,35,MOVAX,TOPMOVSP,AXMOVSI,OFFSETFIRSTMOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8086 _PENTIUM 指令系统 汇编语言 程序设计
链接地址:https://www.31ppt.com/p-2817616.html