【教学课件】第3章汇编语言程序设计.ppt
《【教学课件】第3章汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第3章汇编语言程序设计.ppt(185页珍藏版)》请在三一办公上搜索。
1、第3章 汇编语言程序设计,3.1 概述指令:计算机完成某种操作的命令程序:完成某种功能的指令序列软件:各种程序总称机器代码,汇编语言程序,汇编程序汇编语言程序建立步骤:()用编辑程序建立.ASM源文件()用LINK程序把.ASM文件转换为OBJ文件()用LINK程序把.OBJ文件转换为.EXE文件,或用EXEBIN程序把.EXE文件转换为.COM文件()在DOS下直接键入.EXE文件或.COM文件的文件名就可运行该程序,3.2 语句格式,语句格式:名字 操作符 操作数1,操作数2;注释 1名字一种符号地址组成:AZ,az,09,专用符号?、.、_、$限制:第一个字符不能为数字“.”必须为第一个
2、字符 前31个字符有效 不能为关键字类型:标号:指令符号地址 变量:数据符号地址2操作符组成:CPU指令,伪指令,宏指令3操作数指定参与操作的数据,或数据所在单元地址4注释说明程序、指令功能,增加程序可读性,3.3 伪指令,功能:指示汇编程序完成规定的操作,如选择处理器,定义数据,分配存储器等。,一、程序开始与结束,1程序开始:可以用name,title给程序起名。格式:NAME module_name汇编程序以模块名作为模块的名字,若未使用NAME,则可用TITLE给程序指定标题格式:TITLE text文本在每一页上打印出来,若没有NAME,则text的前6个字符为模块名,text最多为6
3、0个字符。若未使用NAME、TITLE,则源文件名为模块名。2程序结束:表示原程序结束,不可缺,源程序的最后一条语句。格式:END label标号指示程序开始执行的起始地址,多个模块连接,主程序用标号,其他程序不用,主程序缺省值为代码段第一条指令。3MASM 6.0 定义的入口点、出口点入口点:.STARUP;产生设置DS、SS、SP代码,此时,END不用标号。出口点:.EXIT;返回操作系统,常用值为0。例:.STARUP.EXIT 0 END,二、处理器选择,功能:选择对应的指令集,也即对应的汇编执行语句集放在程序最前面缺省值为.8086此类指令主要有:.8086 选择8086指令系统.2
4、86 选择80286指令系统.286P 选择保护方式下80286指令系统.386 选择80386指令系统.386P 选择保护方式下80386指令系统.486 选择80486指令系统.486P 选择保护方式下80486指令系统.586 选择Pentium指令系统.586P 选择保护方式下Pentium指令系统,吉林大学远程教育学院,微机原理及汇编语言,主讲人:赵宏伟 教授 总学时:80 吉林大学计算机科学与技术学院,第 二十 讲,三、段定义,段定义:确定代码组织与数据存储的方式 2种:完整的段定义和简化的段定义(MASM 5.0以上)完整的段定义包括:(1)segment和end段定义(2)AS
5、SUME段分配(3)GROUP 段组定义,segment和end段定义(1),格式:段名 segment 定位类型组合类型 字长类型类别 段名 end功能:定义段名、段属性。一般情况下,选项可以不用,用默认值,但若需连接本程序和其他程序,就要使用这些说明。段名是段的标识符,指明段的基址,由程序员指定。,segment和end段定义(2),定位类型定位类型:指定段起始边界,5种BYTE:任意位置WORD:偶地址,地址低1位为0DWORD:4的倍数地址,地址低2位为0PARA:16的倍数地址,地址低4位为0PAGE:256的倍数地址,地址低8位为0,一页的起点,默认值。,segment和end段定
6、义(3),组合类型组合类型:表示本段与其它段之间,具有相同段名的各段的组合关系,为连接程序提供信息,属于连接类型,6种。PUBLIC:本段连接时将与有相同段名.public类型的其它段连接在一起,连接次序由连接命令指定(共用一个段),即同名段连接在一起,有共同段地址。STACK:用于说明堆栈段,把不同程序段中的具有SARCK类型的同名段组合而形成一个堆栈段,其长度为各原有段的总和,LINK自动将新段的段地址送SS,长度送SP,若未定义SARCK类型,需在程序中用指令设置SS、SP。COMMON:本段连接时,使具有COMMON类型的同名段具有同一个起始地址,所以会产生覆盖,新段的长度是最长COM
7、MON段的长度,新段的内容取决于依次覆盖的最后内容。MEMORY:表示该段应定位在所有段的最下面(即地址最大的区域),如果模块中不止一个MEMORY段,以第一个遇到的作为MEMORY段,其它段作为COMMON段处理,而LINK程序在处理MEMORY时与PUBLIC同样对待。PRIVATE:独立段,与其它段逻辑上没有关系,不与同名段合并,默认值。AT 表达式:指定本段起始地址为“表达式”,偏移量为0,不能用于代码段。,segment和end段定义(4),字长类型字长类型:386以后,说明使用16位寻址方式,还是32位寻址方式。.USE16:16位寻址方式,段长64KB,16位段地址,16位偏移量
8、,默认值。.USE32:32位寻址方式,段长4GB,16位段地址,32位偏移量。类别类别:引号括起的字符串,连接时,类别相同的分段(他们可能不同名)均放在连续的存储空间中,但他们仍然是不同的分段(连续空间)。,ASSUME段分配,格式:ASSUME 段寄存器名:段名,功能:指定分段寄存器,说明哪个段使用哪个段寄存器。说明:程序段必须用CS,堆栈段必须用SS该语句一般放在代码段的最前面说明性语句,除CS外(初始化赋值),各段寄存器在程序中赋值。取消语句:ASSUME NOTHING,一般汇编格式举例,DATA1 SEGMENT DATA DATA1 ENDSDATA2 SEGMENT EXTRA
9、 DATA2 ENDSDATA3 SEGMENT DATA DATA3 ENDSCODE SEGMENT CODE ASSUME CS:CODE,DS:DATA1,ES:DATA3,SS:DATA2START:MOV AX,DATA1 MOV DS,AX;数据段地址赋给DS MOV AX,DATA2 MOV SS,AX;堆栈段地址赋给SS MOV AX,DATA3 MOV ES,AX;附加段地址赋给ES MOV AH,4CH INT 21H;返回DOSCODE ENDS END START,GROUP 段组定义,格式:段组名 GROUP 段名,段名功能:将指定的所有段分配在同一个物理存储器内,
10、使用同一个组名,使用同一个DS内容。用户自行指定段组中的段,段组不影响各段次序,对定义在不同段中的变量,可以用同一个DS访问,但各段仍为独立段,通常将具有相同性质的段分在一个段组。举例:DATA1 SEGMENT DATA DATA1 ENDS DATA2 SEGMENT DATA DATA2 ENDS AA5 GROUP DATA1,DATA2 CODE SEGMENT CODE ASSUME CS:CODE,DS:AA5 START:MOV AX,AA5 MOV DS,AX;数据段地址赋给DS MOV AH,4CH INT 21H;返回DOS CODE ENDS END START,简化的
11、段定义,MASM 5.0以上支持的段定义,不像SEGMENT定义得那么完善,但易用。简化段有利于汇编语言程序模块与高级语言程序模块的连接,但.COM程序不能用简化段定义。,四、地址计数器伪指令,1地址计数器$功能:指出汇编地址,是偏移量,记载下一个变量或指令在当前段中的偏移量。每个段开始时,$0,随着汇编过程的进行而增值,每处理一条指令,$增加一个值,此值为该指令所需的字节数。允许直接引用$,如:JNE$6;转向JNE指令的首地址加上6。$用于指令时,表示本条指令的第一个字节地址,$用于其他情况,表示$的当前值。2ORG 起始地址定义格式:ORG 表达式功能:定义指令或数据的起始地址,把表达式
12、的值送给$(地址计数器)3EVEN 偶数地址定义功能:使下一个变量或指令从偶数地址开始,便于字存储对准(EVEN在代码段中可能多出一个NOP语句)。4ALIGN 边界定义格式:ALIGN n;n为2的幂次功能:使下一个变量或指令从n的接续整数倍地址开始,保证双字、四倍字对准。,五、数据定义,格式:变量名 操作符 操作数;注释功能:为操作数分配存储单元,用变量与存储单元联系。为变量分配存储单元,并预置初值。操作符:DB:一个操作数占有1个字节单元(8位),定义的变量为字节变量。DW:一个操作数占有1个字单元(16位),定义的变量为字变量。DD:一个操作数占有1个双字单元(32位),定义的变量为双
13、字变量。DF:一个操作数占有1个三字单元(48位),定义的变量为三字变量。DQ:一个操作数占有1个四字单元(64位),定义的变量为四字变量。DT:一个操作数占有1个五字单元(80位),定义的变量为五字变量。操作数:常数、表达式、字符串、?,数据定义举例(1),ORG 200H;设置$DATA1 DB 12H,2+6,34HEVEN;偶地址,使$指向偶地址DATA2 DW 789AHALIGN 4;4倍地址,使$指向4倍地址DATA3 DD 12345678HDATA4 DW$,6699H;$为汇编指针,16位,设置当前$(原$)的内容,吉林大学远程教育学院,微机原理及汇编语言,主讲人:赵宏伟
14、教授 总学时:80 吉林大学计算机科学与技术学院,第 二十一 讲,数据定义举例(2),ORG 100HDATA1 DB abcd;字符串必须用单引号DATA2 DB AB DATA3 DW AB;按字处理,个数只能为2,数据定义举例(3),ORG 400HDATA1 DB 1,2,?,4;按字节定义DATA2 DW 5,?,6;按字定义DATA3 DF?;按三字定义DATA4 DB 8,数据定义举例(4),ORG 300HDATA1 DB 2 DUP(12H,34H,56H),数据定义举例(5),ORG 100HDATA1 DB 12H,34H,2 DUP(56H,3 DUP(9AH),78H
15、),六、PROC、ENDP过程定义,功能:用于定义子程序结构,过程名是CALL的操作数。格式:过程名 PROC 属性 过程名 ENDP属性:FAR,NEAR(默认值),吉林大学远程教育学院,微机原理及汇编语言,主讲人:赵宏伟 教授 总学时:80 吉林大学计算机科学与技术学院,第 二十二 讲,七、模块连接伪指令,用于定义各模块之间的共享信息1PUBLIC格式:PUBLIC 符号1,符号2,功能:公共引用,说明本模块定义,而其它模块引用的共享信息。2EXTRN格式:EXTRN 符号1:类型,符号2:类型,功能:外部引用,说明其他模块定义,而本模块引用的共享信息。类型:对于变量,可以是字节(BYTE
16、),字(WORD),双字(DWORD),三字(FWORD),四字(QWORD),五字(TWORD)。对于标号、过程名,可以是段内引用型(FAR),段间引用型(NEAR)。共享信息是全局变量,包括常量、变量、标号、过程名等。EXTRN说明的信息应是在PUBLIC中已经定义的,否则出错。例:PUBLIC VAR1,VAR2 EXTRN VAR1:WORD,VAR2:BYTE,3.4 操作数字段,操作数字段可以是寄存器、标号、变量、常数、表达式等。寄存器、标号、变量已作介绍,本节重点介绍常数、表达式。,一、常数(1),包括:数值常数、字符串常数、符号常数1数值常数数值常数可以是二进制数、八进制数、十
17、进制数、十六进制数。基数控制伪指令:改变基数默认值(原默认值为十进制)。格式:.RADIX 数值表达式功能:把默认的基数改变为216范围内的任何基数。例:MOV BX,0FFH 等价于.RADIX 16 MOV BX,178 MOV BX,0FFH MOV BX,178D2字符串常数字符串常数:包括在单引号中的若干字符。字符串在存储器中储存的是相应字符的ASCII码。,一、常数(2),3符号常数包括:EQU和(1)EQU赋值伪指令格式:符号常数名 EQU 表达式功能:将表达式的值赋给符号常数。说明:表达式可以是有效的操作数格式,也可以是任何可求出数值常数的表达式,还可以是任何有效的符号(如操作
18、符、寄存器名、变量名等)。EQU定义的一个符号常数名在程序中只能定义一次。例:DATA1 EQU 88 NEW_CX EQU CX DATA2 EQU DATA1+12(2)伪指令格式:符号常数名 表达式功能:将表达式的值赋给符号常数。定义的一个符号常数名在程序中可以重复定义多次。例:DATA1=88 DATA1=DATA1+99,二、表达式(1),表达式:常数、寄存器、标号、变量与一些运算符相组合的序列。包括:数值表达式,地址表达式。1运算符六种运算:算术运算、逻辑运算、移位运算、关系运算、返回值运算、属性运算。(1)算术运算符算术运算符:有5个,加()、减()、乘()、除(/)和取余(MO
19、D)。(2)逻辑运算符逻辑运算符:4个,与(AND)、或(OR)、非(NOT)和异或(XOR)。,二、表达式(2),(3)移位运算符移位运算符:2个,左移(SHL)和右移(SHR)。例:MOV AL,0 MOV BL,11011000B MOV AL,BL SHR 3;(AL)=00011011B MOV CL,BL SHL 6;(CL)=11000000B(4)关系运算符关系运算符:6个,等于(EQ)、不等(NE)、小于(LT)、大于(GT)、小于等于(LE)、大于等于(GT)。功能:关系运算符的两个操作数的计算结果应为逻辑值,结果为真(关系成立),表示为0FFFFH,结果为假(关系不成立)
20、,表示为0。例:MOV AX,2 LT 7;(AX)=0FFFFH,二、表达式(3),(5)返回值运算符返回值运算符:5个,返回变量或标号的段地址(SEG)、返回变量或标号的偏移地址(OFFSET)、返回变量或标号的类型值(TYPE)、返回变量的单元数(LENGTH)、返回变量的字节数(SIZE)。SEG返回变量或标号的段地址运算符格式:操作数 SEG 变量/标号功能:将变量/标号所在段的段基址值赋给操作数。OFFSET返回变量或标号的偏移地址运算符格式:操作数 OFFSET 变量/标号功能:将变量/标号所在段中的偏移值赋给操作数。TYPE返回变量或标号的类型值运算符格式:操作数 TYPE 变
21、量/标号功能:将代表变量/标号类型的值赋给操作数。说明:如果是变量,则汇编程序将根据变量对应的数据定义伪指令回送类型值(即变量类型代表的字节数):DB为1,DW为2,DD为4,DF为6,DQ为8,DT为10。返回以字节数表示的类型,常数返回0。如果是标号,则汇编程序将回送代表该标号类型的数值:NEAR为1,FAR为2。,二、表达式(4),LENGTH返回变量的单元数运算符格式:操作数 LENGTH 变量功能:将代表变量的单元数赋给操作数。说明:返回一次数据定义的第一个元素的长度,DUP时返回重复次数,其他情况返回1。对于变量中使用DUP的情况,汇编程序将回送分配给该变量的单元数(按类型TYPE
22、算),而对于其他情况,则均送1。只对DUP定义的变量有意义,返回分配给该变量的元素的个数。只返回第一个DUP前的元素个数,与DUP括号内的数据无关,认为只是一组数据而已,若与DUP并列地定义了其它数据,就只能返回1。SIZE返回变量的字节数运算符格式:操作数 SIZE 变量功能:将代表变量的字节数赋给操作数。说明:就是返回LENGTHTYPE的结果。汇编程序将回送分配给该变量的字节数。只对DUP定义的变量有意义。,吉林大学远程教育学院,微机原理及汇编语言,主讲人:赵宏伟 教授 总学时:80 吉林大学计算机科学与技术学院,第 二十三 讲,二、表达式(5),例:DATA SEGMENT AT 10
23、00H ORG 3000HAA1 DW 100 DUP(0)BB1 DW 1,2CC1 DB ABCDDD1 DW 1000 DUP(2,3)EE1 DB 50 DUP(5,6)FF1 DW 1,2,100 DUP(?)GG1 DD 5 DUP(6 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATAHH1:MOV AX,DATA;AX=1000H MOV DS,AX MOV AX,SEG AA1;AX=1000H,AT定义 MOV BX,OFFSET AA1;BX=3000H MOV CL,TYPE AA1;CL=2,字类型 MOV CH,TY
24、PE CC1;CH=1,字节类型 MOV AL,TYPE GG1;AL=4,双字类型,二、表达式(6),MOV DX,LENGTH AA1;DX=100,元素个数 MOV AX,SIZE AA1;AX=200,元素个数类型 MOV DX,LENGTH BB1;DX=1,LENGTH只对DUP定义的变量有意义 MOV AX,SIZE BB1;AX=2 MOV DX,LENGTH CC1;DX=1 MOV AX,SIZE CC1;AX=1 MOV DX,LENGTH DD1;DX=1000 MOV AX,TYPE DD1;AX=2000 MOV DX,LENGTH EE1;DX=50 MOV AX
25、,SIZE EE1;AX=50 MOV DX,LENGTH FF1;DX=1 MOV AX,TYPE FF1;AX=2 MOV DX,LENGTH GG1;DX=5 MOV AX,TYPE GG1;AX=20 MOV AH,4CH INT 21HCODE ENDS END HH1,二、表达式(7),(6)属性运算符属性运算符:3个,临时改变类型属性运算符PTR、指定类型属性运算符THIS、定义类型属性运算符LABEL。PTR 临时改变类型属性运算符格式:类型 PTR 变量/标号功能:将PTR前面的类型临时赋给变量/标号,而原有段属性和偏移属性保持不变,其本身并不分配存储单元。说明:对于变量,可
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学课件 教学 课件 汇编语言 程序设计
链接地址:https://www.31ppt.com/p-5658604.html