程序设计课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《程序设计课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 课件
- 资源描述:
-
1、 汇编语言程序的格式汇编语言程序的格式 汇编语言程序的上机过程汇编语言程序的上机过程 伪指令语句伪指令语句 汇编语言程序设计的基本方法汇编语言程序设计的基本方法 了解汇编语言程序的基本格式,及了解汇编语言程序的基本格式,及其上机过程。其上机过程。熟练掌握数据定义伪指令、段定义熟练掌握数据定义伪指令、段定义伪指令、符号定义伪指令、过程定伪指令、符号定义伪指令、过程定义伪指令。义伪指令。熟练掌握汇编语言程序设计的一般熟练掌握汇编语言程序设计的一般步骤以及顺序程序、分支程序、循步骤以及顺序程序、分支程序、循环程序、子程序设计的方法。环程序、子程序设计的方法。伪指令伪指令NoImage5.1 5.1
2、汇编语言与汇编程序汇编语言与汇编程序5.1.1 汇编语言的基本概念汇编语言的基本概念1 机器语言与汇编语言机器语言与汇编语言(Machine Language and Assembly Language)由二进制代码由二进制代码0 0,1 1表示的指令称为表示的指令称为机器机器指令指令,相应的程序称为机器语言程序,相应的程序称为机器语言程序。用指令助记符表示的用指令助记符表示的指令称为指令称为汇编语言汇编语言指令指令,对应的程序称为汇编语言程序。,对应的程序称为汇编语言程序。NoImage 例例5-1 将将4位二进制数转换为位二进制数转换为ASCII码字码字符。当数在符。当数在0000B-10
3、01B时,对应的时,对应的ASCII码码为为09;当数在;当数在1010B1111B时,对应的时,对应的ASCII码为码为AF。设待转换的数据已在累加器设待转换的数据已在累加器AL中中(低(低4位)。位)。编制的机器语言程序与汇编语言编制的机器语言程序与汇编语言程序如下表所示。程序如下表所示。NoImage地地 址址机器代码机器代码对应的汇编指令对应的汇编指令E380:000024 0FAND AL,0FHE380:00023C 0ACMP AL,0AHE380:000472 02JB NUME380:000604 07ADD AL,07HE380:000804 30NUM:ADD AL,30
4、HE380:000AC3RETNoImage2 2汇编语言与高级语言汇编语言与高级语言(Assembly Language Assembly Language and Computer-independent Language)and Computer-independent Language)汇编语言汇编语言是一种依赖于计算机微处理器的语言是一种依赖于计算机微处理器的语言 汇编语言汇编语言一般不具有通用性和可移植性一般不具有通用性和可移植性 进行进行汇编语言汇编语言程序设计必须熟悉机器的硬件资程序设计必须熟悉机器的硬件资 源和软件资源源和软件资源 高级语言高级语言是面向过程的语言是面向过程的
5、语言 高级语言高级语言具有很好的通用性和可移植性具有很好的通用性和可移植性 NoImage5.1.2 汇编语言源程序的组成汇编语言源程序的组成 1 1汇编语言源程序的结构汇编语言源程序的结构(Program Structure)Program Structure)例例5-2 5-2 完整的汇编语言源程序示例。完整的汇编语言源程序示例。NAME HEXTOASC;*DATA SEGMENT ;数据段定义开始数据段定义开始 HEX DB 5AH ASC DB 2 DUP(?)DATA ENDS ;数据段定义结束数据段定义结束;*NoImage;*STACK SEGMENT ;堆栈段定义开始堆栈段定
6、义开始 DB 256 DUP(S)TOP EQU$-STACK STACK ENDS ;堆栈段定义结束堆栈段定义结束;*;*CODE SEGMENT ;代码段定义开始代码段定义开始 ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA ;主程序开始主程序开始NoImage MOV DS,AX MOV AX,STACK MOV SS,AX MOV SP,TOP MOV BX,OFFSET ASC MOV AL,HEX MOV AH,AL MOV CL,4 SHR AL,CL CALL NEAR PTR CONVERT HLT ;主程序结束主程序结束
7、NoImageCONVERT PROC ;过程过程(子程序子程序)定义开始定义开始 AND AL,0FH CMP AL,10 JB NUM ADD AL,7 NUM:ADD AL,0 RET CONVERT ENDP ;过程过程(子程序子程序)定义结束定义结束 CODE ENDS ;代码段定义结束代码段定义结束;*END START ;程序结束程序结束NoImage要点总结:汇编语言源程序由汇编语言源程序由段结构段结构组成。组成。一个段由一个段由 “SEGMENTSEGMENT”(段定义开始)和段定义开始)和“ENDSENDS”(段定义结束)语句来定义。段定义结束)语句来定义。每个段都有唯一的
8、每个段都有唯一的段名段名,前后一致。,前后一致。不同段的段名不能相同。不同段的段名不能相同。数据段、堆栈段和代码段的作用各不相同。数据段、堆栈段和代码段的作用各不相同。各个段都由一系列各个段都由一系列语句语句组成。组成。语句包括语句包括指令指令语句和语句和伪指令伪指令语句。语句。NoImage2 2汇编语言的语句格式汇编语言的语句格式(Statement Formats)Statement Formats)汇编语言程序的每行语句由汇编语言程序的每行语句由14个部分组成。个部分组成。指令语句和伪指令语句在格式上稍有区别,指令语句和伪指令语句在格式上稍有区别,指令指令语句的标号后有冒号语句的标号后
9、有冒号“:”,而,而伪指令伪指令语句的标号语句的标号后则没有冒号。后则没有冒号。指令语句的格式为指令语句的格式为LABEL:OPERATION OPERAND ;COMMENT标号域标号域 指令助记符域指令助记符域 操作数域操作数域 注释域注释域NoImage伪指令语句的格式为伪指令语句的格式为LABEL OPERATION OPERAND ;COMMENT标号域标号域 伪指令助记符域伪指令助记符域 操作数域操作数域 注释域注释域 注注:指令助记符前面还可以有指令助记符前面还可以有 前缀前缀。汇编语言程序语句中的四项,均可以用汇编语言程序语句中的四项,均可以用大写大写、小写小写或或混合编写混合
10、编写。语句的各部分之间至少用一个语句的各部分之间至少用一个空格空格分开分开NoImage3.3.标号标号(Label)Label)(含数据变量标号和程序位含数据变量标号和程序位置标号置标号)标号标号是一个自行设计的标识符或名称,是一个自行设计的标识符或名称,最多可由最多可由31个字母、数字和特别字符个字母、数字和特别字符(?、?、-、$)等组成。但等组成。但 不能用数字开头。不能用数字开头。不能为汇编语言的保留字不能为汇编语言的保留字。注:保留字指有专门用途的字符或字符串,注:保留字指有专门用途的字符或字符串,如如CPU的寄存器名、指令助记符、伪的寄存器名、指令助记符、伪指令助记符等。指令助记
11、符等。NoImage(1)数据变量标号的三种属性数据变量标号的三种属性 段值:段值:即所在段的段地址。即所在段的段地址。偏移量:偏移量:即数据变量所在位置的地址与即数据变量所在位置的地址与其段地址之差值。其段地址之差值。类型:类型:指该数据变量是字节、字还是双字。指该数据变量是字节、字还是双字。(2)程序位置标号的两种类型属性程序位置标号的两种类型属性 NEAR段内调用或转移标号。段内调用或转移标号。FAR段间调用或转移标号。段间调用或转移标号。NoImage4.4.操作数操作数域域(Operand Fields)Operand Fields)操作数可以是操作数可以是常数、变量、标号、寄存常数
12、、变量、标号、寄存器名器名或或表达式表达式(1)常数常数:二进制、八进制、十进制、十六进:二进制、八进制、十进制、十六进制或制或ASCII码字符串。码字符串。(2)寄存器名寄存器名、标号标号、变量变量 指令:指令:MOV AL,HEX 中,中,AL为寄存器为寄存器名,名,HEX为变量名。为变量名。NoImage(3)表达式表达式:由:由运算符运算符连接起来的式子叫表达式,连接起来的式子叫表达式,按一定的规则对表达式进行运算后按一定的规则对表达式进行运算后得到一个数值或一个地址。得到一个数值或一个地址。表达式可分为表达式可分为算术表达式算术表达式、逻辑表达式逻辑表达式、关关系运算表达式系运算表达
13、式、分析运算表达式分析运算表达式和和合成运算合成运算表达式。表达式。NoImage用算术运算符用算术运算符+、-、*、/和和MOD连接的表连接的表达式。达式。算术表达式算术表达式用逻辑运算符用逻辑运算符AND、OR、XOR和和NOT连接的表达式。连接的表达式。逻辑表达式逻辑表达式例如:例如:5 5*8+308+30,128/100 128/100,206 206 MOD 128 MOD 128 等算术等算术表达式。表达式。NoImage 逻辑表达式的结果可能为逻辑表达式的结果可能为8 8位或位或1616位二进制位二进制数,视参加运算的数的字长而定。数,视参加运算的数的字长而定。逻辑运算指令中可
14、以包含有逻辑表达式,如逻辑运算指令中可以包含有逻辑表达式,如指令指令 AND AL,10101010B AND 0FH 左边第一个左边第一个AND为逻辑运算指令,第二个为逻辑运算指令,第二个AND为逻辑运算符,为逻辑运算符,B AND 0FH 为逻辑表达为逻辑表达式,其结果在汇编时即已确定,为式,其结果在汇编时即已确定,为B,故上述指故上述指令等价于令等价于AND AL,00001010BNoImage用用EQ、NE、LT、GT、GE和和LE连接的表连接的表达式。若条件成立,其值为达式。若条件成立,其值为1,否则为,否则为0。关系运算表达式关系运算表达式分析运算表达式把存储器操作数分解为几分析
15、运算表达式把存储器操作数分解为几个组成部分;而合成运算式是把这些组成部分个组成部分;而合成运算式是把这些组成部分综合为存储器操作数。综合为存储器操作数。分析运算表达式和合成运算表达式分析运算表达式和合成运算表达式例如:指令例如:指令 MOV BX,5 GT 3 等价于等价于 MOV BX,0FFFFH NoImage 分析运算表达式和合成运算表达式的操作对象分析运算表达式和合成运算表达式的操作对象都为都为存储器操作数存储器操作数。存储器操作数表示变量、符号地址、存储单元存储器操作数表示变量、符号地址、存储单元等与存储器等与存储器地址地址有关的量。有关的量。分析运算表达式把存储器操作数分析运算表
16、达式把存储器操作数分解分解为几为几个部分,如分解出段值、偏移量、类型等;个部分,如分解出段值、偏移量、类型等;合成运算表达式则把这些组成部分合成运算表达式则把这些组成部分综合综合为存为存储器操作数。储器操作数。NoImage5.2 5.2 伪指令伪指令指令语句:指令语句:汇编程序把它们翻译成机器代码,命汇编程序把它们翻译成机器代码,命令令80868086执行对应操作。执行对应操作。伪指令语句伪指令语句:汇编程序并不把它们翻译成机器代汇编程序并不把它们翻译成机器代码,只是用来指示、引导汇编程序码,只是用来指示、引导汇编程序在汇编时做一些操作,它本身不占在汇编时做一些操作,它本身不占用存储单元。用
17、存储单元。NoImage5.2.1 段定义伪指令段定义伪指令SEGMENT/ENDS1.SEGMENT和和ENDS 定义方式:定义方式:段名段名 SEGMENT定位方式定位方式组合方式组合方式类别名类别名 语句语句1 语句语句2 段名段名 ENDSNoImage 段名段名是赋予该段的一个名称,是赋予该段的一个名称,SEGMENT与与ENDS成对出现,且前后的段名要相同,段成对出现,且前后的段名要相同,段名的取法与文件名、标号及变量名等相同。名的取法与文件名、标号及变量名等相同。(1)段名段名NoImageLINK程序除完成段与段的联合操作以程序除完成段与段的联合操作以外,还把联合后得到的各个段
18、互相衔接起来,外,还把联合后得到的各个段互相衔接起来,段与段的段与段的衔接方式衔接方式叫做定位方式,共叫做定位方式,共4种。种。(2)定位方式定位方式NoImage WORD(字字):表示段从地址是一个最低位:表示段从地址是一个最低位为为0的二进制数开始。的二进制数开始。PAGE(页页):表示段从一个页的边界,即十:表示段从一个页的边界,即十六进制数表示地址时最低两位均为六进制数表示地址时最低两位均为0处开始。处开始。PARA(缺省缺省):表示段从一个节的边界,即:表示段从一个节的边界,即用十六进制数表示地址时最低位为用十六进制数表示地址时最低位为0处开始。处开始。BYTE(字节字节):表示段
19、可从任一地址开始。:表示段可从任一地址开始。NoImage BYTEXXXX XXXX XXXX XXXX XXXX B WORDXXXX XXXX XXXX XXXX XXX 0 B PARAXXXX XXXX XXXX XXXX 0 0 0 0 B PAGEXXXX XXXX XXXX 0 0 0 0 0 0 0 0 B X表示可取表示可取0或或1定位类型定位类型 起起 始始 地地 址址NoImage2.GROUP伪指令伪指令格式:格式:组名组名 GROUP 段名段名 ,功能功能:用来把模块中若干不同名的段集合用来把模块中若干不同名的段集合成一个组,使其装入成一个组,使其装入同一个物理段同
20、一个物理段中,组内各段之间的跳转可视为中,组内各段之间的跳转可视为段段内跳转内跳转。注注:组名与段名是一样的取名规则,是代组名与段名是一样的取名规则,是代表该组的段地址,格式中的段名也可表该组的段地址,格式中的段名也可用表达式用表达式SEG变量变量或或SEG标号标号。NoImage5.2.2 位置计数器位置计数器$和定位伪指令和定位伪指令ORG 1.1.位置位置计数器计数器$汇编程序专门设置了一个表示汇编程序专门设置了一个表示当前位置当前位置的的计数器,称计数器,称位置计数器位置计数器$。正常情况下,汇编程。正常情况下,汇编程序每扫描一个字节,位置计数器的值便加序每扫描一个字节,位置计数器的值
21、便加1 1。语句:语句:TOP EQU$-STACK 含义:含义:当前位置计数器的值当前位置计数器的值$减去减去STACKSTACK代表的起始代表的起始位置的值,然后把两者的差值赋予符号常量位置的值,然后把两者的差值赋予符号常量TOPTOP。语句:语句:JMP$含义:含义:程序跳转到本条指令执行。程序跳转到本条指令执行。NoImage格式:格式:ORG 数据表达式数据表达式功能功能:把位置计数器的值设置为表达式的值。把位置计数器的值设置为表达式的值。ORG后面的一条指令性语句或数据区后面的一条指令性语句或数据区定义命令即从指定的位置处进行汇编。定义命令即从指定的位置处进行汇编。2.2.ORG伪
22、指令伪指令NoImage格式:格式:ASSUME 段寄存器段寄存器:段名段名,段寄存器段寄存器:段名段名,功能功能:用于告知汇编程序,段寄存器用于告知汇编程序,段寄存器CS、DS、ES和和SS的内容的内容将被将被设定为那设定为那些段或组的些段或组的段址段址。5.2.3 段寻址伪指令段寻址伪指令ASSUME NoImage注注:(1)段名段名可以是已定义过的任何可以是已定义过的任何段名段名或或组名组名,也可以是表达式,也可以是表达式SEG 变量变量或或SEG 标号标号,还可以是,还可以是NOTHING。(2)除除CS外,外,DS、ES、SS的设置必须的设置必须通过指令性语句来完成。通过指令性语句
23、来完成。例例 CODESEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:NOTHING MOV AX,DATA MOV DS,AX ;设置设置DS MOV AX,STACK MOV SS,AX ;设置设置SS CODE ENDSNoImage5.2.4 过程定义伪指令过程定义伪指令PROC/ENDP 过程过程即是即是子程序子程序。汇编语言规定必须对过程。汇编语言规定必须对过程进行定义,以确定过程的三种属性。过程的属性进行定义,以确定过程的三种属性。过程的属性确定之后,就可对调用指令确定之后,就可对调用指令CALLCALL进行正确汇编,进行正确汇编,决定是产生
24、近调用指令还是远调用指令。决定是产生近调用指令还是远调用指令。1.1.过程的三种属性过程的三种属性 段段属性:过程所在段的段地址。属性:过程所在段的段地址。偏移量偏移量属性:过程所处位置的段内偏移地址。属性:过程所处位置的段内偏移地址。类型类型属性属性(NEAR或或FAR)。过程为过程为NEARNEAR或或FARFAR类类型。型。NoImage使用格式:过程名使用格式:过程名 PROC NEAR/FAR RET 过程名过程名 ENDPNEAR-近过程。该过程与调用指令近过程。该过程与调用指令CALLCALL处在同处在同 一个代码段中(段名相同)。一个代码段中(段名相同)。FAR-远过程。该过程
25、与调用指令远过程。该过程与调用指令CALLCALL处在不同处在不同的代码段中(段名不同)。的代码段中(段名不同)。2.2.过程的定义过程的定义NoImage功能功能:把具有一定功能的程序段设计成为一个过:把具有一定功能的程序段设计成为一个过程程(子程序子程序),便于实现模块化的程序设计。,便于实现模块化的程序设计。注注:(1)CALL指令中过程名起着标号的作用。指令中过程名起着标号的作用。有段属性、偏移量属性和类型属性有段属性、偏移量属性和类型属性(NEAR和和FAR)。(2)子程序中至少有一个子程序中至少有一个RET。过程名是为该过程指定的一个名称,与变量、过程名是为该过程指定的一个名称,与
展开阅读全文