精品PPT课件--第5章汇编语言程序设计.ppt
《精品PPT课件--第5章汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《精品PPT课件--第5章汇编语言程序设计.ppt(146页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品PPT课件-第5章汇编语言程序设计 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望5.15.1汇编语言概述汇编语言概述 1 1、机器语言机器语言二进制数形式的指令和数据。二进制数形式的指令和数据。B0 64 B0 64 是什么意思?这就是机器语言。既不直观是什么意思?这就是机器语言。既不直观,又不易理解和记忆又不易理解和记忆.2 2、汇编语言汇编语言-MOV AL MOV AL,64H64H ;很容易记忆理解,这就是很容易记忆理解,这就是助记符助记符。助记符助
2、记符用便于记忆的英语单词表示的指令操作码。它用便于记忆的英语单词表示的指令操作码。它反映了指令反映了指令的功能和主要特征的功能和主要特征,便于人们理解和记忆。便于人们理解和记忆。指令除了操作码以外指令除了操作码以外,还有一个操作数问题。还有一个操作数问题。操作数可能放在存储器中操作数可能放在存储器中,这就涉及操作数的地址。程序中遇到转移指这就涉及操作数的地址。程序中遇到转移指令或调用指令令或调用指令,也需要知道转移地址也需要知道转移地址,若采用具体地址就很不方便若采用具体地址就很不方便,一旦有错,一旦有错,改动也很麻烦。于是人们改动也很麻烦。于是人们采用标号或符号来代替地址。采用标号或符号来代
3、替地址。2 LP1LP1:mov ax,:mov ax,VARVAR loop loop LP1LP1 汇编语言汇编语言指令助记符指令助记符,符号地址,标号,伪指令等语言元素的集合符号地址,标号,伪指令等语言元素的集合以及这些元素使用的规则。以及这些元素使用的规则。用汇编语言编写的程序叫用汇编语言编写的程序叫汇编语言源程序汇编语言源程序。汇汇编编源源程程序序需需翻翻译译成成机机器器语语言言,变变成成可可执执行行文文件件,机机器器才才能能执执行行,这这个个翻翻译译过过程程叫叫汇汇编编。高高级级语语言言中中称称该该过过程程为为“解解释释”或或“编编译译”。执执行行翻译的程序称为翻译的程序称为“汇编
4、程序汇编程序”。源程序的编译程序源程序的编译程序汇编程序汇编程序汇编语言源程序汇编语言源程序机器语言目标程序机器语言目标程序3汇编语言程序设计与执行过程汇编语言程序设计与执行过程输入汇编语言源程序输入汇编语言源程序 源文件源文件.ASM汇编(编译)汇编(编译)目标文件目标文件.OBJ链接链接 可执行文件可执行文件.EXE调试调试 最终程序最终程序小汇编:小汇编:ASM 宏汇编:宏汇编:MASM3、高级语言:通用性强。例:、高级语言:通用性强。例:MATLAB、C、Pascal45.2 5.2 汇编语言源程序的格式汇编语言源程序的格式 汇编语言源程序通常由一个或几个程序模块组成汇编语言源程序通常
5、由一个或几个程序模块组成,每个模块一般由三每个模块一般由三个逻辑段组成:个逻辑段组成:数据段数据段存放数据、变量存放数据、变量 DATA SEGMENT DATA SEGMENT DATA EDNS DATA EDNS 堆栈段堆栈段堆栈区域堆栈区域 STACK SEGMENTSTACK SEGMENT STACK ENDS STACK ENDS 代码段代码段存放程序指令存放程序指令 CODE SEGMENT CODE SEGMENT CODE EDNSCODE EDNS5.2.1 分段结构分段结构5一个基本的汇编语言程序框架如下:stack SEGMENT PARA stack DB 100
6、DUP(stack)stack ENDS data SEGMENT data ENDS code SEGMENT ASSUME CS:code,DS:data,ES:data start:MOV AX,data MOV DS,AX MOV ES,AX MOV AH,4CH INT 21H code ENDS END start 堆栈段堆栈段数据段数据段代码段代码段6例:将两个五字节的例:将两个五字节的16进制数相加进制数相加DATA SEGMENT ;定义数据段;定义数据段DATA1 DB 0F8H,60H,0ACH,74H,3BH ;变量一,字节;变量一,字节DATA2 DB 0C1H,36
7、H,93H,0D5H,20H ;变量二,字节;变量二,字节DATA ENDS ;数据段结束;数据段结束CODE SEGMENT ;定义代码段;定义代码段 ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX ;初始化;初始化DS MOV CX,5 ;置循环次数送;置循环次数送CX MOV SI,0 ;(SI)=0 CLC ;(CF)=07LOOPER:MOV AL,DATA2SI ;取一个字节加数;取一个字节加数 ADC DATA1SI,AL ;与被加数相加,带进位加法;与被加数相加,带进位加法 INC SI ;SI加加1 DEC CX ;CX减减
8、1 JNZ LOOPER ;若;若(CX)不等于不等于0,转,转LOOPER MOV AH,4CH INT 21H ;返回;返回DOSCODE ENDS ;代码段结束;代码段结束 END START ;源程序结束;源程序结束注:注:MOV AH,4CH INT 21H ;DOS功能调用,结束正在运行的程序,返回功能调用,结束正在运行的程序,返回DOS85.2.2 5.2.2 汇编语言语句的类型和组成汇编语言语句的类型和组成汇编语言的语句有两种:汇编语言的语句有两种:指令性语句指令性语句由由80868086指令助记符构成的语句指令助记符构成的语句指令性语句指令性语句的格式为:的格式为:标号标号:
9、指令助记符指令助记符 目的操作数,源操作数目的操作数,源操作数 ;注释注释注:各部分之间至少要用一个空格作为分隔符。注:各部分之间至少要用一个空格作为分隔符。l指令性语句指令性语句由由CPU执行,每一条指令性语句都有一条机器码指令与其对应执行,每一条指令性语句都有一条机器码指令与其对应 指令性语句汇编时生成机器码指令性语句汇编时生成机器码;例:例:LOOPER:MOV AL,DATASILOOPER:MOV AL,DATASI9汇编语言的语句有两种:汇编语言的语句有两种:指示性语句指示性语句由伪指令构成的语句由伪指令构成的语句指示性语句指示性语句的格式为:的格式为:名字名字 伪指令伪指令 操作
10、数操作数1,1,操作数操作数2,2,操作数操作数n n ;注释注释注:各部分之间至少要用一个空格作为分隔符。注:各部分之间至少要用一个空格作为分隔符。l指示性语句指示性语句由汇编程序执行。它指出汇编程序应如何对源程序进行汇编,由汇编程序执行。它指出汇编程序应如何对源程序进行汇编,如何定义变量、分配存储单元以及指示程序开始和结束等。指示性语句无如何定义变量、分配存储单元以及指示程序开始和结束等。指示性语句无机器码指令与其相对应。机器码指令与其相对应。指示性语句汇编时指示性语句汇编时不不生成机器码。生成机器码。例:例:DATA DB 0FBH,60HDATA DB 0FBH,60H10标号有三个属
11、性:标号有三个属性:段地址段地址:即标号所在段的段地址;:即标号所在段的段地址;程序中引用一个标号,该标号的段地址应在程序中引用一个标号,该标号的段地址应在CSCS中。中。偏移量偏移量:标号所代表存储单元的段内偏移地址;:标号所代表存储单元的段内偏移地址;1616位的无符号数位的无符号数 类类 型型:NEARNEAR或或FARFAR:NEARNEAR表示标号所在语句与转移指令表示标号所在语句与转移指令/调用指令在同一码段内调用指令在同一码段内,跳转时只需改变跳转时只需改变IPIP即可。即可。FARFAR标号所在语句与转移指令标号所在语句与转移指令/调用指令不在同一代码段内。调用指令不在同一代码
12、段内。若没有对类型进行说明若没有对类型进行说明,默认为默认为NEARNEAR。标号通常作为标号通常作为转移指令转移指令或或CALLCALL指令指令的转移地址。的转移地址。5.2.3 5.2.3 名字名字11汇编语言的一个实例汇编语言的一个实例:hello.asm:hello.asm datadatadatadata SEGMENT SEGMENT SEGMENT SEGMENTHello Hello DB DB Hello,Hello,world!world!,0DH,0AH,0DH,0AH,$data data data data ENDSENDSENDSENDSprogprogprogpr
13、og SEGMENT SEGMENT SEGMENT SEGMENT ASSUMEASSUME CS:CS:progprog,DS:,DS:datadatastartstart:MOV AX,:MOV AX,datadata MOV DS,AX MOV DS,AX LEA DX,LEA DX,hellohello;取字符串首地址取字符串首地址 MOV AH,9MOV AH,9 INT 21H INT 21H;显示字符串显示字符串 MOV AH,4CH MOV AH,4CH INT 21H INT 21H;退回退回DOSDOSprogprogprogprog ENDS ENDS ENDS END
14、S END END END END startstartstartstart名字标号12 5.2.4 5.2.4 助记符和伪操作助记符和伪操作助记符:助记符:80868086、8088CPU8088CPU指令的助记符,例如:指令的助记符,例如:MOV,ADD,MULMOV,ADD,MUL等等伪操作指令:如伪操作指令:如DBDB、SEGMENTSEGMENT、ENDSENDS、ASSUMEASSUME、ENDSENDS5.2.5 5.2.5 操作数操作数操作数包括操作数包括常量常量、寄存器寄存器、标号标号、变量变量及及表达式表达式。1.1.常量常量二进制数二进制数,以以B B结尾。如结尾。如01
15、001101B01001101B。十进制数十进制数,如如8585。八进制数八进制数,以以Q Q结尾。如结尾。如174Q174Q。13 十六进制数十六进制数,以以H H结尾。第结尾。第1 1个数字为个数字为A-FA-F时,时,前面应加前面应加0 0,如,如0 0F160HF160H。字符串:用引号括起来的字符串:用引号括起来的1 1个或多个字符。如个或多个字符。如ERROR!,a,ERROR!,a,汇编汇编时被时被 翻译成对应的翻译成对应的ASCIIASCII码码4 45H,52H,52H,4FH,52H,21H5H,52H,52H,4FH,52H,21H和和61H61H。十进制科学计数法。如:
16、十进制科学计数法。如:8.75E-48.75E-4十六进制实数。如:十六进制实数。如:10A4E87R10A4E87R2 2、寄存器、寄存器8 8位寄存器:位寄存器:AHAH、ALAL、BHBH、BLBL、CHCH、CLCL、DHDH、DLDL1616位寄存器:位寄存器:AXAX、BXBX、CXCX、DXDX、SISI、DIDI、BPBP、SPSP、DSDS、CSCS、SSSS、DSDS3 3、标号:代表一条指令的、标号:代表一条指令的符号地址符号地址14 变量名变量名是存储单元是存储单元(数据区数据区)的符号地址或名字。的符号地址或名字。变量也有三个属性变量也有三个属性:段地址段地址变量所在
17、段的段地址变量所在段的段地址偏移量偏移量变量单元地址与段首地址之间的位移量。变量单元地址与段首地址之间的位移量。类类 型型有有BYTEBYTE、WORDWORD和和DWORDDWORD三种。三种。变量在程序中作为变量在程序中作为存储器操作数存储器操作数被引用。被引用。标号和变量名的使用规则标号和变量名的使用规则组成:组成:A-Z(不不分大小写分大小写),0-9,?._$不不能以数字开头能以数字开头长度小于长度小于31个字符个字符不不能与保留字能与保留字(指令助记符、伪指令、预定义符号等指令助记符、伪指令、预定义符号等)重名重名不不能重复定义能重复定义例如:例如:正确的:正确的:LP1,AGAI
18、N,NEXT,_GO,OK_1 错误的:错误的:4M,LOOP,AAA,#HELP,+ONE4.4.变量变量-即内存中的存储单元或数据区。即内存中的存储单元或数据区。155.5.表达式表达式表达式是常数、寄存器、标号、变量与运算符的组合。表达式是常数、寄存器、标号、变量与运算符的组合。有有数字表达式数字表达式和和地址表达式地址表达式两种。两种。汇编时按优先规则对表达式进行计算,计算出具体的数值或地址。运汇编时按优先规则对表达式进行计算,计算出具体的数值或地址。运行时不能改变。行时不能改变。表达式中的运算符有表达式中的运算符有6 6类:算术、逻辑、关系、取地址、属性、杂类。类:算术、逻辑、关系、
19、取地址、属性、杂类。(1)1)算术运算符算术运算符 +、-、*、/,MODMOD用于数字表达式用于数字表达式,例:例:MOV AX,4*1024MOV AX,4*1024汇编后的形式为汇编后的形式为:MOV AX,4096 MOV AX,4096 用于地址表达式用于地址表达式,例例:LEA SI,TAB+3LEA SI,TAB+3若若TABTAB的偏移地址为的偏移地址为1000H1000H,则汇编后的形式为:,则汇编后的形式为:LEA SI,1003H LEA SI,1003H 16逻辑运算符只能用于数字表达式中。逻辑运算符只能用于数字表达式中。例:例:MOVMOVCL,36H AND 0FH
20、CL,36H AND 0FH 经汇编后:经汇编后:MOV CL,06HMOV CL,06H注意,不要把逻辑运算符与逻辑运算指令混淆:注意,不要把逻辑运算符与逻辑运算指令混淆:例:例:AND AX,AND AX,3FC0H AND 0FF00H3FC0H AND 0FF00H汇编后源操作数被翻译为:汇编后源操作数被翻译为:3F00H3F00H,所以上述指令与,所以上述指令与AND AX,3F00HAND AX,3F00H等价。等价。(2)2)逻辑运算符逻辑运算符 AND AND、OROR、XORXOR、NOTNOT关系运算的结果是一个逻辑值:关系运算的结果是一个逻辑值:真真或或假假 关系为真关系
21、为真,结果为全结果为全1 1;关系为假关系为假,结果为全结果为全0 0例:例:MOV BX,PORT GT 300HMOV BX,PORT GT 300H 若若PORTPORT的值大于的值大于300H,300H,则汇编后为:则汇编后为:MOV BX,0FFFFHMOV BX,0FFFFH 否则汇编后为:否则汇编后为:MOV BX,0MOV BX,0(3)3)关系运算符关系运算符EQEQ、NENE、LTLT、GTGT、LELE、GEGE17OFFSET:取变量:取变量/标号的偏移地址标号的偏移地址注意,以下指令的异同:注意,以下指令的异同:MOV BX,OFFSET VAR LEA BX,VAR
22、OFFSET只能取静态的偏移地址;只能取静态的偏移地址;LEA指令即可取静态的偏移地址,也可取动态的偏移地址。指令即可取静态的偏移地址,也可取动态的偏移地址。SEG:取变量:取变量/标号的段地址。标号的段地址。例:例:MOV AX,SEG DATA MOV DS,AX ;取变量;取变量DATA的段地址的段地址(4)4)分析运算符和合成运算符分析运算符和合成运算符18TYPE 取变量的类型(取变量的类型(1,2,4)VAR DW?;字字ARRAY DD 10 DUP(?);双字双字STR DB This is a test ;字节字节 MOV AX,TYPE VAR ;(AX)=2 MOV BX
23、,TYPE ARRAY ;(BX)=4 MOV CX,TYPE STR ;(CX)=1LENGTH 取所定义变量的长度(即变量中元素的个数)取所定义变量的长度(即变量中元素的个数)未使用重复操作符未使用重复操作符DUP,变量个数为,变量个数为1;否则如上例中的变量否则如上例中的变量ARRAY的个数为的个数为10;19SIZE 取所定义存储区的字节数(取所定义存储区的字节数(=TYPE*LENGTH)例:例:VAR DW 1,2,3,4,5 则则 TYPE VAR=2,LENGTH VAR=1,SIZE VAR =2合成运算符合成运算符PTR:用来指定地址操作数的类型用来指定地址操作数的类型格式
24、:格式:PTR 类型类型BYTE,WORD,DWORD,NEAR,FARBYTE、WORD、DWORD 用于描述数据存储单元用于描述数据存储单元(变量变量)地址地址NEAR、FAR 用于描述转移、调用的目的地址用于描述转移、调用的目的地址例:例:MOVMOV BYTE PTRDI,0;BYTE PTRDI,0;字节类型字节类型 MOV MOV WORD PTRDI,0;WORD PTRDI,0;字类型字类型 MOVMOV DI,0B5H ;DI,0B5H ;类型不定类型不定20PTRPTR也可用来进行强制类型转换也可用来进行强制类型转换例:例:STR1 DW STR1 DW?;STR1 ;ST
25、R1定义为字类型定义为字类型 MOV MOVAX,STR1 ;AX,STR1 ;合法合法 MOV MOVAL,STR1 ;AL,STR1 ;非法非法 MOV AL,MOV AL,BYTE PTRBYTE PTR STR1;STR1;合法合法21(5)5)其他运算符其他运算符方括号方括号:存储器地址:存储器地址MOV CL,BX ;MOV CL,BX ;间址寻址间址寻址MOV AL,SI+5 ;MOV AL,SI+5 ;变址寻址变址寻址段超越运算符:段超越运算符:MOV AX,ES:DIMOV AX,ES:DIHIGHHIGH、LOWLOW:获取数值或地址表达式的高位和低位字节:获取数值或地址表
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 PPT 课件 汇编语言 程序设计
限制150内