汇编语言程序设计ppt课件.pptx
《汇编语言程序设计ppt课件.pptx》由会员分享,可在线阅读,更多相关《汇编语言程序设计ppt课件.pptx(91页珍藏版)》请在咨信网上搜索。
计算机硬件技术基础计算机硬件技术基础徐彬徐彬 2程序设计语言概述程序设计语言概述 v程序设计语言是专门为计算机编程所配置的语言。它们按照形式与功能的不同可分为:机器语言(Machine Language)汇编语言(Assembler Language)高级语言(High Level Language)3机器语言v计算机能够直接识别的数据是由二进制数0和1组成的代码。机器指令就是用二进制代码组成的指令,一条机器指令控制计算机完成一个基本操作。v用机器语言编写的程序是计算机惟一能够直接识别并执行的程序,而用其他语言编写的程序必须经过翻译才能变换成机器语言程序,所以,机器语言程序被称为目标程序。v机器语言主要具有下列两个特点:机器语言与机器密切相关 机器语言设计程序非常困难,但容易实现高性能程序设计语言概述程序设计语言概述 4汇编语言v为了克服机器语言的缺点,人们采用助记符表示机器指令的操作码,用变量代替操作数的存放地址等,这样就形成了汇编语言。所以汇编语言是一种用符号书写的、基本操作与机器指令相对应的、并遵循一定语法规则的计算机语言。v用汇编语言编写的程序称为汇编源程序。v汇编语言是一种符号语言,比机器语言容易理解和掌握,也容易调试和维护。但是,汇编语言源程序要翻译成机器语言程序才可以由计算机执行。这个翻译的过程称为“汇编”,这种把汇编源程序翻译成目标程序的语言加工程序称为汇编程序。程序设计语言概述程序设计语言概述 5高级语言v机器语言和汇编语言以外的程序设计语言统称高级语言。其特点是更加接近自然语言和惯用的数学表达形式,与计算机硬件结构无关,因而便于使用,便于交流和推广。v总之,高级语言编程效率高,但运行效率低。v高级语言可分成编译型和解释型高级语言,分别使用编译程序和解释程序将源程序翻译成机器语言程序,然后交计算机执行。程序设计语言概述程序设计语言概述 6语言汇编语言高级语言代码效率高较低源程序可读性较差好对硬件的依附性高低程序员硬件知识高较低应用范围较广广泛汇编语言和高级语言的比较:汇编语言和高级语言的比较:程序设计语言概述程序设计语言概述 71汇编程序汇编程序 汇编是把汇编语言程序翻译成机器语言描述的目标程序汇编是把汇编语言程序翻译成机器语言描述的目标程序的过程。的过程。汇编程序是完成汇编任务的程序。汇编程序是完成汇编任务的程序。2连接程序连接程序 连接程序的主要功能是实现多个目标文件及库文件的连连接程序的主要功能是实现多个目标文件及库文件的连接,并完成浮动地位的重定位。接,并完成浮动地位的重定位。从汇编语言源程序到可执行程序的生成过程如图所示。从汇编语言源程序到可执行程序的生成过程如图所示。程序设计语言概述程序设计语言概述 8汇编语言程序开发过程汇编语言程序开发过程源程序源程序.asm.asm目标程序目标程序.obj.obj可执行程序可执行程序.exe.exe运行结果运行结果编辑编辑文本编辑器文本编辑器汇汇编编连接连接linklinkDOSDOS下执行下执行debugdebug执执行行masmmasm非编译非编译可执行程序可执行程序转换转换exe2binexe2bin程序设计语言概述程序设计语言概述 9汇编语言程序基本结构汇编语言程序基本结构说明:说明:除代码段外,其余段可缺省除代码段外,其余段可缺省;各种段均可有多个,用汇编语各种段均可有多个,用汇编语言指令可指定段与段寄存器关系,言指令可指定段与段寄存器关系,数据段数据段附加段附加段(段寄存器不同段寄存器不同);各段无顺序要求;各段无顺序要求;通过通过ENDEND指明模块到此指明模块到此结束结束,程序从程序从“标号标号”处处开始开始执行。执行。数据段数据段堆栈段堆栈段附加段附加段代码段代码段END END 标号标号主模块主模块(1(1个个)数据段数据段附加段附加段代码段代码段ENDEND从模块从模块(n(n个个)堆栈段堆栈段8086/8088汇编源程序汇编源程序 10 汇编语言程序举例:汇编语言程序举例:DATA SEGMENTDATA SEGMENT BUF1 DB 34H BUF1 DB 34H BUF2 DB 2AH BUF2 DB 2AH SUM DB?SUM DB?DATA ENDSDATA ENDSSSEG SEGMENT STACKSSEG SEGMENT STACK DB 512 DUP(0)DB 512 DUP(0)SSEG ENDSSSEG ENDSCODE SEGMENTCODE SEGMENT ASSUME CS:CODE,DS:DATA SS:SSEG ASSUME CS:CODE,DS:DATA SS:SSEGSTART:MOV AX,DATASTART:MOV AX,DATA MOV DS,AX MOV DS,AX MOV AL,BUF1 MOV AL,BUF1 ADD AL,BUF2 ADD AL,BUF2 MOV SUM,AL MOV SUM,AL MOV AH,4CH MOV AH,4CH INT 21H INT 21HCODE ENDSCODE ENDS END START END START8086/8088汇编源程序汇编源程序 118086/8088汇编源程序汇编源程序v汇编程序在结构和语句格式上有以下几个特点:汇编程序一般由若干段组成,每个段都有一个名字,以SEGMENT作为段的开始,以ENDS作为段的结束,前面都要冠以相同的名字。从段的性质上看,可分为代码段、堆栈段、数据段和附加段4种。数据段存放原始数据和运算结果,堆栈段用于存放堆栈数据,代码段存放实现CPU要执行的指令。汇编程序每一行只有一条语句,且不能超过128个字符。整个源程序必须以END语句来结束,END后面的标号表示该程序执行时的起始地址。128086/8088汇编源程序汇编源程序v汇编语言语句的类型汇编语言的语句可分为两大类:指令性语句指令性语句是CPU要执行的语句,汇编程序将产生与它一一对应的机器目标代码如 MOV DS,AX指示性语句(又称为伪指令语句)指示性语句是只起说明作用而不能执行的语句,它在汇编时只提供一些定义符号、分配存储单元等相关信息如 DATA SEGMENT13v汇编语言语句格式指令性语句的格式标号:前缀指令助记符操作数表;注释标号方便转移指令寻找转移目标地址前缀配合其他指令 如串操作指令中的REP助记符即具体指令操作数表是由逗号隔开的多个操作数注释是说明文字,提高程序可读性伪指令语句的格式名字伪操作命令操作数表;注释8086/8088汇编源程序汇编源程序 148086/8088汇编语言的数据项与表达式汇编语言的数据项与表达式 v(1)常数)常数数值常数:数值常数:二二/八八/十十/十六进制数分别以十六进制数分别以B/Q/D(或缺省结或缺省结尾字符尾字符)/H结尾,如结尾,如001B、35Q、98D或或98、0A2H。字符串常数:字符串常数:用单引号括起来的一个或多个字符,如用单引号括起来的一个或多个字符,如A、AB;字符用;字符用ASCII码形式存储。码形式存储。应用:应用:作立即数、位移量、赋初值用。作立即数、位移量、赋初值用。v(2)变量)变量组成:组成:在除代码段外的段中定义,只由名字组成。在除代码段外的段中定义,只由名字组成。属性:属性:段段 属属 性性变量变量(定义时定义时)所在段的起始地址;所在段的起始地址;偏移属性偏移属性变量与所在段起始地址间字节数;变量与所在段起始地址间字节数;类型属性类型属性表明为它所保留的主存字节数,表明为它所保留的主存字节数,DB/DW/DD/DQ/DT对应对应1/2/4/8/10字节。字节。158086/8088汇编语言的数据项与表达式汇编语言的数据项与表达式v(3)数字表达式)数字表达式 为常数、寄存器名、标号为常数、寄存器名、标号/变量与运算符的组合。变量与运算符的组合。运算符运算符有算术、逻辑、关系、数值返回、属性有算术、逻辑、关系、数值返回、属性5种。种。种类种类运算符运算符示例示例算术算术+、/、MODMODMOV AL,17/5 MOV AL,17/5 ;AL=3AL=3逻辑逻辑ANDAND、OROR、XORXOR、NOTNOTMOV AL,VAL AND 01HMOV AL,VAL AND 01H;AL=01AL=01或或00H00H关系关系EQEQ、NENE、LTLT、GTGT、LELE、GEGEMOV AX,DAT GT 0CH MOV AX,DAT GT 0CH;=0FFFFH=0FFFFHMOV AL,DAT LE 0CH MOV AL,DAT LE 0CH;=00H=00H数值数值回送回送SEGSEG、OFFSETOFFSET、TYPETYPE、LENGTHLENGTH、SIZESIZE属性属性PTRPTR、SHORTSHORT、段操作符、段操作符、THISTHIS、HIGHHIGH、LOWLOW16v(4)数值返回运算符)数值返回运算符运算符运算符作用对象作用对象功能功能地址地址回送回送SEGSEG标号或变量标号或变量返回其所在段的返回其所在段的段基址值段基址值OFFSETOFFSET标号或变量标号或变量返回其返回其相对相对段段基址的基址的偏移量偏移量符号符号特征特征回送回送TYPETYPE标号或变量标号或变量返回用数字表示的返回用数字表示的类型属性类型属性LENGTHLENGTH变量变量若变量用若变量用DUPDUP定义,则返回定义定义,则返回定义元元素个数素个数,否则返回,否则返回1 1SIZESIZE变量变量返回用返回用DUPDUP定义的定义的存储空间存储空间(LENGTH*TYPE(LENGTH*TYPE之积之积)TYPETYPE对象种类对象种类TYPETYPE对象类型对象类型TYPETYPE运算结果运算结果变量变量DB/DW/DD/DQ/DTDB/DW/DD/DQ/DT1/2/4/8/101/2/4/8/10标号标号NEAR/FARNEAR/FAR-1/-2-1/-28086/8088汇编语言的数据项与表达式汇编语言的数据项与表达式17 例:例:D_SEG SEGMENTD_SEG SEGMENT NUM1 DB 10 DUP(10)NUM1 DB 10 DUP(10);数据定义;数据定义 NUM2 DW 20 DUP(0,4 DUP(2)NUM2 DW 20 DUP(0,4 DUP(2)NUM3 DB 10H,5 DUP(?)NUM3 DB 10H,5 DUP(?)NUM4 DB STRING NUM4 DB STRING D_SEG ENDS D_SEG ENDS ;假设;假设DSDS指向指向D_SEGD_SEG段段 MOV AX,MOV AX,SEGSEGSEGSEG NUM1 NUM1 ;等价于;等价于AX(DS)AX(DS)MOV BX,MOV BX,SEGSEGSEGSEG NUM2 NUM2 ;AXAX与与BXBX值相同值相同 MOV SI,MOV SI,OFFSETOFFSETOFFSETOFFSET NUM1 NUM1 ;NUM1NUM1相对于段的偏移量相对于段的偏移量SISI MOV DI,MOV DI,OFFSETOFFSETOFFSETOFFSET NUM2 NUM2 ;等价于;等价于LEA DI,NUM2LEA DI,NUM2 MOV AH,MOV AH,TYPETYPETYPETYPE NUM2 NUM2 ;2AH2AH MOV BH,MOV BH,LENGTHLENGTHLENGTHLENGTH NUM2 NUM2 ;20BH20BH(指最外层参数)(指最外层参数)MOV AL,MOV AL,LENGTHLENGTHLENGTHLENGTH NUM3 NUM3 ;1AL(1AL(指第一个参数指第一个参数)MOV CL,MOV CL,SIZESIZESIZESIZE NUM2 NUM2 ;20*2CL20*2CL MOV CH,MOV CH,SIZESIZESIZESIZE NUM4 NUM4 ;1*1CH1*1CH8086/8088汇编语言的数据项与表达式汇编语言的数据项与表达式18(5)属性运算符)属性运算符 PTRPTR格式:格式:PTRPTR 表达式表达式 PTRPTR功能:功能:用新类型取代表达式默认的数据类型用新类型取代表达式默认的数据类型 PTRPTR说明:说明:表达式为表达式为MEMMEM操作数或变量时,类型可为操作数或变量时,类型可为BYTEBYTE、WORDWORD、DWORDDWORD,表达式为标号时,类型可为,表达式为标号时,类型可为NEARNEAR、FARFAR;仅改变数据类型属性,且仅在本语句有效。仅改变数据类型属性,且仅在本语句有效。PTRPTR示例示例:DATA1 DB 10H,20H,30HDATA1 DB 10H,20H,30H DATA2 DW 0123H DATA2 DW 0123H MOV AX,MOV AX,WORD PTRWORD PTR DATA1 DATA1 ;(AX)2010H(AX)2010H MOV BL,MOV BL,BYTE PTRBYTE PTR DATA2 DATA2 ;(BL)23H(BL)23H MOV MOV BYTE PTRBYTE PTRSI,60H SI,60H ;字节传送;字节传送 SUBSUB WORD PTRWORD PTRBX,36H BX,36H ;字数据相减;字数据相减 JMP JMP FAR PTRFAR PTR SUB_P1 SUB_P1 ;段间直接转移;段间直接转移 JMP JMP WORD PTRWORD PTRBX BX ;段内间接转移;段内间接转移8086/8088汇编语言的数据项与表达式汇编语言的数据项与表达式19v(6)各运算符的优先级)各运算符的优先级优先级优先级运算符运算符类别类别1 1()()、LENGTHLENGTH、SIZESIZE数值回送运算符数值回送运算符2 2OFFSETOFFSET、SEGSEG、TYPETYPE、PTRPTR属性和数值回送运属性和数值回送运算符算符3 3*、/、MODMOD算术运算符算术运算符4 4+、-算术运算符算术运算符5 5EQEQ、NENE、LTLT、GTGT、LELE、GEGE关系运算符关系运算符6 6NOTNOT逻辑运算符逻辑运算符7 7ANDAND逻辑运算符逻辑运算符8 8OROR、XORXOR逻辑运算符逻辑运算符8086/8088汇编语言的数据项与表达式汇编语言的数据项与表达式20处理器选择伪指令 (8086无此指令)数据定义伪指令段定义伪指令程序开始和结束伪指令表达式赋值伪指令其他伪指令(地址计数、对准等)过程定义伪指令8086/8088汇编语言的伪指令汇编语言的伪指令 211 1、处理器选择伪指令、处理器选择伪指令 格式格式:.8086 .8086 选择选择80868086指令系统指令系统 .286 .286 选择选择8028680286指令系统指令系统 .286P .286P 选择保护方式下的选择保护方式下的8028680286指令系统指令系统 .386 .386 选择选择8038680386指令系统指令系统 .386P .386P 选择保护方式下的选择保护方式下的8038680386指令系统指令系统 .486 .486 选择选择8048680486指令系统指令系统 .486P .486P 选择保护方式下的选择保护方式下的8048680486指令系统指令系统 .586 .586 选择选择PentiumPentium指令系统指令系统 .586P .586P 选择保护方式下选择保护方式下PentiumPentium的指令系统的指令系统8086/8088汇编语言的伪指令汇编语言的伪指令 222 2、数据定义伪指令、数据定义伪指令(1 1)数据定义)数据定义 格式:格式:变量名变量名 类型定义符类型定义符 参数参数,参数参数 操作:操作:为变量分配存储空间,并置初值到存储单元为变量分配存储空间,并置初值到存储单元说明:说明:变量类型变量类型数值变量和字符串变量;数值变量和字符串变量;类型定义符类型定义符可为可为DB/DW/DD/DF/DQ/DT,表示每个参数占,表示每个参数占1/2/4/6/8/10字节存储空间,字节存储空间,字符串变量只能用字符串变量只能用DB类型定义类型定义;参数参数可为常数、表达式、可为常数、表达式、?表达式、字符串、表达式、字符串、DUP表达式表达式 字符串用单引号括起来,如字符串用单引号括起来,如ABCDE DUP表达式格式:表达式格式:n DUP(参数参数,参数参数),n表示重复次数。表示重复次数。8086/8088汇编语言的伪指令汇编语言的伪指令 23例:例:X1 DB 40H X1 DB 40H ;为;为X1X1分配分配1 1个字节,初值个字节,初值40H40H X2 DW 10*10 X2 DW 10*10 ;为;为X2X2分配分配2 2个字节,初值个字节,初值100(0064H)100(0064H)X3 DB 10,20,30 X3 DB 10,20,30 ;为;为X3X3分配分配3 3个字节,初值为个字节,初值为10,20,3010,20,30 Y1 DB 20H,?Y1 DB 20H,?;为;为Y1Y1分配分配2 2个字节,第个字节,第2 2个字节无初值个字节无初值 S1 DB S1 DB HELHEL ;S1S1占占3 3个字节,值为个字节,值为ASCIIASCII码码 S2 DB S2 DB H H,E E,L L ;S2S2与与S1S1相同相同 S3 DW S3 DW HEHE ;非字符串定义;非字符串定义 VAR1 DW 2 DUP(2,4),1476HVAR1 DW 2 DUP(2,4),1476H VAR2 DB 2 DUP(?,2 DUP VAR2 DB 2 DUP(?,2 DUP(A A,B B)EEHHS3S3?AABBAABB?AABBAABBVAR2VAR202H02H00H00H04H04H00H00H02H02H00H00H04H04H00H00H76H76H14H14HVAR1VAR1HHEELLS1S1大大小小8086/8088汇编语言的伪指令汇编语言的伪指令 24(2 2)数据别名定义)数据别名定义 格式:格式:变量或标号变量或标号 LABEL LABEL 操作:操作:给变量给变量/标号重新定义别名和改变标号重新定义别名和改变别名属性别名属性 说明:说明:不分配新的存储空间。不分配新的存储空间。示例示例1 1:BARRAY LABEL BYTEBARRAY LABEL BYTE ARRAY DW 100 DUP(0)ARRAY DW 100 DUP(0)ADD AL,ADD AL,BARRAYBARRAY4949 ;第;第5050个字节,个字节,字节相加字节相加 ADD AX,ADD AX,ARRAYARRAY98 98 ;第;第50个字,个字,字相加字相加示例示例2 2:SUBPF LABEL FARSUBPF LABEL FAR SUBPSUBP:SUB AX,AXSUB AX,AX JMP JMP SUBPSUBP ;段内段内 FARPRO PROC FAR FARPRO PROC FAR JMP JMP SUBPFSUBPF ;段间段间8086/8088汇编语言的伪指令汇编语言的伪指令 253 3、段定义伪指令、段定义伪指令(1 1)段定义伪指令)段定义伪指令 格式:格式:段名段名 SEGMENTSEGMENT定位类型定位类型组合类型组合类型类别名类别名 ;语句体;语句体 段名段名 ENDSENDS 操作:操作:定义逻辑段定义逻辑段 说明:说明:代码段的语句体为指令和伪指令,其它段为伪指令。代码段的语句体为指令和伪指令,其它段为伪指令。8086/8088汇编语言的伪指令汇编语言的伪指令 268086/8088汇编语言的伪指令汇编语言的伪指令 a.a.定位类型:定位类型:指定当前段起始地址的性质指定当前段起始地址的性质 PARAPARA 起始地址的低起始地址的低4 4位为位为0H0H,即,即1616的倍数;的倍数;PAGEPAGE 起始地址的低起始地址的低8 8位为位为00H,00H,即即256256的倍数的倍数 BYTEBYTE 可从任意地址开始可从任意地址开始 WORDWORD 当前段的起始地址为偶地址当前段的起始地址为偶地址 默认项是默认项是默认项是默认项是PARAPARAPARAPARA 27 b.b.组合类型:组合类型:指明程序连接时,段的合并方法指明程序连接时,段的合并方法 PRIVATEPRIVATE 不与其他模块中任何段连接或重叠不与其他模块中任何段连接或重叠 PUBLICPUBLIC 不同模块中不同模块中PUBLICPUBLIC类型的同名段类型的同名段连接连接在一起,在一起,形成一个单一的段形成一个单一的段(段长为段长为)COMMONCOMMON 不同模块中不同模块中COMMONCOMMON类型的同名段类型的同名段重叠重叠在一起,在一起,共享相同的存储区共享相同的存储区(共享存储区长度为共享存储区长度为max)max)STACKSTACK 功能同功能同PUBLICPUBLIC,但新段为堆栈段,但新段为堆栈段(段长为段长为)默认项是默认项是默认项是默认项是PRIVATEPRIVATEPRIVATEPRIVATE8086/8088汇编语言的伪指令汇编语言的伪指令28 c.c.类别名:类别名:指明程序连接时,段间次序的确定方法指明程序连接时,段间次序的确定方法 LINKLINK程序将各模块相同程序将各模块相同类别名类别名的各段依次序连续存放在的各段依次序连续存放在内存中,但各段相互独立。内存中,但各段相互独立。缺省项为空缺省项为空缺省项为空缺省项为空 段合并的优先级确定段间次序的优先级。段合并的优先级确定段间次序的优先级。段合并的优先级确定段间次序的优先级。段合并的优先级确定段间次序的优先级。8086/8088汇编语言的伪指令汇编语言的伪指令29 段定义伪指令示例:段定义伪指令示例:D_SEG D_SEG SEGMENTSEGMENT DATADATA NUM1 DB 10 DUP(?)NUM1 DB 10 DUP(?)D_SEG D_SEG ENDSENDS S_SEG SEGMENT S_SEG SEGMENT PARAPARA STACK STACK DW 100 DUP(?)DW 100 DUP(?)S_SEG ENDS S_SEG ENDS E_SEG SEGMENT PARA E_SEG SEGMENT PARA DATADATA STRING DB HELLO STRING DB HELLO E_SEG ENDS E_SEG ENDS ;连接;连接(LINK)(LINK)时,时,D_SEGD_SEG段与段与E_SEGE_SEG段是连续的段是连续的8086/8088汇编语言的伪指令汇编语言的伪指令30(2 2)指定段寄存器伪指令)指定段寄存器伪指令 格式:格式:ASSUME ASSUME 段寄存器段寄存器:段名段名 ,段寄存器段寄存器:段名段名 操作:操作:明确段和段寄存器的关系明确段和段寄存器的关系 说明:说明:代码段代码段中中中中必须至少有一个必须至少有一个ASSUMEASSUME语句,语句,ASSUMEASSUME可以可以出现在源程序中的任何地方;出现在源程序中的任何地方;对同一段寄存器重复指定时最后一个有效。对同一段寄存器重复指定时最后一个有效。8086/8088汇编语言的伪指令汇编语言的伪指令318086/8088汇编语言的伪指令汇编语言的伪指令 a.CS a.CS的指定的指定 必须指定必须指定CSCS,最后一次指定必须在开始执行段中,最后一次指定必须在开始执行段中,且段名为开始执行段的段名。且段名为开始执行段的段名。CS=ENDCS=END指令中标号指令中标号/过程名对应的段过程名对应的段 IP=ENDIP=END指令中标号指令中标号/过程名在段内的偏移地址过程名在段内的偏移地址32 b.DS b.DS、ESES的指定的指定 对对DSDS、ESES的的指定无效指定无效(文件加载后自动指向程序前缀文件加载后自动指向程序前缀),需要在程序中显式赋值,需要在程序中显式赋值(指定指定)。程序前缀程序前缀(PSP)(PSP)用户程序与命令行间的接口,占用户程序与命令行间的接口,占256256字节字节程序前缀区程序前缀区程序区程序区EXEEXE文件加载后结构文件加载后结构CSCSIP=?IP=?DSDS、ESESSSSSSP=?SP=?思考:思考:文件加载时,如何得到文件加载时,如何得到CSCS、SSSS值?值?文件头文件头装入模块装入模块EXEEXE文件结构文件结构格式化区格式化区重定位表重定位表程序程序代码代码重定位表重定位表代码长度,代码长度,各段各段 偏移地址、长度等偏移地址、长度等100H100H8086/8088汇编语言的伪指令汇编语言的伪指令33对对DSDS、ESES赋值赋值(指定指定)示例:示例:D_SEG SEGMENT D_SEG SEGMENT ;数据段;数据段 X DW?,4000H,100 DUP(?)X DW?,4000H,100 DUP(?)D_SEG ENDS D_SEG ENDS E_SEG SEGMENT E_SEG SEGMENT ;附加段;附加段 STRING DB EXAMPLESTRING DB EXAMPLE E_SEG ENDS E_SEG ENDS C_SEG SEGMENT PARA CODE C_SEG SEGMENT PARA CODE ASSUME CS:C_SEG,DS:D_SEG,ES:E_SEG ASSUME CS:C_SEG,DS:D_SEG,ES:E_SEG START:START:MOV AX,D_SEG MOV AX,D_SEG MOV DS,AX MOV DS,AX ;数据段基址;数据段基址DSDS MOV AX,E_SEG MOV AX,E_SEG MOV ES,AX MOV ES,AX ;附加段基址;附加段基址ESES8086/8088汇编语言的伪指令汇编语言的伪指令34c.SSc.SS的指定的指定自动指定自动指定当有组合类型为当有组合类型为STACKSTACK的段时,的段时,SSSS自动指向该段;自动指向该段;此时用此时用ASSUMEASSUME指定指定SSSS时,时,SP=SP=段长;否则段长;否则SP=0000HSP=0000H自动指定示例:自动指定示例:S_SEG SEGMENT PARA STACK DW 100 DUP(?)S_SEG ENDS思考:思考:若有多个若有多个STACK属性的堆栈段,结果如何?属性的堆栈段,结果如何?缺省指定缺省指定当无组合类型为当无组合类型为STACK的段时,无论是否用的段时,无论是否用ASSUME设定,设定,SS自动指向程序区开始自动指向程序区开始(SP=0000H);思考:思考:若未定义堆栈时,使用堆栈的结果?若未定义堆栈时,使用堆栈的结果?8086/8088汇编语言的伪指令汇编语言的伪指令35 显式指定显式指定使用使用MOV指令,使指令,使SS及及SP指向目的处。指向目的处。用指令赋值示例:用指令赋值示例:S_SEG SEGMENTS_SEG SEGMENT DW 100 DUP(?)DW 100 DUP(?)ST LABLE WORD ST LABLE WORD S_SEG ENDS S_SEG ENDS C_SEG SEGMENT PARA CODEC_SEG SEGMENT PARA CODE ASSUME CS:C_SEG,SS:S_SEG,DS:NOTHING,ES:NOTHING ASSUME CS:C_SEG,SS:S_SEG,DS:NOTHING,ES:NOTHING START:START:MOV AX,S_SEG MOV AX,S_SEG ;填入段基址;填入段基址 MOV SS,AXMOV SS,AX LEA SP,ST LEA SP,ST ;填入栈顶指针;填入栈顶指针 C_SEG ENDSC_SEG ENDS END START END START思考:思考:若有若有STACK属性的堆栈段,又用指令赋值后结果如何?属性的堆栈段,又用指令赋值后结果如何?8086/8088汇编语言的伪指令汇编语言的伪指令364 4、程序开始和结束伪指令、程序开始和结束伪指令(1 1)模块命名伪指令)模块命名伪指令 格式格式1 1:NAME NAME 模块名模块名 操作操作1 1:给源程序进行模块命名给源程序进行模块命名 说明说明1 1:若模块名缺省,则自动用程序名代替。若模块名缺省,则自动用程序名代替。格式格式2 2:TITLE TITLE 标题名标题名 操作操作2 2:给源程序设置标题给源程序设置标题(模块命名模块命名)说明说明2 2:模块名为标题名的前模块名为标题名的前6 6个字符。个字符。示例:示例:NAME MM1NAME MM1 或或TITLE ABCDEFGH TITLE ABCDEFGH ;模块名为;模块名为ABCDEFABCDEF8086/8088汇编语言的伪指令汇编语言的伪指令37(2 2)程序开始和结束伪指令)程序开始和结束伪指令 格式:格式:END END 地址标号地址标号 操作:操作:表明该模块到此结束,和整个应用程序从地址表明该模块到此结束,和整个应用程序从地址标号处开始执行标号处开始执行 说明:说明:应用程序只能有一个主模块应用程序只能有一个主模块(地址标号不缺省地址标号不缺省);汇编程序不处理源程序中汇编程序不处理源程序中ENDEND后的信息。后的信息。应用程序与源程序文件:应用程序与源程序文件:应用程序可有多个源程序文件;应用程序可有多个源程序文件;每个源程序文件只能为一个模块每个源程序文件只能为一个模块(在在NAME/TITLEEND间间);所有模块中只能有一个主模块所有模块中只能有一个主模块(END后地址标号不缺省后地址标号不缺省);每个模块中可有多个段;每个模块中可有多个段;每个段的类型通过与段寄存器对应或段组合类型定性。每个段的类型通过与段寄存器对应或段组合类型定性。8086/8088汇编语言的伪指令汇编语言的伪指令385 5、表达式赋值伪指令、表达式赋值伪指令 格式:格式:名字名字 EQU EQU 表达式表达式 名字名字 =表达式表达式 操作:操作:为表达式取一个名字,供以后引用为表达式取一个名字,供以后引用 说明:说明:表达式可为常数、变量表达式可为常数、变量/标号、指令助记符、字符串标号、指令助记符、字符串 同一源程序中,用同一源程序中,用EQUEQU赋值的符号赋值的符号不能不能再次赋值,而用再次赋值,而用=赋值的符号名可重复赋值。赋值的符号名可重复赋值。赋值语句赋值语句不产生目标代码,也不占有存储单元不产生目标代码,也不占有存储单元(汇编程序汇编程序扫描时,用表达式替代符号扫描时,用表达式替代符号),目的是方便更新和提高可读性。,目的是方便更新和提高可读性。示例:示例:CONST CONST EQUEQUEQUEQU 100*2 100*2 ;定义符号常数;定义符号常数 ADDRS ADDRS EQUEQUEQUEQU BX+10 BX+10 ;为地址表达式定义名字;为地址表达式定义名字8086/8088汇编语言的伪指令汇编语言的伪指令396 6、地址计数器和对准伪指令、地址计数器和对准伪指令(1 1)地址计数器)地址计数器$功能:功能:保存当前正在汇编的指令保存当前正在汇编的指令(或数据或数据)的地址的地址 说明:说明:$为有效地址为有效地址EA(16EA(16位位);可参加构成表达式。可参加构成表达式。示例示例1 1:ARRAY DW 1,2,$+4,3,$+5ARRAY DW 1,2,$+4,3,$+5 示例示例2 2:BUFFER DB 1,2,3,4,5BUFFER DB 1,2,3,4,5 COUNT EQU$-BUFFERCOUNT EQU$-BUFFER ;COUNTCOUNT的值为的值为BUFFERBUFFER的长度的长度 01010000020200007C7C00000303000081810000ARRAYARRAY0074H0074H0078H0078H007CH007CH8086/8088汇编语言的伪指令汇编语言的伪指令40(2 2)定位伪指令)定位伪指令 格式:格式:ORG ORG 表达式表达式 操作:操作:将表达式的值送入汇编地址计数器将表达式的值送入汇编地址计数器(即命令汇即命令汇编程序从表达式值位置生成目标代码编程序从表达式值位置生成目标代码)说明:说明:若需相对若需相对$移动,则表达式移动,则表达式=$+=$+偏移量。偏移量。示例:示例:D_SEG SEGMENT PARA DATAD_SEG SEGMENT PARA DATA ORG 10HORG 10H X DB 20H,30H X DB 20H,30H ORG$+5 ORG$+5 Y DB 40H,50H Y DB 40H,50H D_SEG ENDS D_SEG ENDS202030304040505010H10H17H17HD_SEGD_SEGD_SEGD_SEG的的的的00H00H8086/8088汇编语言的伪指令汇编语言的伪指令417 7、过程定义伪指令、过程定义伪指令 格式:格式:过程名过程名 PROC PROC 类型类型 ;过程体语句;过程体语句 RETRET 过程名过程名 ENDPENDP 操作:操作:定义过程,供调用定义过程,供调用 说明:说明:可用可用CALLCALL或或ENDEND启动过程,用启动过程,用过程体中过程体中RETRET结束过程调用;结束过程调用;类型有类型有NEARNEAR和和FARFAR两种两种(缺省时为缺省时为NEARNEAR),分别表示可以进行,分别表示可以进行段内和段间调用。段内和段间调用。8086/8088汇编语言的伪指令汇编语言的伪指令42顺序结构程序设计顺序结构程序设计v结构化程序结构:结构化程序结构:顺序结构顺序结构顺序结构是一种最简单、最基本的程序结构。顺序程序只由算术运算和逻辑运算指令构成,程序是按指令顺序逐条执行的。分支分支(多路分支多路分支)结构结构先判断条件,根据判断结果转向不同的分支。要用到条件测试和转移指令。循环结构循环结构能按一定规律,多次重复执行的一串语句,这类程序叫循环程序43v流程图符号表示流程图符号表示(1)起止框:表示程序的开始和结束。(2)判断框(3)处理框(4)调用框(5)指向线/流向线(6)连接框起止框起止框顺序结构程序设计顺序结构程序设计44【例1】求两个字节数AA与BB之和,并将结果显示出来。分析:两个字节数相加。该程序可采用顺序程序,配合调用屏幕显示的DOS功能即可。但显示结果先要转换成ASCII码。顺序结构程序设计顺序结构程序设计45DATA SEGMENTAA DB 20HBB DB 10HDATA ENDSSTA SEGMENT STACKDB 100 DUP(?)STA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STASTART:MOV AX,DATA ;将数据段地址送数据段寄存器 MOV DS,AX源程序:源程序:顺序结构程序设计顺序结构程序设计46 MOV AL,AA ;求AA+BB ADD AL,BB MOV BL,AL ;保存AL的计算结果 MOV CL,4 SHR AL,CL AND AL,0FH ;屏蔽高4位 ADD AL,30H ;计算高位数的ASCII值 MOV DL,AL ;DOS功能调用,显示高位数 MOV AH,02H INT 21H顺序结构程序设计顺序结构程序设计47 MOV AL,BL ;计算结果送AL AND AL,0FH ;屏蔽高4位 ADD AL,30H ;计算低位数的ASCII值 MOV DL,AL ;显示低位数 MOV AH,02H I- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 程序设计 ppt 课件
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文