汇编语言及程序设计4学习教案.pptx

上传人:莉*** 文档编号:91520823 上传时间:2023-05-27 格式:PPTX 页数:129 大小:1.61MB
返回 下载 相关 举报
汇编语言及程序设计4学习教案.pptx_第1页
第1页 / 共129页
汇编语言及程序设计4学习教案.pptx_第2页
第2页 / 共129页
点击查看更多>>
资源描述

《汇编语言及程序设计4学习教案.pptx》由会员分享,可在线阅读,更多相关《汇编语言及程序设计4学习教案.pptx(129页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、会计学1汇编语言汇编语言(hu bin y yn)及程序设计及程序设计4第一页,共129页。n n机器语言:计算机能直接理解并执行的二进制的代码,代码难机器语言:计算机能直接理解并执行的二进制的代码,代码难以记忆,编程容易出错。每个以记忆,编程容易出错。每个CPU CPU 都有特有的指令系统。都有特有的指令系统。n n汇编语言:面向微处理器的指令语言,用指令助记符表示,便汇编语言:面向微处理器的指令语言,用指令助记符表示,便于书写记忆。实质是机器语言的符号表示,汇编语言与机器码于书写记忆。实质是机器语言的符号表示,汇编语言与机器码对应。针对特定对应。针对特定CPUCPU、效率低,通用性差,用于

2、实时控制和硬、效率低,通用性差,用于实时控制和硬件接口件接口(ji k(ji k u)u)。n n高级语言:面向过程的语言,不依赖特定的机器,符合人们的高级语言:面向过程的语言,不依赖特定的机器,符合人们的思维习惯,通用性强,编译后的目标程序长,执行速度慢。思维习惯,通用性强,编译后的目标程序长,执行速度慢。第1页/共128页第二页,共129页。汇编语言的基本汇编语言的基本(jbn)元素元素 一、汇编一、汇编一、汇编一、汇编(hubin)(hubin)语言的分段结构及汇编语言的分段结构及汇编语言的分段结构及汇编语言的分段结构及汇编(hubin)(hubin)过程过程过程过程1 1、源程序结构、

3、源程序结构、源程序结构、源程序结构 由几个逻辑段组成(段及大小)由几个逻辑段组成(段及大小)由几个逻辑段组成(段及大小)由几个逻辑段组成(段及大小)以以以以ENDEND伪指令结束伪指令结束伪指令结束伪指令结束 逻辑段由语句序列组成(指令、伪指令、宏指令、注释,空行)逻辑段由语句序列组成(指令、伪指令、宏指令、注释,空行)逻辑段由语句序列组成(指令、伪指令、宏指令、注释,空行)逻辑段由语句序列组成(指令、伪指令、宏指令、注释,空行)除除除除CSCS段外,其他段寄存器用户设置段外,其他段寄存器用户设置段外,其他段寄存器用户设置段外,其他段寄存器用户设置 含有返回含有返回含有返回含有返回DOSDOS

4、的程序指令的程序指令的程序指令的程序指令第2页/共128页第三页,共129页。NAME AHEXNAME AHEXDATAS SEGMENTDATAS SEGMENT ;此处输入数据段代码此处输入数据段代码此处输入数据段代码此处输入数据段代码 DATAS ENDSDATAS ENDSSTACKS SEGMENTSTACKS SEGMENT ;此处输入堆栈段代码此处输入堆栈段代码此处输入堆栈段代码此处输入堆栈段代码STACKS ENDSSTACKS ENDSCODES SEGMENTCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS ASSUME C

5、S:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASSTART:MOV AX,DATAS;段地址赋值;段地址赋值;段地址赋值;段地址赋值 MOV DS,AX MOV DS,AX MOV AX,STACKS MOV AX,STACKS;段地址赋值;段地址赋值;段地址赋值;段地址赋值 MOV SS,AX;MOV SS,AX;;此处输入代码据核心;此处输入代码据核心;此处输入代码据核心;此处输入代码据核心(hxn)(hxn)代码代码代码代码 MOV AH,4CH MOV AH,4CH;返回操作系统;返回操作系统;返回操作系统;返回操作系统 INT 21H INT

6、21HCODES ENDSCODES ENDS END START END START第3页/共128页第四页,共129页。例:要求把例:要求把例:要求把例:要求把3 3个个个个1616位的数相加,其和仍为位的数相加,其和仍为位的数相加,其和仍为位的数相加,其和仍为1616位数。位数。位数。位数。NAME ADDHEXNAME ADDHEXSTACK SEGMENTSTACK SEGMENTSTAPN DB 200 DUP(0);STAPN DB 200 DUP(0);此处输入此处输入此处输入此处输入(shr)(shr)堆栈段代码堆栈段代码堆栈段代码堆栈段代码TOP EQU LENGTH ST

7、APNTOP EQU LENGTH STAPNSTACK ENDSSTACK ENDSDATA SEGMENTDATA SEGMENTNUM1 DW 1234HNUM1 DW 1234HNUM2 DW 5678HNUM2 DW 5678HNUM3 DW 0ABCDHNUM3 DW 0ABCDHANS DW ANS DW?;此处输入此处输入此处输入此处输入(shr)(shr)数据段代码数据段代码数据段代码数据段代码 DATA ENDSDATA ENDSCODE SEGMENTCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK ASSUME CS:CODE,D

8、S:DATA,SS:STACKSTART:MOV AX,DATASSTART:MOV AX,DATAS;段地址赋值;段地址赋值;段地址赋值;段地址赋值 MOV DS,AX MOV DS,AX 第4页/共128页第五页,共129页。MOV AX,STACK MOV AX,STACK;段地址;段地址;段地址;段地址(dzh(dzh)赋值赋值赋值赋值 MOV SS,AX MOV SS,AX MOV SP MOV SP,TOPTOP MOV AX MOV AX,NUM1NUM1 ADD AX ADD AX,NUM2NUM2 ADD AX ADD AX,NUM3NUM3 MOV ANS MOV ANS,

9、AXAX MOV AH,4CH MOV AH,4CH;返回操作系统;返回操作系统;返回操作系统;返回操作系统 INT 21H INT 21HCODE ENDSCODE ENDS END START END START第5页/共128页第六页,共129页。例:求例:求例:求例:求1 1开始的连续开始的连续开始的连续开始的连续5050个奇数的和,存放在个奇数的和,存放在个奇数的和,存放在个奇数的和,存放在SUMSUM中中中中DATAS SEGMENTDATAS SEGMENT SUM DW 0 ;SUM DW 0 ;此处输入数据此处输入数据此处输入数据此处输入数据(shj)(shj)段代码段代码段

10、代码段代码 DATAS ENDSDATAS ENDSSTACKS SEGMENTSTACKS SEGMENT DB 200DUP(0);DB 200DUP(0);此处输入堆栈段代码此处输入堆栈段代码此处输入堆栈段代码此处输入堆栈段代码STACKS ENDSSTACKS ENDSCODES SEGMENTCODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:MOV AX,DATASSTART:MOV AX,DATAS;段地址赋值;段地址赋值;段地址赋值;段地址赋值 MOV

11、DS,AX MOV DS,AX 第6页/共128页第七页,共129页。MOV CX,50;MOV CX,50;此处输入代码据核心此处输入代码据核心此处输入代码据核心此处输入代码据核心(hxn)(hxn)代码代码代码代码 MOV AX,0 MOV AX,0 MOV BX,1 MOV BX,1NEXT:ADD AX,BXNEXT:ADD AX,BX INC BX INC BX INC BX INC BX DEC CX DEC CX JNE NEXT JNE NEXT MOV SUM,AX MOV SUM,AX MOV AH,4CH MOV AH,4CH;返回操作系统;返回操作系统;返回操作系统;返

12、回操作系统 INT 21H INT 21HCODES ENDSCODES ENDS END START END START第7页/共128页第八页,共129页。2、汇编、汇编(hubin)过程过程n n程序程序(chngx)(chngx)的的编辑、汇编、编辑、汇编、连接连接第8页/共128页第九页,共129页。第9页/共128页第十页,共129页。第10页/共128页第十一页,共129页。第11页/共128页第十二页,共129页。第12页/共128页第十三页,共129页。第13页/共128页第十四页,共129页。二、汇编语言语句的类型二、汇编语言语句的类型(lixng)和格式和格式1 1、汇编

13、语句种类、汇编语句种类指令性语句:为指令性语句:为80868086的指令系统,与机器指令对应,是可执行的的指令系统,与机器指令对应,是可执行的语句。语句。指示性语句:包括伪操作命令和伪操作符,不产生目标代码,是指示性语句:包括伪操作命令和伪操作符,不产生目标代码,是非执行指令,为汇编程序提供所需要的有关信息非执行指令,为汇编程序提供所需要的有关信息(xnx)(xnx),仅在汇,仅在汇编过程中起作用。编过程中起作用。宏指令语句:简化汇编源程序设计,用宏指令定义一段指令序列,宏指令语句:简化汇编源程序设计,用宏指令定义一段指令序列,汇编时将该指令序列取代宏指令。汇编时将该指令序列取代宏指令。第14

14、页/共128页第十五页,共129页。2、语句、语句(yj)格式格式由汇编语言编写的源程序是由许多语句由汇编语言编写的源程序是由许多语句由汇编语言编写的源程序是由许多语句由汇编语言编写的源程序是由许多语句(y(y j)j)组成的。每个组成的。每个组成的。每个组成的。每个语句语句语句语句(y(y j)j)由由由由1414个部分组成,每部分之间用空格个部分组成,每部分之间用空格个部分组成,每部分之间用空格个部分组成,每部分之间用空格(至少一至少一至少一至少一个个个个)分开,其格式是:分开,其格式是:分开,其格式是:分开,其格式是:。第15页/共128页第十六页,共129页。3 指令性语句指令性语句(

15、yj)说明说明n n操作数:标号,界限符,常量,变量,表达式,寄存器。n n常数操作数:数值常数,字符(z f)常数,数值符号名,数值表达式。n n寄存器操作数:各种寄存器。n n存储器操作数:标号,变量第16页/共128页第十七页,共129页。第17页/共128页第十八页,共129页。4、运算符和伪操作符运算符和伪操作符n n1)运算符有算术运算符有算术(sunsh)运算符、逻辑运算符、逻辑运算符、关系运算符运算符、关系运算符算术运算符包括(boku)+、-、*、/、MOD、SHL(左移一位相当于乘2)、SHR(右移1位相当于除2)例:数组例:数组ARRAY定义定义(dngy)如下如下 AR

16、RAY DB 1,2,3,4,5,6,7,8 TRY DB 20 MOV AX,30*5 MOV CX,(,(TRY-ARRAY)第18页/共128页第十九页,共129页。逻辑逻辑(lu j)运算符运算符逻辑逻辑(lu j)运算符包括运算符包括AND、OR、NOT、XOR 4种种逻辑逻辑(lu j)运算符时按位运算的,只能对常运算符时按位运算的,只能对常数运算,数运算,得到的结果也是常数。得到的结果也是常数。例:例:MOV AL,NOT 0FFH MOV BL,8CH AND 73H MOV AH,8CH OR 73H MOV CH,8CH XOR 73H第19页/共128页第二十页,共129

17、页。关系关系(gun x)(gun x)运算符运算符关系运算符包括EQ、NE、LT、GT、LE、GE 6种关系运算符的两个操作数必须是数据,或是同一段内的两个存储单元的地址(dzh)。运算结果是一个数值,若结果为真,输出全是1,若结果为假,输出全0。例:例:MOV AX,10H GT 16 ADD BL,6 EQ 0110B 第20页/共128页第二十一页,共129页。SEGSEG取段址算符取段址算符取段址算符取段址算符功能功能:取变量或标号的段址 如:MOV AX,SEG BUF2)取值运算和属性取值运算和属性(shxng)操作操作.分析分析分析分析(fnx)(fnx)运算符运算符运算符运算

18、符第21页/共128页第二十二页,共129页。.OFFSET.OFFSET取偏移取偏移取偏移取偏移(pin y)(pin y)地址算符地址算符地址算符地址算符功能功能:返回变量或标号的偏移地址 如:MOV SI,OFFSET BUF相当于指令 LEA SI,BUF第22页/共128页第二十三页,共129页。.TYPE.TYPE取类型取类型取类型取类型(lixng)(lixng)算符算符算符算符功能功能:返回变量的类型属性;返回标号的距离属性。变量类型为BYTE、WORD和DWORD时,返回的值分别为1、2和4;标号类型为NEAR或FAR时,则返回-1或-2。第23页/共128页第二十四页,共1

19、29页。.LENGTH.LENGTH取变量取变量取变量取变量(binling)(binling)所含存储单元的个数所含存储单元的个数所含存储单元的个数所含存储单元的个数功能功能:分离出该变量所含存储单元的个数。注注意意:在在定定义义该该变变量量时时,数数据据定定义义伪伪指指令令后后面面的的第第一一个个表表达达式式的的形形式式为为“n n DUP(DUP(表达式表达式)”时,取值为时,取值为n n,否则为,否则为1 1。第24页/共128页第二十五页,共129页。.SIZE.SIZE取变量取变量取变量取变量(binling)(binling)所含存储区的总字节数。所含存储区的总字节数。所含存储区

20、的总字节数。所含存储区的总字节数。功能功能:SIZE=LENGTH*TYPESIZE M1=200(因为TYPE M1=2)SIZE M2=2(因为TYPE M2=1)SIZE M3=1(因为TYPE M3=1)第25页/共128页第二十六页,共129页。.PTR.PTR格式格式:类型类型 PTR 表达式表达式类型类型:表达式表达式:是变量、标号或数值:是变量、标号或数值 变量的类型有:变量的类型有:BYTE、WORD和和DWORD;标号的类型有:标号的类型有:NEAR和和FAR;结构名称结构名称合成合成(hchng)操作符操作符第26页/共128页第二十七页,共129页。功功能能(gngnn

21、g):PTR把把它它左左边边的的属属性性指指派派给给它它右右边边的的变变量量、标标号号或或数数值值,使使之之产产生生一一个个新新的存储器地址操作数。的存储器地址操作数。如:(1)INC BYTE PTR BX (2)ADD DX,WORD PTR FOOB20 新存储器操作数的段地址和段内偏移量与PTR运算符右边(yu bian)的操作数的对应量相同。PTR给已分配的存储器一个另外的定义但并不重新分配存储器。第27页/共128页第二十八页,共129页。例:例:N1 DB 15H,36H N2 DW 1122H,3344HLO:MOV AX,WORD PTR N1;使使N1类型转换成字与类型转换

22、成字与AX类型匹配类型匹配(ppi)MOV BL,BYTE PTR N2 ;使使N2类型转换成字节与类型转换成字节与BL类型匹配类型匹配(ppi)也可以用也可以用PTR来改变距离属性来改变距离属性(shxng),如,如:JMP FAR PTR LO使使JMP安排在其他代码段中也可以使用,实现段间转移。安排在其他代码段中也可以使用,实现段间转移。第28页/共128页第二十九页,共129页。.THIS.THIS操作符操作符操作符操作符格式:变量格式:变量/标号标号 EQU THIS 类型类型/距离距离功功能能:将EQU THIS右边的类型/距离属性,赋给左边的变量/标号,该变量或标号的段地址和偏移

23、地址与下一存储单元的地址相同FIRST EQU THIS BYTETABLE DW 200 DUP(?)如:第29页/共128页第三十页,共129页。.SHORT.SHORT操作符操作符操作符操作符SHORT用于条件转移、转移和调用指令中,指出转移的目标地址和本指令之间的距离不超过一个字节所能表达的范围。第30页/共128页第三十一页,共129页。.HIGH/LOW.HIGH/LOW格式格式(g shi):HIGH/LOW 变量或标号变量或标号字节字节(z ji)分离运算符,对一个数或地址表达式,分离运算符,对一个数或地址表达式,HIGH 从中分离出高位字节从中分离出高位字节(z ji),LO

24、W分离出分离出低位字节低位字节(z ji)例:例:K1 EQU 0ABCDH K2 EQU 1234H MOV AH,HIGH K1 MOV BL,LOW K2第31页/共128页第三十二页,共129页。n n3)其他(qt)运算符第32页/共128页第三十三页,共129页。优先级优先级第33页/共128页第三十四页,共129页。伪指令语句伪指令语句(yj)(yj)指指令令语语句句:汇汇编编程程序序(hu bin chn x)把把它它们们翻翻译译成成机机器器代代码码,命命令令8086执执行行对应操作。对应操作。伪伪指指令令语语句句:汇汇编编程程序序并并不不把把它它们们翻翻译译成成机机器器代代码

25、码,只只是是用用来来指指示示、引引导导汇汇编编程程序在汇编时做一些序在汇编时做一些(yxi)操作,它本身不占用存储单元。操作,它本身不占用存储单元。第34页/共128页第三十五页,共129页。*数据定义语句数据定义语句DB、DD等等*标号标号(bioho)赋值语句赋值语句EQU,*段定义语句段定义语句SEGMENTENDS*段分配语句段分配语句ASSUME*过程定义语句过程定义语句PROCENDP*程序开始结束语句程序开始结束语句ORG,END伪指令主要分为伪指令主要分为(fn wi)下列几类:下列几类:第35页/共128页第三十六页,共129页。一、数据一、数据一、数据一、数据(shj)(s

26、hj)定义语句定义语句定义语句定义语句DB、DW和和DD等等可可用用于于定定义义变变量量和和预预置置存存储储器器,变变量量后后不不能能带带冒冒号号(moho),任何变量均有下列三属性。,任何变量均有下列三属性。(1)段属性即变量(binling)所使用的段;(2)段内偏移属性;(3)变量的类型:字节、字、双字等。第36页/共128页第三十七页,共129页。DB/DW/DD/DQ/DT DB/DW/DD/DQ/DT变量变量变量变量(binling)(binling)定义伪指令定义伪指令定义伪指令定义伪指令(1)格式:格式:变量名称变量名称 DB/DW/DD/DQ/DT表达式表达式功能:定义功能:

27、定义(dngy)一数据存贮区。一数据存贮区。该 数 据 存 贮 区 的 类 型 由 所 使 用 的 数 据 定 义 伪 指 令 指 定(zhdng)(其 中DB/DW/DD/DQ/DT定义的分别为字节型/字类型/双字型/四字/十个字节);存贮区中数据的个数个数由其后表达式的个数(包括重复因子)决定;并为各存储单元提供一个初值初值。第37页/共128页第三十八页,共129页。(2)表现形式:表现形式:根据表达式的不同可有以下几种常见根据表达式的不同可有以下几种常见(chn jin)形式。形式。a.表达式为预置表达式为预置(y zh)的一个常数项表达式的一个常数项表达式如:如:ABDBAB ;42

28、41HBADW AB ;4142HFENDW OFEH ;254SEG-FEHDW SEG FEN;变量;变量FEN的段址的段址PAR1DB74PAR2DW 1234H第38页/共128页第三十九页,共129页。表达式存储表达式存储(cn ch)的格式的格式例:DA1 DB 10H,52H DA2 DW 1122H,34HDA3 DD 5*20H,0FFEEHDA1105222113400A00000EEFF0000DA2DA300第39页/共128页第四十页,共129页。例:表达式为字符串FIST DB HELLO SECOND DW OKTHREE DB OKFIST48454C4C4F4

29、B4F4F4BSECONDTHREEHELLOOKOK注意:用注意:用DB和和DW定义定义(dngy)时不同的存放方式时不同的存放方式第40页/共128页第四十一页,共129页。b.表达式中出现表达式中出现“?”,表示,表示(biosh)只分配存储单元,其初值不定。只分配存储单元,其初值不定。如:如:SUMDW?;分配一个;分配一个(y)字单字单元元F1DB?;分配一个;分配一个(y)字节字节单元单元c.表达式为预置表达式为预置(y zh)地址表达式地址表达式(DW/DD)如如:TABLE-0FFDW TABLE ;TABLE的偏移量的偏移量D-PTR-T DD TABLE;TABLE的的16

30、位偏移量和段址位偏移量和段址第41页/共128页第四十二页,共129页。d.表达式为预置重复表达式为预置重复(chngf)的算式。的算式。如:如:ZIPS DB 100 DUP(0)DB 2 DUP(0,3 DUP(1)第42页/共128页第四十三页,共129页。二、表达式赋值语句二、表达式赋值语句二、表达式赋值语句二、表达式赋值语句(yj)(yj)1.1.赋值语句赋值语句赋值语句赋值语句(yj)EQU(yj)EQU格式:符号名格式:符号名 EQU 数值表达式数值表达式功功能能:为为常常量量(chngling)、变变量量、表表达达式式或或其其他他符符号号定定义义一一个个名名字字,但但不不申申请

31、分配内存。请分配内存。如:THREE EQU 3 FIRSTW EQU WORD PTR BYT;把变量;BYT定义为名字是FIRSTW的字第43页/共128页第四十四页,共129页。例:例:例:例:COUNT EQU 100 COUNT EQU 100 ;常数值赋给符号名;常数值赋给符号名;常数值赋给符号名;常数值赋给符号名COUNTCOUNT DATA EQU COUNT+2 DATA EQU COUNT+2 ;表达式值赋给符号名;表达式值赋给符号名;表达式值赋给符号名;表达式值赋给符号名DATADATA A1 EQU BX+SI A1 EQU BX+SI ;变址寻址存储单元内容赋给符号名

32、;变址寻址存储单元内容赋给符号名;变址寻址存储单元内容赋给符号名;变址寻址存储单元内容赋给符号名A1A1 B1 EQU OFFSET A1 B1 EQU OFFSET A1 ;偏移地址值赋给符号名;偏移地址值赋给符号名;偏移地址值赋给符号名;偏移地址值赋给符号名B1B1 C1 EQU ADD C1 EQU ADD ;加法;加法;加法;加法(jif)(jif)指令赋给符号名指令赋给符号名指令赋给符号名指令赋给符号名C1C1注:注:注:注:PURGEPURGE语句可以解除对某一个语句可以解除对某一个语句可以解除对某一个语句可以解除对某一个(y)(y)标号的赋值,使它在后面可以重新定义。标号的赋值,

33、使它在后面可以重新定义。标号的赋值,使它在后面可以重新定义。标号的赋值,使它在后面可以重新定义。PURGE C1 PURGE C1 ;C1C1不再代替不再代替不再代替不再代替ADDADD第44页/共128页第四十五页,共129页。2.2.等号语句等号语句等号语句等号语句(yj)=(yj)=功功能能:等等号号语语句句“=”与与EQU语语句句具具有有相相同同的的功功能能,区区别别(qbi)仅仅在在于于EQU左左边边的的标标号号不不允允许许重重新新定定义义,而而用用“=”定定义义的的语语句句允允许许重重复定义。复定义。如:COUNT=100 COUNT=COUNT+1第45页/共128页第四十六页,

34、共129页。三、段定义三、段定义三、段定义三、段定义(dngy)(dngy)语句语句语句语句1.SEGMENT和ENDS定义定义(dngy)方式:方式:段名段名 SEGMENT 定位类型定位类型 组合方式组合方式 分类名分类名 语句语句 段名段名 ENDS第46页/共128页第四十七页,共129页。SEGMENT与ENDS成对出现,不可省略。段名:段名:是逻辑段的标识符,不可省略,是逻辑段的标识符,不可省略,它确定了逻辑段在存储器中的地址。它确定了逻辑段在存储器中的地址。第47页/共128页第四十八页,共129页。2.段分配语句(ASSUME)格式格式(g shi):ASSUME CS:段名,

35、:段名,DS:段名,:段名,SS:段名,:段名,ES:段名:段名功能:定义功能:定义4个逻辑段,指明个逻辑段,指明(zhmng)段和段寄存器关系。段和段寄存器关系。注注:ASSUME只是建立当前定义的段名与段寄存器之间的联系,除除了了CS外外,不能将各个段的段地址装入相应的段寄存器中,DS、ES、SS的设置必须通过指令性语句来完成。第48页/共128页第四十九页,共129页。四、过程四、过程四、过程四、过程(guchng)(guchng)定义定义定义定义语句语句语句语句其其其其中中中中过过过过程程程程名名名名是是是是为为为为该该该该过过过过程程程程指指指指定定定定(zhdng)(zhdng)的

36、的的的一一一一个个个个名名名名称称称称,与与与与变变变变量量量量、标标标标号号号号的的的的定定定定义法相同。义法相同。义法相同。义法相同。使用格式:过程名使用格式:过程名 PROC NEAR/FAR RET 过程名过程名 ENDP第49页/共128页第五十页,共129页。功功能能(gngnng):把把具具有有一一定定功功能能(gngnng)的的程程序序段段设设计计成成为为一一个个过过程程(子子程序程序),便于实现模块化的程序设计。,便于实现模块化的程序设计。注注:(1)CALL指令中过程名起着标号的作用。有段属性、偏移量属性和类型属性(NEAR和FAR)。(2)子程序中至少有一个RET。第50

37、页/共128页第五十一页,共129页。MCODE SEGMENTMAIN SPD PROC FAR ;过程定义,远过程属性过程定义,远过程属性(shxng)RETSPD EDNP CALL SPD ;同一段内调用同一段内调用 MCODE ENDS例:过程(guchng)的定义及调用格式NCODE SEGMENT CALL SPD ;远过程远过程(guchng)调用调用 NCODE ENDS END MAIN第51页/共128页第五十二页,共129页。1.NAME1.NAME和和和和ENDEND伪指令伪指令伪指令伪指令功功能能:定定义义一一个个模模块块,作作为为一一个个独独立立的的汇汇编编单单位

38、位,在在输输出出汇汇编编语语言言程程序序的的列列表表文文件件时时,将将在在每每一一页页的的开开头头打打印印出出该该程程序序名名。若若源源程程序序中中省省略略NAME,则将源文件名作为目标,则将源文件名作为目标(mbio)模块的名字。模块的名字。格式:格式:NAME 模块名模块名 END 标号标号五、程序五、程序五、程序五、程序(chngx)(chngx)开始和开始和开始和开始和结束语句结束语句结束语句结束语句第52页/共128页第五十三页,共129页。注注:一一个个模模块块是是一一个个独独立立(dl)(dl)的的汇汇编编单单位位,汇汇编编处处理理只只进进行行到到模模块块结结束束语句语句ENDE

39、ND为止。为止。例:例:CODE SEGMENT START:SUB1 PROC NEAR SUB1 ENDP CODE ENDS END START第53页/共128页第五十四页,共129页。2.ORG格式格式(g shi):ORG 表达式表达式功功能能(gngnng):给给汇汇编编程程序序设设置置位位置置指指针针,指指定定下下面面语语句句的的起起始始偏偏移地址。移地址。表达式为给定的偏移表达式为给定的偏移(pin y)地址。一般情况下,段定义语句地址。一般情况下,段定义语句(SEGMENT)指出了段的起点,偏移)指出了段的起点,偏移(pin y)地址为地址为0,段内,段内各语句或数据的地址

40、由段地址开始依次类推可确定。当用户要各语句或数据的地址由段地址开始依次类推可确定。当用户要求指定某条指令或数据为某个指定地址时,可用求指定某条指令或数据为某个指定地址时,可用ORG来改变。来改变。第54页/共128页第五十五页,共129页。例:用例:用ORG改变改变(gibin)数数据段地址据段地址DATA SEGEMENT ORG 100H A1 DB 10H,20H,30H ;A1偏移偏移(pin y)地址地址为为100H ORG 200H A2 DW 3031H,3233H ;A1偏移偏移(pin y)地地址为址为200HDATA ENDS第55页/共128页第五十六页,共129页。六、

41、六、宏指令宏指令(zhlng)一般格式为:宏指令名一般格式为:宏指令名 MACRO 形式形式(xngsh)参量表参量表 宏体宏体 ENDM 在汇编语言书写的源程序中,若有的程序段要在汇编语言书写的源程序中,若有的程序段要多次使用,为了简化程序书写,该程序段可以用多次使用,为了简化程序书写,该程序段可以用一条宏指令来代替,而汇编程序汇编到该宏指令一条宏指令来代替,而汇编程序汇编到该宏指令时,会产生源程序所需的代码。时,会产生源程序所需的代码。第56页/共128页第五十七页,共129页。例如例如(lr):SHIFT MACRO MOV CL,4 SAL AL,Cl ENDM代码段:代码段:MOV

42、AX,3H SHIFT MOV BX,6H代码段:代码段:MOV AX,3H MOV CL,4 SAL AL,Cl MOV BX,6H第57页/共128页第五十八页,共129页。外部外部外部外部(wib)(wib)伪指令伪指令伪指令伪指令程序包含多个模块时,有些程序或数据在各个模块间要相互共享,可用外部伪指令PUBLICPUBLICPUBLICPUBLIC和EXTRNEXTRNEXTRNEXTRN来实现此功能。第58页/共128页第五十九页,共129页。注:符号必须用符号必须用“,”分开,且均在本模块中定义过。分开,且均在本模块中定义过。注:注:格式格式(g shi):PUBLIC 符号表符号

43、表功功能能:用用来来说说明明该该模模块块中中被被定定义义的的那那些些常常量量、变变量量和和标标号号(含含过过程程名名)可可以以(ky)被其他模块所引用。被其他模块所引用。如:PUBLIC ABC,BCD,CDE(1)PUBLIC伪指令第59页/共128页第六十页,共129页。格式格式(g shi):EXTRN 符号:类型,符号:类型,功功能能:指指出出本本模模块块中中需需要要引引用用但但却却在在其其他他模模块块中中定定义义并并说说明明为为PUBLIC属属性性的的符符号号(含含常常量量,变变量量(binling),标标号号和和过过程程),符符号号的的类类型型(BYTE、WORD、DWORD、NE

44、AR、FAR和和ABS(符符号常量号常量)必须与它们在其他模块中定义时的类型一致。必须与它们在其他模块中定义时的类型一致。(2)EXTRN伪指令第60页/共128页第六十一页,共129页。汇编程序汇编程序(hu bin chn x)设设计计程序设计的基本程序设计的基本(jbn)(jbn)步骤步骤分析课题分析课题确定算法确定算法画出流程图画出流程图存储器资源分配存储器资源分配编写程序编写程序上机调试上机调试程序设计注意问题程序设计注意问题程序模块化程序模块化程序正确完整程序正确完整算法可靠合理算法可靠合理注重软件执行速率注重软件执行速率第61页/共128页第六十二页,共129页。顺序结构顺序结构

45、顺序结构顺序结构 分支选择分支选择分支选择分支选择(xu(xu nz)nz)结构结构结构结构 循环结构循环结构循环结构循环结构第62页/共128页第六十三页,共129页。n n一、顺序结构与简单程序设计一、顺序结构与简单程序设计n n简单程序设计是没有分支,没有循环的直线运行简单程序设计是没有分支,没有循环的直线运行(ynxng)程序,程序执行按照程序,程序执行按照IP内容自动增加的内容自动增加的顺序进行。顺序进行。第63页/共128页第六十四页,共129页。n n例例例例1 1:编写计算:编写计算:编写计算:编写计算(j sun)Z=(j sun)Z=(X*X-3*YX*X-3*Y)/2/2

46、的程序,的程序,的程序,的程序,n n 设设设设X X,Y Y为单字节整数,结果为单字节整数,结果为单字节整数,结果为单字节整数,结果Z Zn n为一个字。为一个字。为一个字。为一个字。n nDATA SEGMENTDATA SEGMENTn nX DB 25X DB 25n nY DB 32Y DB 32n nZ DW Z DW?n nDATA ENDSDATA ENDSn nCODE SEGMENTCODE SEGMENTn n ASSUME CS ASSUME CS:CODECODE,DSDS:DATADATAn nSTARTSTART:MOV AX MOV AX,DATADATAn n

47、 MOV DS MOV DS,AXAX第64页/共128页第六十五页,共129页。MOV ALMOV AL,X XMUL ALMUL ALMOV BXMOV BX,0 0MOV BLMOV BL,Y YADD BLADD BL,BLBLADC BHADC BH,0 0ADD BLADD BL,Y YADC BHADC BH,0 0SUB AXSUB AX,BXBXSHR AXSHR AX,1 1MOV ZMOV Z,AXAXMOV AHMOV AH,4CH4CHINT 21HINT 21HCODE ENDSCODE ENDS END START END START第65页/共128页第六十六页

48、,共129页。n n例例例例2 2 利用查表法计算平方值。已知利用查表法计算平方值。已知利用查表法计算平方值。已知利用查表法计算平方值。已知0 150 15的平方值连续存在的平方值连续存在的平方值连续存在的平方值连续存在以以以以TABLTABL开始的存储开始的存储开始的存储开始的存储(cn ch(cn ch)区域中,求区域中,求区域中,求区域中,求XDXD单元内容单元内容单元内容单元内容X X的的的的平方值,并放在平方值,并放在平方值,并放在平方值,并放在YDYD单元中。假定单元中。假定单元中。假定单元中。假定0X 150X 15且为整数。且为整数。且为整数。且为整数。n n分析:建立平方表,

49、通过查表完成。分析:建立平方表,通过查表完成。分析:建立平方表,通过查表完成。分析:建立平方表,通过查表完成。第66页/共128页第六十七页,共129页。n nNAME MYPROGNAME MYPROGn nDATA SEGMENTDATA SEGMENTn nTABL DB 0TABL DB 0,1 1,4 4,9 9,1616,2525,3636,4949,6464,81;81;n n DB 100 DB 100,121121,144144,169169,225 225 ;015015的平方的平方的平方的平方(pngfng)(pngfng)n nXD DB 6XD DB 6n nYD D

50、B YD DB?n nDATA ENDSDATA ENDSn nSTACKSTACKSEGMENTSEGMENTn nSTA DB 100 DUPSTA DB 100 DUP(?)(?)(?)(?)n nTOP EQU LENGTH STATOP EQU LENGTH STAn nSTACK ENDSSTACK ENDSn nCODECODESEGMENTSEGMENTn nASSUME CSASSUME CS:CODECODE,DSDS:DATADATA,SSSS:STACKSTACK第67页/共128页第六十八页,共129页。STARTSTART:MOV MOVAXAX,DATADATAM

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 管理工具

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁