最新微型计算机原理及其应用第四章汇编语言程序设计PPT课件

上传人:桔**** 文档编号:570657135 上传时间:2024-08-05 格式:PPT 页数:67 大小:1.91MB
返回 下载 相关 举报
最新微型计算机原理及其应用第四章汇编语言程序设计PPT课件_第1页
第1页 / 共67页
最新微型计算机原理及其应用第四章汇编语言程序设计PPT课件_第2页
第2页 / 共67页
最新微型计算机原理及其应用第四章汇编语言程序设计PPT课件_第3页
第3页 / 共67页
最新微型计算机原理及其应用第四章汇编语言程序设计PPT课件_第4页
第4页 / 共67页
最新微型计算机原理及其应用第四章汇编语言程序设计PPT课件_第5页
第5页 / 共67页
点击查看更多>>
资源描述

《最新微型计算机原理及其应用第四章汇编语言程序设计PPT课件》由会员分享,可在线阅读,更多相关《最新微型计算机原理及其应用第四章汇编语言程序设计PPT课件(67页珍藏版)》请在金锄头文库上搜索。

1、微型计算机原理及其应用第四章汇编语言程序设计第四章:汇编语言程序设计第四章:汇编语言程序设计1.汇编语言的基本要素汇编语言的基本要素2.伪指令伪指令3.汇编语言程序设计汇编语言程序设计2第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言的基本要素汇编语言的基本要素汇编语言中的运算符和表达式汇编语言中的运算符和表达式 在表达式中,运算符充当着重要的角色。在表达式中,运算符充当着重要的角色。8086宏汇编有宏汇编有算术运算术运算符、逻辑运算符、关系运算符、数值回送操作符算符、逻辑运算符、关系运算符、数值回送操作符和和属性操作符属性操作符共共5种。种。 数值回送数值回送(Value_retur

2、ning)操作符可以把一些特征或存储器地址操作符可以把一些特征或存储器地址的一部分作为数值回送。共有的一部分作为数值回送。共有5个:个:SEG(求段基值求段基值)、OFFSET(求偏求偏移量移量)、TYPE(求变量类型求变量类型)、LENGTH(求字节数求字节数)和和SIZE(求字节数求字节数)。其中其中LENGTH和和SIZE只对数据存储器地址操作数有效。只对数据存储器地址操作数有效。 属性操作符可以用来建立和临时改变变量或标号的类型以及存储属性操作符可以用来建立和临时改变变量或标号的类型以及存储器操作数的存储单元类型,而忽略当前的属性。共有器操作数的存储单元类型,而忽略当前的属性。共有6个

3、:个:PTR、段、段属性前缀、属性前缀、SHORT、THIS、HIGH和和LOW。9第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言的基本要素汇编语言的基本要素汇编语言中的运算符和表达式汇编语言中的运算符和表达式 算术运算符算术运算符逻辑运算符逻辑运算符关系运算符关系运算符数值回送运算符数值回送运算符属性运算符属性运算符+(加法加法)AND(与与)EQ(相等相等)TYPEPTR-(减法减法)OR(或或)NE(不等不等)LENGTHTHIS*(乘法乘法)XOR(异或异或)LT(小于小于)SIZESHORT/(除法除法)NOT(非非)GT(大于大于)OFFSETHIGHMOD(求余求余)L

4、E(小于等于小于等于)SEGLOWGE(大于等于大于等于)10第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言的基本要素汇编语言的基本要素汇编语言中的运算符和表达式汇编语言中的运算符和表达式数值回送操作符数值回送操作符SEG运算符运算符:利用运算符利用运算符SEG可以得到一个标号或变量的段基址可以得到一个标号或变量的段基址格式:格式:SEG变量名或标号名变量名或标号名 例如:已知数据段例如:已知数据段DATA从存储器实际地址从存储器实际地址03000H开始,作如下定义后,开始,作如下定义后,用用SEG运算符求变量所在的段基址。运算符求变量所在的段基址。DATASEGMENT;定义数据段

5、定义数据段VAR1DB10H,18H,25H,34H;定义字节数据定义字节数据VAR2DW2300H,1200H;定义字数据定义字数据VAR3DD11002200H,33004400H;定义双字数据定义双字数据DATAENDS;数据段结束数据段结束MOV BX,SEG VAR1汇编成:汇编成: MOV BX,0300HMOV CX,SEG VAR2汇编成:汇编成: MOV CX,0300HMOV DX,SEG VAR3汇编成;汇编成; MOV DX,0300H11第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言的基本要素汇编语言的基本要素汇编语言中的运算符和表达式汇编语言中的运算符和表

6、达式数值回送操作符数值回送操作符OFFSET运算符运算符:利用运算符:利用运算符OFFSET可以得到一个标号或变量的偏移可以得到一个标号或变量的偏移量。量。使用格式:使用格式:OFFSET 变量名或标号名变量名或标号名DATASEGMENT;定义数据段定义数据段VAR1DB10H,18H,25H,34H;定义字节数据定义字节数据VAR2DW2300H,1200H;定义字数据定义字数据VAR3DD11002200H,33004400H;定义双字数据定义双字数据DATAENDS;数据段结束数据段结束MOV BX,OFFSET VAR1汇编成:汇编成: MOV BX,0000HMOV CX,OFFS

7、ET VAR2汇编成:汇编成: MOV CX,0004HMOV DX,OFFSET VAR3汇编成:汇编成: MOV DX,0008H12汇编语言中的运算符和表达式汇编语言中的运算符和表达式数值回送操作符数值回送操作符TYPE运算符运算符:TYPE运算符可加在变量、结构或标号的前面,所求出的是这些存运算符可加在变量、结构或标号的前面,所求出的是这些存储器操作数的类型部分。运算符储器操作数的类型部分。运算符TYPE的运算结果是一个数值,这个数值与存储的运算结果是一个数值,这个数值与存储器操作数类型属性的对应关系。器操作数类型属性的对应关系。MOV BX,TYPE VAR1 汇编成:汇编成: MO

8、V BX,1MOV CX,TYPE VAR2 汇编成:汇编成: MOV CX,2MOV DX,TYPE VAR3 汇编成:汇编成: MOV DX,4存储操作数类型存储操作数类型 TYPE返回值返回值字节数据字节数据BYTE(DB定义)定义)1字数据字数据WORD(DW定义)定义)2双字数据双字数据DWORD(DD定义)定义)4第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言的基本要素汇编语言的基本要素13第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言的基本要素汇编语言的基本要素汇编语言中的运算符和表达式汇编语言中的运算符和表达式数值回送操作符数值回送操作符LENGTH运算符运

9、算符:LENGTH运算符放在数组变量的前面,可以求出该数运算符放在数组变量的前面,可以求出该数组中所包含的变量的个数。组中所包含的变量的个数。 ARRAY1 DB 100DUP(?)ARRAY2 DW 10DUP(?) ARRAY3 DD 10DUP(?)下列指令:下列指令:MOV BX,LENGTH ARRAY1 汇编汇编后:后:MOV BX,100MOV CX,LENGTH ARRAY2 汇编汇编后:后:MOV CX,10MOV DX,LENGTH ARRAY3 汇编汇编后:后:MOV DX,1014第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言的基本要素汇编语言的基本要素汇编语

10、言中的运算符和表达式汇编语言中的运算符和表达式数值回送操作符数值回送操作符SIZE运算符运算符:如果一个变量已经用重复操作符:如果一个变量已经用重复操作符DUP加以说明,则利用加以说明,则利用SIZE运算符可以得到分配给该变量的字节总数。运算符可以得到分配给该变量的字节总数。 ARRAY1 DB 100DUP(?)ARRAY2 DW 10DUP(?) ARRAY3 DD 10DUP(?)下列指令:下列指令:MOV BX,SIZE ARRAY1汇编汇编后:后:MOV BX,100MOV CX,SIZE ARRAY2汇编汇编后:后:MOV CX,20MOV DX,SIZE ARRAY3汇编汇编后:

11、后:MOV DX,4015第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言的基本要素汇编语言的基本要素汇编语言中的运算符和表达式汇编语言中的运算符和表达式属性操作符属性操作符PTR运算符运算符:用来建立一个符号地址。其本身并不分配存储器,只是用来建立一个符号地址。其本身并不分配存储器,只是用来给已分配的存储器地址赋予另一种属性,使该地址具有另一种类用来给已分配的存储器地址赋予另一种属性,使该地址具有另一种类型。型。 VAR1DB 10H,18H,25H,34HVAR2DW 1223H,1200HMOV AX, WORD PTR VAR1 执执行后:行后:AX=1810HMOV BL,

12、BYTE PTR VAR2 执执行后:行后:BL=23H 16第四章:汇编语言程序设计第四章:汇编语言程序设计1.汇编语言的基本要素汇编语言的基本要素2.伪指令伪指令3.汇编语言程序设计汇编语言程序设计17第四章:汇编语言程序设计第四章:汇编语言程序设计伪指令伪指令 伪指令用来对汇编程序进行控制,对程序中的数据实现条件转移、伪指令用来对汇编程序进行控制,对程序中的数据实现条件转移、列表、存储空间分配等处理,其格式和汇编指令一样,但一般不产生目列表、存储空间分配等处理,其格式和汇编指令一样,但一般不产生目的代码,即不直接命令的代码,即不直接命令CPU去执行什么操作。去执行什么操作。 亦即它不像机

13、器指令那样是在程序运行期间由计算机来执行的,而亦即它不像机器指令那样是在程序运行期间由计算机来执行的,而是在汇编程序对源程序汇编期间由汇编程序处理的操作。是在汇编程序对源程序汇编期间由汇编程序处理的操作。18第四章:汇编语言程序设计第四章:汇编语言程序设计伪指令伪指令1.定义数据伪指令定义数据伪指令2.符号定义伪指令符号定义伪指令3.段定义伪指令段定义伪指令4.设定段寄存器伪指令设定段寄存器伪指令5.定义过程的伪指令定义过程的伪指令6.宏指令宏指令7.ORG伪指令伪指令8.汇编结束伪指令汇编结束伪指令END19第四章:汇编语言程序设计第四章:汇编语言程序设计伪指令伪指令1.定义数据伪指令定义数

14、据伪指令2.符号定义伪指令符号定义伪指令3.段定义伪指令段定义伪指令4.设定段寄存器伪指令设定段寄存器伪指令5.定义过程的伪指令定义过程的伪指令6.宏指令宏指令7.ORG伪指令伪指令8.汇编结束伪指令汇编结束伪指令END20第四章:汇编语言程序设计第四章:汇编语言程序设计伪指令伪指令定义数据伪指令定义数据伪指令该类伪指令用来定义存贮空间及其所存数据的长度。该类伪指令用来定义存贮空间及其所存数据的长度。DB:定义字节,即每个数据是:定义字节,即每个数据是1个字节。个字节。DW:定义字,即每个数据占:定义字,即每个数据占1个字(个字(2个字节)。个字节)。DD:定义双字,即每个数据占:定义双字,即

15、每个数据占2个字。低字部分在低地址,高字部分个字。低字部分在低地址,高字部分在高地址。在高地址。DQ:定义:定义4字长,即每个数据占字长,即每个数据占4个字。个字。DT:定义:定义10个字节长,用于压缩式十进制数据。个字节长,用于压缩式十进制数据。例如:例如:DATA1 DB 10H,6,78H,100表示从表示从DATA1单元开始连续存放单元开始连续存放10H,6,78H,100,共占,共占4个字节个字节地址。地址。 21第四章:汇编语言程序设计第四章:汇编语言程序设计伪指令伪指令定义数据伪指令定义数据伪指令DATA1DB20HDATA2DW0240H,1000HDATA3DB(-1*3),

16、(15/5)DATA4DD12345HDATA5DB0123DATA6DWAB,C,DDATA7DB?DATA8DD?DATA9DB5DUP(00)DATA10DW3DUP(?)22第四章:汇编语言程序设计第四章:汇编语言程序设计伪指令伪指令1.定义数据伪指令定义数据伪指令2.符号定义伪指令符号定义伪指令3.段定义伪指令段定义伪指令4.设定段寄存器伪指令设定段寄存器伪指令5.定义过程的伪指令定义过程的伪指令6.宏指令宏指令7.ORG伪指令伪指令8.汇编结束伪指令汇编结束伪指令END23第四章:汇编语言程序设计第四章:汇编语言程序设计伪指令伪指令符号定义伪指令符号定义伪指令EQU伪指令给符号定义

17、一个值。在程序中,凡是出现该符号的地方,伪指令给符号定义一个值。在程序中,凡是出现该符号的地方,汇编时均用其值代替,如:汇编时均用其值代替,如: COUNTEQU100;COUNT代替常数代替常数100SUMEQU30*25;SUM代替数值表达式代替数值表达式CEQUCX;C代替寄存器代替寄存器CXMEQUMOV;M代替指令助记符代替指令助记符MOV 需要注意的是,一个符号一经需要注意的是,一个符号一经EQU伪指令赋值后,在整个程序中,不伪指令赋值后,在整个程序中,不允许再对同一符号重新赋值。允许再对同一符号重新赋值。 24第四章:汇编语言程序设计第四章:汇编语言程序设计伪指令伪指令1.定义数

18、据伪指令定义数据伪指令2.符号定义伪指令符号定义伪指令3.段定义伪指令段定义伪指令4.设定段寄存器伪指令设定段寄存器伪指令5.定义过程的伪指令定义过程的伪指令6.宏指令宏指令7.ORG伪指令伪指令8.汇编结束伪指令汇编结束伪指令END25第四章:汇编语言程序设计第四章:汇编语言程序设计伪指令伪指令段定义伪指令段定义伪指令 段定义伪指令的用途是在汇编语言程序中定义逻辑段,段定义伪指令的用途是在汇编语言程序中定义逻辑段,用它来指定段的名称和范围,并指明段的定位类型、组合类用它来指定段的名称和范围,并指明段的定位类型、组合类型及类别。常用的段定义为指令有型及类别。常用的段定义为指令有SEGMENT和

19、和ENDS。 段名段名 SEGMENT 定位类型定位类型 组合类型组合类型 类别类别 (段内语句系列)(段内语句系列)段名段名 ENDS26第四章:汇编语言程序设计第四章:汇编语言程序设计伪指令伪指令段定义伪指令段定义伪指令DATA1 SEGMENT DATA1 ENDSSTACK1 SEGMENT STACK STACK1 ENDSCODE1 SEGMENT ASSUME CS:CODE1,DS:DATA1,SS:STACK1 MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX CODE1 ENDS27第四章:汇编语言程序设计第四章:汇编语言程序设计伪指

20、令伪指令1.定义数据伪指令定义数据伪指令2.符号定义伪指令符号定义伪指令3.段定义伪指令段定义伪指令4.设定段寄存器伪指令设定段寄存器伪指令5.定义过程的伪指令定义过程的伪指令6.宏指令宏指令7.ORG伪指令伪指令8.汇编结束伪指令汇编结束伪指令END28第四章:汇编语言程序设计第四章:汇编语言程序设计伪指令伪指令设定段寄存器伪指令设定段寄存器伪指令 设定段寄存器伪指令用来通知汇编程序哪一个段寄存器设定段寄存器伪指令用来通知汇编程序哪一个段寄存器是该段的段寄存器,以便对使用变量或标号的指令汇编出正是该段的段寄存器,以便对使用变量或标号的指令汇编出正确的目的代码。常用的段定义为指令有确的目的代码

21、。常用的段定义为指令有ASSUME。 ASSUME 段寄存器:段名段寄存器:段名,段寄存器:段名,段寄存器:段名, 注意:由于注意:由于ASSUME伪指令只指明某一个段地址应存于哪一伪指令只指明某一个段地址应存于哪一个段寄存器中,并没有包含将段地址送入该寄存器的操作。个段寄存器中,并没有包含将段地址送入该寄存器的操作。因此要将真实段地址装入段寄存器还需用汇编指令来实现。因此要将真实段地址装入段寄存器还需用汇编指令来实现。这一步是不可缺少的。这一步是不可缺少的。 29第四章:汇编语言程序设计第四章:汇编语言程序设计伪指令伪指令设定段寄存器伪指令设定段寄存器伪指令DATA1 SEGMENT DAT

22、A1 ENDSSTACK1 SEGMENT STACK STACK1 ENDSCODE1 SEGMENT ASSUME CS:CODE1,DS:DATA1,SS:STACK1 MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX CODE1 ENDS30第四章:汇编语言程序设计第四章:汇编语言程序设计伪指令伪指令1.定义数据伪指令定义数据伪指令2.符号定义伪指令符号定义伪指令3.段定义伪指令段定义伪指令4.设定段寄存器伪指令设定段寄存器伪指令5.定义过程的伪指令定义过程的伪指令6.宏指令宏指令7.ORG伪指令伪指令8.汇编结束伪指令汇编结束伪指令END31第

23、四章:汇编语言程序设计第四章:汇编语言程序设计伪指令伪指令定义过程伪指令定义过程伪指令 在程序设计中,可将具有一定功能的程序段看成为一个过程在程序设计中,可将具有一定功能的程序段看成为一个过程(相当相当于一个子程序于一个子程序),它可以被别的程序调用。一个过程由伪指令,它可以被别的程序调用。一个过程由伪指令PROC和和ENDP来定义。来定义。过程名过程名 PROC 类型类型 过程体过程体 RET 过程名过程名 ENDP 其中过程名是为过程所起的名称,不能省略,过程的类型由其中过程名是为过程所起的名称,不能省略,过程的类型由FAR(远过程,为段间调用)和(远过程,为段间调用)和NEAR(近过程,

24、在本段内调用)来确定,(近过程,在本段内调用)来确定,如果缺省类型,则该过程就默认为近过程。如果缺省类型,则该过程就默认为近过程。ENDP表示过程结束。过程表示过程结束。过程体内至少应有一条体内至少应有一条RET指令,以便返回被调用处。过程可以嵌套,也可指令,以便返回被调用处。过程可以嵌套,也可以递归使用。以递归使用。 32第四章:汇编语言程序设计第四章:汇编语言程序设计伪指令伪指令定义过程伪指令定义过程伪指令DELAYPROC MOVBL,10DELY:MOVCX,2801WAIT:LOOP WAIT DECBL JNZDELY RETDELAYENDP 33第四章:汇编语言程序设计第四章:

25、汇编语言程序设计伪指令伪指令1.定义数据伪指令定义数据伪指令2.符号定义伪指令符号定义伪指令3.段定义伪指令段定义伪指令4.设定段寄存器伪指令设定段寄存器伪指令5.定义过程的伪指令定义过程的伪指令6.宏指令宏指令7.ORG伪指令伪指令8.汇编结束伪指令汇编结束伪指令END34第四章:汇编语言程序设计第四章:汇编语言程序设计伪指令伪指令宏指令宏指令 在汇编语言书写的源程序中,若有的程序段要多次使用,为了简化在汇编语言书写的源程序中,若有的程序段要多次使用,为了简化程序书写,该程序段可以用一条宏指令来代替,而汇编程序汇编到该宏程序书写,该程序段可以用一条宏指令来代替,而汇编程序汇编到该宏指令时,仍

26、会产生源程序所需的代码。指令时,仍会产生源程序所需的代码。 宏指令的一般格式为:宏指令的一般格式为: 宏指令名宏指令名 MACRO 形式参量表形式参量表 宏体宏体 ENDM 例如:例如:SHIFT MACROMOV CL,4SAL AL,ClENDM 35第四章:汇编语言程序设计第四章:汇编语言程序设计伪指令伪指令1.定义数据伪指令定义数据伪指令2.符号定义伪指令符号定义伪指令3.段定义伪指令段定义伪指令4.设定段寄存器伪指令设定段寄存器伪指令5.定义过程的伪指令定义过程的伪指令6.宏指令宏指令7.ORG伪指令伪指令8.汇编结束伪指令汇编结束伪指令END36第四章:汇编语言程序设计第四章:汇编

27、语言程序设计伪指令伪指令ORG伪指令伪指令ORG伪指令规定了在某一段内,程序或数据代码存放的起始偏移地址。伪指令规定了在某一段内,程序或数据代码存放的起始偏移地址。 一般格式:一般格式: ORG 例如:例如: DATASEGMENT BUFF1DB23,56H,EOF ORG2000H BUFF2DBSTRING DATAENDS 37第四章:汇编语言程序设计第四章:汇编语言程序设计伪指令伪指令1.定义数据伪指令定义数据伪指令2.符号定义伪指令符号定义伪指令3.段定义伪指令段定义伪指令4.设定段寄存器伪指令设定段寄存器伪指令5.定义过程的伪指令定义过程的伪指令6.宏指令宏指令7.ORG伪指令伪

28、指令8.汇编结束伪指令汇编结束伪指令END38第四章:汇编语言程序设计第四章:汇编语言程序设计伪指令伪指令汇编结束伪指令汇编结束伪指令END 该伪指令表示源程序的结束令汇编程序停止汇编。因此,任何一该伪指令表示源程序的结束令汇编程序停止汇编。因此,任何一个完整的源程序均应有个完整的源程序均应有END指令。指令。一般格式:一般格式: END 表达式表达式其中表达式表示该汇编程序的启动地址。例如:其中表达式表示该汇编程序的启动地址。例如:END START ;表明该程序的启动地址为;表明该程序的启动地址为START。39第四章:汇编语言程序设计第四章:汇编语言程序设计1.汇编语言的基本要素汇编语言

29、的基本要素2.伪指令伪指令3.汇编语言程序设计汇编语言程序设计40第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计1.汇编语言程序设计概述汇编语言程序设计概述2.顺序程序设计顺序程序设计3.选择程序设计选择程序设计4.循环程序设计循环程序设计5.子程序设计子程序设计41第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计1.汇编语言程序设计概述汇编语言程序设计概述2.顺序程序设计顺序程序设计3.选择程序设计选择程序设计4.循环程序设计循环程序设计5.子程序设计子程序设计42第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设

30、计汇编语言程序设计汇编语言程序设计概述汇编语言程序设计概述1编写源程序编写源程序 在弄清问题的要求,确定方案后,汇编语言程序设计者便可依据前在弄清问题的要求,确定方案后,汇编语言程序设计者便可依据前面的指令系统和汇编语言的规定,逐个模块地编写汇编语言源程序。面的指令系统和汇编语言的规定,逐个模块地编写汇编语言源程序。2源程序输入微型机源程序输入微型机 在编辑软件在编辑软件EDIT.EXE或其他编辑软件的支持下,将源程序输入到计或其他编辑软件的支持下,将源程序输入到计算机中。通常,汇编语言源程序的扩展名为算机中。通常,汇编语言源程序的扩展名为 ASM。3汇编汇编 利用汇编程序(或宏汇编程序)(利

31、用汇编程序(或宏汇编程序)(ASM或或MASM)对汇编语言源程)对汇编语言源程序进行汇编,产生扩展名为序进行汇编,产生扩展名为OBJ的可重定位的目的代码。的可重定位的目的代码。4连接连接 利用连接程序(利用连接程序(LINK)可将一个或多个扩展名为)可将一个或多个扩展名为OBJ文件进行连文件进行连接,生成扩展名为扩展名为接,生成扩展名为扩展名为EXE的可执行文件。的可执行文件。 5调试调试 对于稍大一些的程序来说,经过上述步骤所获得的对于稍大一些的程序来说,经过上述步骤所获得的 EXE可执行文可执行文件,在运行过程中难免无错。调试汇编程序最常用的工具是动态调试程件,在运行过程中难免无错。调试汇

32、编程序最常用的工具是动态调试程序序DEBUG。43第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计汇编语言程序设计概述汇编语言程序设计概述44第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计1.汇编语言程序设计概述汇编语言程序设计概述2.顺序程序设计顺序程序设计3.选择程序设计选择程序设计4.循环程序设计循环程序设计5.子程序设计子程序设计45第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计顺序程序设计顺序程序设计 对于一些简单的数据处理,只要把完成处理的各个步骤用汇编语言对于一些简单的数据处理,只

33、要把完成处理的各个步骤用汇编语言描述清楚,让计算机按指令编写的次序从头到尾一条条执行即可,这样描述清楚,让计算机按指令编写的次序从头到尾一条条执行即可,这样的程序结构称为顺序结构。的程序结构称为顺序结构。 【例例4-14-1】已知已知X X和和Y Y是数据段中的两个无符号字节单元,用程序完成是数据段中的两个无符号字节单元,用程序完成表达式表达式Z=(XZ=(X2 2Y Y2 2)/2)/2的计算。的计算。46第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计顺序程序设计顺序程序设计 DATASEGMENTXDB 15YDB 34ZDW ?DATAENDSCODES

34、EGMENTASSUMECS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AX;初始化数据段初始化数据段MOVAL,X;X中的内容送中的内容送ALMULAL;计算计算XXMOVBX,AX;XX乘积送乘积送BXMOV AL,Y;Y中的内容送中的内容送ALMULAL;计算计算YYADDAX,BX;计算计算X2Y2SHRAX,1;计算计算(X2Y2)/2MOV Z,AX;结果送结果送Z单元单元MOV AH,4CHINT21H;返回返回DOSCODEENDSEND START;汇编结束汇编结束47第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设

35、计顺序程序设计顺序程序设计【例例4-24-2】从键盘读入两个一位数(按键时保证按下的是数字键),显示它们的从键盘读入两个一位数(按键时保证按下的是数字键),显示它们的积。先后从键盘上读取两个按键,分别减去积。先后从键盘上读取两个按键,分别减去30H30H得到它们对应的数值,然后相乘得到它们对应的数值,然后相乘分解成十位数字与个位数字,转换成分解成十位数字与个位数字,转换成ASCASC码后依次输出即可。为了输入输出效码后依次输出即可。为了输入输出效果的直观,有必要在每次按键后回车换行。果的直观,有必要在每次按键后回车换行。 CODESEGMENTASSUMECS:CODEMAIN:MOV AH,

36、1INT21H;读入第读入第1个数字个数字MOVBL,AL;保存在保存在BL中中MOVAH,2MOVDL,13INT21H;回车回车MOVDL,10INT INT 21H21H; ;换行换行MOVMOVAH,1AH,1INTINT21H21H; ;读入第读入第2 2个数字个数字SUBSUBAL,30HAL,30H; ;第第2 2个数字转换成十进制数个数字转换成十进制数SUBSUBBL,30HBL,30H; ;第第1 1个数字转换成十进制数个数字转换成十进制数MULMULBLBL; ;两个数相乘,积在两个数相乘,积在AXAX中中48第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计

37、汇编语言程序设计顺序程序设计顺序程序设计MOVMOVBL,10BL,10; ;DIVDIVBLBL; ;积除以积除以1010取商送取商送ALAL,余数在,余数在AHAH中中ADDADDAX,3030HAX,3030H; ;转换成相应的转换成相应的ASCASC码码MOVMOVBX,AXBX,AX; ;保存在保存在BXBX中中MOVMOVAH,2AH,2MOVMOVDL,13DL,13INTINT21H21H; ;回车回车MOVMOVDL,10DL,10INTINT21H21H; ;换行换行MOV MOV DL,BLDL,BLMOVMOVAH,2AH,2INTINT21H21H; ;输出十位数输出

38、十位数MOVMOVDL,BHDL,BHINTINT21H21H; ;输出个位数输出个位数MOVMOVAH,4CHAH,4CHINTINT21H21H; ;返回返回DOSDOSCODECODEENDSENDSENDENDMAINMAIN; ;程序结束程序结束49第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计1.汇编语言程序设计概述汇编语言程序设计概述2.顺序程序设计顺序程序设计3.选择程序设计选择程序设计4.循环程序设计循环程序设计5.子程序设计子程序设计50第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计选择程序设计选择程序设计

39、 选择程序是利用条件转移指令,使程序执行到某一指令后,根据条件是否满足,选择程序是利用条件转移指令,使程序执行到某一指令后,根据条件是否满足,来改变程序执行的次序。在程序设计中经常会遇到各种判断和比较,例如来改变程序执行的次序。在程序设计中经常会遇到各种判断和比较,例如“相等相等”和和“不相等不相等”;“正正”和和“负负”;“大于大于”和和“小于小于”;“满足条件满足条件”和和“不满足条件不满足条件”等等,这些判断和比较在程序中都可以组成各种不同的逻辑框,并产生相应的分支等等,这些判断和比较在程序中都可以组成各种不同的逻辑框,并产生相应的分支程序。程序。 51第四章:汇编语言程序设计第四章:汇

40、编语言程序设计汇编语言程序设计汇编语言程序设计选择程序设计选择程序设计 1 1 当当X0X0【例例4-34-3】符号函数符号函数Y=Y=0 0当当X=0 X=0 (128X+127128X+127) 1 1 当当X0X0 设任意给定的设任意给定的X X存放在存放在XXXX单元,计算出函数单元,计算出函数Y Y值要求存放在值要求存放在YYYY单元。单元。 52第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计选择程序设计选择程序设计 DATASEGMENTXXDB0F0HYYDB?DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATAST

41、ART PROCFARPUSHDS SUBAX,AXPUSHAX MOVAX,DATAMOVDS,AX MOVAL,XXCMPAL,0JGEBIGRMOVAL,0FFHMOVYY,ALRETBIGR:JEEQULMOVAL,1EQUL:MOVYY,ALRETSTART ENDPCODEENDSENDSTART 53第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计1.汇编语言程序设计概述汇编语言程序设计概述2.顺序程序设计顺序程序设计3.选择程序设计选择程序设计4.循环程序设计循环程序设计5.子程序设计子程序设计54第四章:汇编语言程序设计第四章:汇编语言程序设计

42、汇编语言程序设计汇编语言程序设计循环程序设计循环程序设计 循环程序是强制循环程序是强制CPUCPU重复执行某一指重复执行某一指令系列的一种程序结构形式,它可以使令系列的一种程序结构形式,它可以使许多重复工作的程序大为简化,而且减许多重复工作的程序大为简化,而且减少内存空间。被重复执行的部分称作循少内存空间。被重复执行的部分称作循环体,要想把循环体多次执行,就必须环体,要想把循环体多次执行,就必须在循环体的前后有相应的指令实现循环在循环体的前后有相应的指令实现循环控制。控制。 循环程序一般由循环程序一般由4 4部分组成:初始化、部分组成:初始化、循环体、循环控制和循环结束处理。循环体、循环控制和

43、循环结束处理。55第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计循环程序设计循环程序设计 【例例4-44-4】现将以现将以AREA1AREA1为首地址的为首地址的100100个字节数据搬移到以个字节数据搬移到以AREA2AREA2为首地址的内存中去。为首地址的内存中去。DATASEGMENTAREA1 DB100 DUP (?)AREA2 DB100 DUP (00)DATAENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVSI,OFFSET AREA1MOVDI,OFFSET AR

44、EA2MOVCX,100AGAIN:MOVAL,SIMOVDI,ALINCSIINCDIDECCXJNZAGAINMOVAH,4CHINT21HCODEENDSENDSTART56第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计循环程序设计循环程序设计 【例例4-54-5】若有一串无符号数,放在若有一串无符号数,放在NUMNUM开始的单元中,要求编制汇编语言程序,将其开始的单元中,要求编制汇编语言程序,将其中的最大值找出来,且放到存储单元中的最大值找出来,且放到存储单元MAXMAX中,这串数的长度已存放在中,这串数的长度已存放在COUNTCOUNT单元。单元。D

45、ATASEGMENTCOUNT DW20NUMDW7,9,12,14,1,3,28,55,121,44,15,45,34,67,87,90,32,43,59,60MAXDW?DATAENDSSTACK SEGMENT PARA STACK STACKDB20 DUP (?)STACK ENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKMAINPROCFARPUSHDSMOVAX,0PUSH AX57第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计循环程序设计循环程序设计MOVAX,DATAMOVDS,AXMOVBX,OFF

46、SET NUMMOVCX,COUNTMOVAX,BXINCBXINCBXLOOP1: CMPAX,BXJAELOOP2MOVAX,BXLOOP2: INCBXINCBXDECCXJNZLOOP1MOVMAX,AXRETMAINENDPCODEENDSENDMAIN 58第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计循环程序设计循环程序设计 【例例4-64-6】设计一个设计一个100ms100ms的软件延时程序。采用多重循环程序,内循环完成的软件延时程序。采用多重循环程序,内循环完成10ms10ms的延的延时,外层循环时,外层循环1010次即可。次即可。CODE

47、SENGMETASSUMECS:CODESTART: MOVDL,10DELAY1:MOVCX,2800HDELAY2:LOOPDELAY2DECDLJNZDELAY1MOVAH,4CHINT21HCODEENDSENDSTART59第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计1.汇编语言程序设计概述汇编语言程序设计概述2.顺序程序设计顺序程序设计3.选择程序设计选择程序设计4.循环程序设计循环程序设计5.子程序设计子程序设计60第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计子程序设计子程序设计格式和调用格式和调用子程序名子

48、程序名 PROC PROC 类型类型 指令序列指令序列子程序名子程序名 ENDPENDP 子程序调用与子程序返回由子程序调用与子程序返回由CALLCALL和和RETRET指令实现。子程序调用方式有指令实现。子程序调用方式有近程调用、远程调用、直接调用和间接调用。近程调用、远程调用、直接调用和间接调用。61第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计子程序设计子程序设计保护现场和恢复现场保护现场和恢复现场利用指令利用指令PUSHPUSH保护现场,利用指令保护现场,利用指令POPPOP恢复现场。恢复现场。例如:例如: SUB1 PROC NEARSUB1 PRO

49、C NEAR PUSH AX PUSH AX保护现场保护现场 PUSH BXPUSH BX PUSH CX PUSH CX PUSH DX PUSH DX POP DX POP DX恢复现场恢复现场 POP CXPOP CX POP BX POP BX POP AX POP AX RET RET SUB1 ENDP SUB1 ENDP62第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计子程序设计子程序设计参数传递方法参数传递方法1.1.利用寄存器利用寄存器:这是一种最常见方法,把所需传递的参数直接放在主程序:这是一种最常见方法,把所需传递的参数直接放在主程序的寄

50、存器中传递给子程序。的寄存器中传递给子程序。2.2.利用存储单元利用存储单元:这种参数传递方法,把所需传递的参数直接放在子程序:这种参数传递方法,把所需传递的参数直接放在子程序调用指令代码之后。调用指令代码之后。3.3.利用堆栈利用堆栈:这种方法将参数压入堆栈,在子程序运行时从堆栈中取参数。:这种方法将参数压入堆栈,在子程序运行时从堆栈中取参数。63第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计子程序设计子程序设计 【例例4-74-7】编制程序编制程序两个两个6字节数相加。将一个字节相加的程序段设计为子程序。主字节数相加。将一个字节相加的程序段设计为子程序。主

51、程序分程序分3次调用该子程序,但每次调用的参数不同。次调用该子程序,但每次调用的参数不同。 DATASEGMENTMYADD1DB0FEH,86H,7CH,35H,68H,77HMYADD2DB45H,0BCH,7DH,6AH,87H,90HSUMDB 6 DUP (0)COUNTDB6DATAENDSSTACKSEGMENTDB100 DUP (?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKMADD: MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXMOVSI,OFFSETMYADD1MOVDI,OFFSET

52、MYADD2MOVBX,OFFSET SUM64第四章:汇编语言程序设计第四章:汇编语言程序设计汇编语言程序设计汇编语言程序设计子程序设计子程序设计MOVCX,COUNT ;循环初值为循环初值为6CLC AGAIN:CALL SUBADD ;调用子程序调用子程序LOOP AGAIN ;循环调用循环调用6次次MOVAX,4C00HINT21H;子程序入口参数子程序入口参数:SI,DI,BX 出口参数出口参数:SI,DI,BXSUBADDPROC ;完成一个字节相加完成一个字节相加PUSHAX ;保护保护AX的值的值MOVAL,SI ;SI是一个源操作数指针是一个源操作数指针ADCAL,DI ;DI是另一个源操作数指针是另一个源操作数指针MOVBX,AL ;BX是结果操作数指针是结果操作数指针INCSIINCDIINCBXPOPAX ;恢复恢复AX的值的值RETSUBADDENDPCODEENDSEND MADD65第四章:汇编语言程序设计第四章:汇编语言程序设计总结总结 了解汇编的概念及其方法了解汇编的概念及其方法, , 掌握汇编程序的基本格式,常用运算符掌握汇编程序的基本格式,常用运算符的使用方法,汇编的步骤。的使用方法,汇编的步骤。 66

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号