第4章 汇编语言程序设计_第1页
第4章 汇编语言程序设计_第2页
第4章 汇编语言程序设计_第3页
第4章 汇编语言程序设计_第4页
第4章 汇编语言程序设计_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、物理与电子电气工程学院物理与电子电气工程学院第第4 4章章 汇编语言程序设计汇编语言程序设计微机原理与接口技术微机原理与接口技术物理与电子电气工程学院概概 要要 4.1 汇编语言的格式汇编语言的格式 4.2 语句行的构成语句行的构成 4.3 指示性语句指示性语句4.4 指令语句指令语句4.5 汇编语言程序设计及举例汇编语言程序设计及举例微机原理与接口技术微机原理与接口技术物理与电子电气工程学院概概 要要汇编语言源程序汇编语言源程序(1 1)机器语言)机器语言二进制数形式的指令和数据。二进制数形式的指令和数据。 B0 64 B0 64 是什么意思?这就是机器语言。既不直是什么意思?这就是机器语言

2、。既不直观观, ,又不易理解和记忆又不易理解和记忆. . MOV ALMOV AL,64H 64H ;很容易记忆理解,这就是助记很容易记忆理解,这就是助记符。符。 (2 2)助记符)助记符用便于记忆的英语单词表示的指用便于记忆的英语单词表示的指令操作码。它反映了指令的功能和主要特征令操作码。它反映了指令的功能和主要特征, ,便于便于人们理解和记忆。人们理解和记忆。微机原理与接口技术微机原理与接口技术物理与电子电气工程学院 汇编语言汇编语言指令助记符指令助记符, ,符号地址,标号符号地址,标号,伪指令等语言元素的集合以及这些元素使用,伪指令等语言元素的集合以及这些元素使用的规则。的规则。 用汇编

3、语言编写的程序叫汇编语言源程序。用汇编语言编写的程序叫汇编语言源程序。概概 要要微机原理与接口技术微机原理与接口技术物理与电子电气工程学院汇编程序汇编程序源程序的编译程序源程序的编译程序汇编程序汇编程序汇编语言汇编语言源程序源程序机器语言机器语言目标程序目标程序 汇编源程序需翻译成机器语言汇编源程序需翻译成机器语言, ,变成可执行文件变成可执行文件, ,机器才能执行机器才能执行, ,这个翻译过程叫汇编。这个翻译过程叫汇编。高级语言高级语言中称该过程为中称该过程为“解释解释”或或“编译编译”。执行翻译的程。执行翻译的程序称为序称为“汇编程序汇编程序”。微机原理与接口技术微机原理与接口技术物理与电

4、子电气工程学院汇编语言程序设计与执行过程汇编语言程序设计与执行过程u输入汇编语言源程序输入汇编语言源程序 源文件源文件 . .ASMASMu汇编(编译)汇编(编译) 目标文件目标文件 . .OBJOBJu链接链接 可执行文件可执行文件 . .EXEEXEu调试调试 最终程序最终程序微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.1 汇编语言的格式汇编语言的格式段的开始段的开始段的结束段的结束寄存器与寄存器与段的关联段的关联程序结束标记程序结束标记微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.1 汇编语言的格式汇编语言的格式S_NAME1 SEGMENT 语句语句

5、语句语句S_NAME1 ENDSS_NAME2 SEGMENT 语句语句 语句语句S_NAME2 ENDSS_NAME3 SEGMENT 语句语句 语句语句S_NAME3 ENDS END(1 1)每个段有)每个段有1 1个名字,以符个名字,以符号号SEGMENTSEGMENT作为段的开始,以作为段的开始,以语句语句ENDSENDS作为段的结束;作为段的结束;(2 2)段的开始与结束都必须)段的开始与结束都必须有名字,而且名字必须相同;有名字,而且名字必须相同;(3 3)1 1个源程序由若干个段组个源程序由若干个段组成,整个源程序以成,整个源程序以ENDEND作为结作为结束。束。微机原理与接口

6、技术微机原理与接口技术物理与电子电气工程学院4.1 汇编语言的格式汇编语言的格式1、定义一个段、定义一个段(1)一个汇编程序是由多个段组成的,这些段)一个汇编程序是由多个段组成的,这些段被用来存放代码、数据或当作栈空间来使用。被用来存放代码、数据或当作栈空间来使用。(2)一个有意义的汇编程序中至少要有一个段)一个有意义的汇编程序中至少要有一个段,这个段用来存放代码。,这个段用来存放代码。微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.1 汇编语言的格式汇编语言的格式2、程序结束标记、程序结束标记(1 1)End End 是一个汇编程序的结束标记,编译器是一个汇编程序的结束标记,编

7、译器在编译汇编程序的过程中,如果碰到了伪指令在编译汇编程序的过程中,如果碰到了伪指令 endend,就结束对源程序的编译。,就结束对源程序的编译。(2 2)如果程序写完了,要在结尾处加上伪指令)如果程序写完了,要在结尾处加上伪指令end end 。否则,编译器在编译程序时,无法知道。否则,编译器在编译程序时,无法知道程序在何处结束。程序在何处结束。(3 3)注意:不要搞混了)注意:不要搞混了endend和和endsends。微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.1 汇编语言的格式汇编语言的格式3 3、寄存器与段的关联假设、寄存器与段的关联假设(1 1)assumeass

8、ume:含义为:含义为“假设假设”。(2 2)它假设某一段寄存器和程序中的某)它假设某一段寄存器和程序中的某一个用一个用 segment segment ends ends 定义的段相关定义的段相关联。联。(3 3)通过)通过assumeassume说明这种关联,在需要说明这种关联,在需要的情况下的情况下 ,编译程序可以将段寄存器和,编译程序可以将段寄存器和某一个具体的段相联系。某一个具体的段相联系。微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.2 语句行的构成语句行的构成;(AX)=123H(AX)=123H;(BX)=456H(BX)=456H;(AX)=(AX)+(BX)

9、(AX)=(AX)+(BX);(AX)=(AX)+(AX)(AX)=(AX)+(AX)语句行语句行微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.2 语句行的构成语句行的构成u汇编语言的语句有两种:汇编语言的语句有两种:n指令性语句指令性语句由由80868086指令助记符构成的语句指令助记符构成的语句n指示性语句指示性语句由伪指令构成的语句由伪指令构成的语句u指令性语句的格式为:指令性语句的格式为:u 标号标号: : 指令助记符指令助记符 目的操作数,源操作数目的操作数,源操作数 ; ;注释注释u 指示性语句的格式为:指示性语句的格式为:u 名字名字 伪指令伪指令 操作数操作数1

10、,1,操作数操作数2,2, ,操作数操作数n n ; ;注释注释u注:各部分之间至少要用一个空格作为分隔符。注:各部分之间至少要用一个空格作为分隔符。微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.2 语句行的构成语句行的构成指令性语句指令性语句由由CPUCPU执行,每一条指令性语句都有一执行,每一条指令性语句都有一条机器码指令与其对应;条机器码指令与其对应;指示性语句指示性语句由汇编程序执行。它指出汇编程序应如由汇编程序执行。它指出汇编程序应如何对源程序进行汇编,如何定义变量、分配存储单何对源程序进行汇编,如何定义变量、分配存储单元以及指示程序开始和结束等。指示性语句无机器元以

11、及指示程序开始和结束等。指示性语句无机器码指令与其相对应。码指令与其相对应。 指令性语句汇编时生成机器码;指令性语句汇编时生成机器码; 指示性语句汇编时不生成机器码。指示性语句汇编时不生成机器码。微机原理与接口技术微机原理与接口技术物理与电子电气工程学院u标号标号指令的符号地址,用来代表指令在存储器中的地址。指令的符号地址,用来代表指令在存储器中的地址。只能出现在指令性语句中,标号后应加上冒号。只能出现在指令性语句中,标号后应加上冒号。u名字名字段、过程、变量的名字,用来代表它们在存储器中段、过程、变量的名字,用来代表它们在存储器中的地址。的地址。只能出现在指示性语句中,名字后不加冒号。只能出

12、现在指示性语句中,名字后不加冒号。u指令助记符指令助记符80868086助记符、伪指令助记符、伪指令u操作数操作数即指令的操作对象即指令的操作对象n对指令性语句对指令性语句0 0,1 1,2 2个个n对指示性语句对指示性语句根据需要而定根据需要而定n操作数之间以逗号分隔操作数之间以逗号分隔n操作数可以是:寄存器、存储单元、常数或表达式操作数可以是:寄存器、存储单元、常数或表达式 例如:例如:AXAX,DI+BX+10DI+BX+10,200200,1616* *8+TABLE8+TABLE,等等,等等4.2 语句行的构成语句行的构成微机原理与接口技术微机原理与接口技术物理与电子电气工程学院u注

13、释注释以分号开头,可放在指令后,也可单独以分号开头,可放在指令后,也可单独一行。一行。u注意注释的写法。要写指令(段)在程序中的作注意注释的写法。要写指令(段)在程序中的作用,而不要写指令的操作。用,而不要写指令的操作。u 例如:以下为同一条指令写的注释例如:以下为同一条指令写的注释u 1 1)MOV CX,100 ;MOV CX,100 ;传送传送100100到到CXCXu 2 2)MOV CX,100 ;MOV CX,100 ;循环计数器置初值循环计数器置初值u 显然,第二种写法要比第一种写法要好。显然,第二种写法要比第一种写法要好。 4.2 语句行的构成语句行的构成微机原理与接口技术微机

14、原理与接口技术物理与电子电气工程学院4.2 语句行的构成语句行的构成数据项与表达式数据项与表达式1.1.常量常量二进制数二进制数, ,以以B B结尾。如结尾。如01001101B01001101B。十进制数十进制数, ,如如8585。十六进制数十六进制数, ,以以H H结尾。第结尾。第1 1个数字为个数字为A-FA-F时,时,前面应加前面应加0 0,如,如0 0F160HF160H。字符串:用引号括起来的字符串:用引号括起来的1 1个或多个字符。如个或多个字符。如ERROR!ERROR!, , a a, ,汇编时被翻译成对应的汇编时被翻译成对应的ASCIIASCII码码4 45H,52H,52

15、H,4FH,52H,21H5H,52H,52H,4FH,52H,21H和和61H61H。微机原理与接口技术微机原理与接口技术物理与电子电气工程学院有三个属性:有三个属性: 段地址:即标号所在段的段地址;段地址:即标号所在段的段地址; 偏移量:标号所代表存储单元的段内偏移地址;偏移量:标号所代表存储单元的段内偏移地址; 类类 型:型:NEARNEAR或或FARFAR: NEARNEAR表示标号所在语句与转移指令表示标号所在语句与转移指令/ /调用指令调用指令 在同一码段内在同一码段内, ,跳转时只需改变跳转时只需改变IPIP即可。即可。 FARFAR标号所在语句与转移指令标号所在语句与转移指令/

16、 /调用指令不在调用指令不在 同一代码段内。同一代码段内。 若没有对类型进行说明若没有对类型进行说明, ,默认为默认为NEARNEAR。标号通常作为标号通常作为转移指令转移指令或或CALLCALL指令指令的转移地址。的转移地址。2.2.标号标号指令所在内存单元的符号地址指令所在内存单元的符号地址4.2 语句行的构成语句行的构成微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.2 语句行的构成语句行的构成u标号和变量名的使用规则标号和变量名的使用规则n组成:组成:A-Z(A-Z(不分大小写不分大小写), 0-9, ), 0-9, ? . _ $ . _ $n不能以数字开头,句号不能以

17、数字开头,句号(.)(.)只能作为首字符只能作为首字符n长度小于长度小于3131个字符个字符n不能与保留字不能与保留字( (指令助记符、伪指令、预定义指令助记符、伪指令、预定义符号等符号等) )重名重名n不能重复定义不能重复定义u例如:例如:u 正确的:正确的:LP1, AGAIN, NEXT, _GO, OK_1LP1, AGAIN, NEXT, _GO, OK_1u 错误的:错误的:4M, LOOP, AAA, #HELP, +ONE4M, LOOP, AAA, #HELP, +ONE微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.4.表达式表达式u表达式是常数、寄存器、标号

18、、变量与运算符的表达式是常数、寄存器、标号、变量与运算符的组合。组合。u有数字表达式和地址表达式两种。有数字表达式和地址表达式两种。u汇编时按优先规则对表达式进行计算,计算出具汇编时按优先规则对表达式进行计算,计算出具体的数值或地址。运行时不能改变。体的数值或地址。运行时不能改变。u表达式中的运算符有表达式中的运算符有5 5类:算术、逻辑、关系、分类:算术、逻辑、关系、分析、合成析、合成4.2 语句行的构成语句行的构成微机原理与接口技术微机原理与接口技术物理与电子电气工程学院用于数字表达式用于数字表达式,例:例: MOV AX,4*1024汇编后的形式为汇编后的形式为: MOV AX,4096

19、 用于地址表达式用于地址表达式,例例: LEA SI,TAB+3若若TAB的偏移地址为的偏移地址为1000H,则汇编后的形式为:,则汇编后的形式为: LEA SI,1003H 1)算术运算符算术运算符 +、-、*、/,MOD4.2 语句行的构成语句行的构成微机原理与接口技术微机原理与接口技术物理与电子电气工程学院逻辑运算符只能用于数字表达式中。逻辑运算符只能用于数字表达式中。 例:例:MOVMOVCL,36H AND 0FHCL,36H AND 0FH 经汇编后:经汇编后:MOV CL,06HMOV CL,06H注意,不要把逻辑运算符与逻辑运算指令混淆:注意,不要把逻辑运算符与逻辑运算指令混淆

20、: 例:例:AND AX, AND AX, 3FC0H AND 0FF00H3FC0H AND 0FF00H 汇编后源操作数被翻译为:汇编后源操作数被翻译为:3F00H3F00H,所以上述指令与,所以上述指令与AND AND AX, 3F00HAX, 3F00H等价。等价。2)2)逻辑运算符逻辑运算符 AND AND、OROR、XORXOR、NOTNOT4.2 语句行的构成语句行的构成微机原理与接口技术微机原理与接口技术物理与电子电气工程学院关系运算的结果是一个逻辑值:真或假关系运算的结果是一个逻辑值:真或假 关系为真关系为真, ,结果为全结果为全1 1 关系为假关系为假, ,结果为全结果为全

21、0 0例:例:MOV BX,PORT GT 300HMOV BX,PORT GT 300H 若若PORTPORT的值大于的值大于300H,300H,则汇编后为:则汇编后为: MOV BX,0FFFFHMOV BX,0FFFFH 否则汇编后为:否则汇编后为: MOV BX,0MOV BX,03)3)关系运算符关系运算符EQEQ、NENE、LTLT、GTGT、LELE、GEGE4.2 语句行的构成语句行的构成微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.3 指示性语句(伪指令)指示性语句(伪指令)u符号定义语句符号定义语句u数据定义语句数据定义语句u段定义语句段定义语句u过程定义语

22、句过程定义语句u宏定义语句宏定义语句u结束语句结束语句微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.3 指示性语句(伪指令)指示性语句(伪指令)1 1、符号定义伪指令、符号定义伪指令u 把一个表达式用一个符号表示,以后凡出现该把一个表达式用一个符号表示,以后凡出现该表达式的地方都可用这个符号表示。类似于表达式的地方都可用这个符号表示。类似于C C语言语言中的中的#define#define。u符号定义伪指令有两种:符号定义伪指令有两种:EQUEQU,= = 用用EQUEQU定义的符号未清除前定义的符号未清除前, ,不能重新定义。清不能重新定义。清除除EQUEQU定义可用定义可用

23、PURGE伪指令。伪指令。 用用”= =”定义的符号可在任何时候进行重定义。定义的符号可在任何时候进行重定义。 二者均不占用存储空间二者均不占用存储空间, ,仅是给符号赋值仅是给符号赋值 微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.3 指示性语句(伪指令)指示性语句(伪指令)u例:例:FIVE EQU 5u COUNT EQU CXu TEN EQU 10u DIST = BYTE PTRSI+BPu GOTO = JMP u u MOV AX, TENu MOV CX, COUNTu ADD DIST, FIVEu DIST = WORD PTRSI+BP+1u ADD D

24、IST, AXu GOTO LABEL 定义定义引用引用微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.3 指示性语句(伪指令)指示性语句(伪指令)2 2、 数据定义伪指令数据定义伪指令u 用于定义变量,即内存单元或数据区。数据定用于定义变量,即内存单元或数据区。数据定义伪指令的格式为:义伪指令的格式为:u变量名变量名 数据定义伪指令数据定义伪指令 操作数,操作数,操作数,操作数,u常用的数据定义伪指令有如下几种:常用的数据定义伪指令有如下几种:u DB DB 定义字节定义字节u DW DW 定义字定义字u DD DD 定义双字定义双字u操作数可以是常数、变量或表达式操作数可以是

25、常数、变量或表达式微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.3 指示性语句(伪指令)指示性语句(伪指令)例:例:DATA_B DB 10,5,10HDATA_W DW 100H,-4DATA_D DD 0FFFBH汇编后的内存分配情况汇编后的内存分配情况如右图所示。如右图所示。05H10H00H01HFCHFFHFBHFFH00H00H0AH微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.3 指示性语句(伪指令)指示性语句(伪指令)u例:操作数可以是字符串,例如例:操作数可以是字符串,例如uSTR DBHELLOu汇编后的情况如图:汇编后的情况如图:STRHE

26、LLO48H45H4CH4CH4FH微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.3 指示性语句(伪指令)指示性语句(伪指令)u操作数操作数? ?用来保留存储空间用来保留存储空间, ,但不存入数据但不存入数据. .u例:例:ABC DB 0,1,2,3,4,OK,$u RSV DW ?,?,?,?,?,?,?,?u复制操作符复制操作符DUP:DUP:u重复的数据可以使用复制操作符重复的数据可以使用复制操作符DUPDUP, ,如上面如上面RSVRSV亦可写亦可写成成: :u RSV DW 8 DUP(?)微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.3 指示性语句

27、(伪指令)指示性语句(伪指令)3 3、 段定义伪指令段定义伪指令u汇编语言程序是按段来组织程序和数据的。汇编语言程序是按段来组织程序和数据的。u 和存储器的物理段相对应,汇编语言程序中的段和存储器的物理段相对应,汇编语言程序中的段称为逻辑段。汇编连接后被映射到物理段中。称为逻辑段。汇编连接后被映射到物理段中。u三类段:代码三类段:代码( (程序程序) )、数据、堆栈、数据、堆栈u段定义伪指令:段定义伪指令:SEGMENTSEGMENT、ENDSENDS、ASSUMEASSUME、ORGORGu定义一个段的基本格式:定义一个段的基本格式:u 段名段名 SEGMENT SEGMENT 定位类型定位

28、类型组合方式组合方式类别类别 u u 段名段名 ENDSENDS微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.3 指示性语句(伪指令)指示性语句(伪指令)u 这两个伪指令总是成对出现,二者前面的段名这两个伪指令总是成对出现,二者前面的段名应一致。应一致。SEGMENT说明了一个段的开始,说明了一个段的开始,ENDSENDS说明了一个段的结束。说明了一个段的结束。u 对数据段和堆栈段,段中的语句一般是变量定对数据段和堆栈段,段中的语句一般是变量定义。对代码段则是指令语句。义。对代码段则是指令语句。u 如:如: data SEGMENTu u data ENDS 和微机原理与接口技

29、术微机原理与接口技术物理与电子电气工程学院4.3 指示性语句(伪指令)指示性语句(伪指令)ASSUME伪指令伪指令u在代码段中,还必须明确段和段寄存器的关系,在代码段中,还必须明确段和段寄存器的关系,这由这由ASSUME语句来指定。如语句来指定。如u ASSUME CS:code, DS:data, ES:datau 语句中的语句中的code和和data为段名。为段名。u 这个语句说明:这个语句说明:u 1. CS将指向名字为将指向名字为code的代码段的代码段u 2. DS和和ES将指向名字为将指向名字为data的数据段的数据段微机原理与接口技术微机原理与接口技术物理与电子电气工程学院u但要

30、注意但要注意, ,ASSUME伪指令只是告知汇编程序伪指令只是告知汇编程序有关段寄存器与段的关系有关段寄存器与段的关系, ,并没有给段寄存器赋并没有给段寄存器赋予实际的初值。故下面的语句予实际的初值。故下面的语句u MOV AX,DATAu MOV DS,AXu MOV ES,AXu将段基址装入段寄存器将段基址装入段寄存器。如果程序中用到堆栈。如果程序中用到堆栈段,则段,则SSSS也需装入实际的初值。也需装入实际的初值。u代码段基地址不需要程序员装入代码段基地址不需要程序员装入CS寄存器,寄存器,而由而由OS负责装入。负责装入。4.3 指示性语句(伪指令)指示性语句(伪指令)微机原理与接口技术

31、微机原理与接口技术物理与电子电气工程学院4.3 指示性语句(伪指令)指示性语句(伪指令)逻辑段从一个节逻辑段从一个节 ( (1616个字节个字节) ) 的边界开始。的边界开始。即即段的起始地址应能被段的起始地址应能被1616整除整除, , 或者说段或者说段起始物理地址应为起始物理地址应为0 0H H。默认类型默认类型逻辑段从字节边界开始,即段可以从任何地址开始。逻辑段从字节边界开始,即段可以从任何地址开始。逻辑段从字边界开始。即段的起始地址必须是偶数。逻辑段从字边界开始。即段的起始地址必须是偶数。逻辑段从页边界开始。逻辑段从页边界开始。256256字节称为一页,故段的起始字节称为一页,故段的起

32、始物理地址应为物理地址应为0000H H。微机原理与接口技术微机原理与接口技术物理与电子电气工程学院 说明不同模块中同名段的组合方式。说明不同模块中同名段的组合方式。 PUBLIC : 所有此类型的同名段组合成一个逻辑所有此类型的同名段组合成一个逻辑段,公用一个段地址,运行时装入同一个物理段段,公用一个段地址,运行时装入同一个物理段中。中。 COMMON : 所有此类型的同名段具有相同的起所有此类型的同名段具有相同的起始地址始地址( (覆盖覆盖) ),共享相同的存储区域。,共享相同的存储区域。 AT : 按绝对地址定位,段地址就是按绝对地址定位,段地址就是表达式的值。表达式的值。 STACK

33、: 专用于说明堆栈段,组合方式同专用于说明堆栈段,组合方式同PUBLICPUBLIC4.3 指示性语句(伪指令)指示性语句(伪指令)微机原理与接口技术微机原理与接口技术物理与电子电气工程学院u用单引号括起来的字符串。所有同类别的段被安排在连用单引号括起来的字符串。所有同类别的段被安排在连续的存储区域中。续的存储区域中。u如:在模块如:在模块1 1中有段定义:中有段定义:u seg1 SEGMENT PARA STACK stacku u seg1 ENDSu 在模块在模块2 2中有段定义:中有段定义:u seg2 SEGMENT PARA STACK stacku u seg2 ENDSu则连

34、接时这两个段被安排在一起。则连接时这两个段被安排在一起。4.3 指示性语句(伪指令)指示性语句(伪指令)微机原理与接口技术微机原理与接口技术物理与电子电气工程学院uORG规定了段内的指令或数据存放的开始地规定了段内的指令或数据存放的开始地址址( (偏移地址的初值偏移地址的初值) ),其格式为:,其格式为:u ORG u表达式的值即为开始地址,从此地址起连续存表达式的值即为开始地址,从此地址起连续存放程序或数据。放程序或数据。u例:例: ABC SEGMENTu ORG 100Hu begin: u u ABC ENDS 指令从指令从100H100H开始存放开始存放4.3 指示性语句(伪指令)指

35、示性语句(伪指令)微机原理与接口技术微机原理与接口技术物理与电子电气工程学院 4 4、过程定义伪指令、过程定义伪指令PROCPROC、ENDPENDPu 过程就是子程序。一个过程可以被其它程序所调用过程就是子程序。一个过程可以被其它程序所调用( (用用CALLCALL指令指令) ),过程的最后一条指令一般是返回指令,过程的最后一条指令一般是返回指令(RET)(RET)。u 过程定义伪指令的格式为过程定义伪指令的格式为u PROC 类型类型 u u u RETu ENDPu 注意:注意:PROC和和ENDP必须成对出现。必须成对出现。4.3 指示性语句(伪指令)指示性语句(伪指令)微机原理与接口

36、技术微机原理与接口技术物理与电子电气工程学院u 过程的类型有两种:过程的类型有两种:u NEARNEAR( (默认类型默认类型) )表示段内调用表示段内调用u FARFAR表示段间调用表示段间调用u调用一个过程的格式为:调用一个过程的格式为:uCALL CALL 4.3 指示性语句(伪指令)指示性语句(伪指令)微机原理与接口技术微机原理与接口技术物理与电子电气工程学院5 5、 汇编结束伪指令汇编结束伪指令ENDEND4.3 指示性语句(伪指令)指示性语句(伪指令)微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.5 汇编语言程序设计及举例汇编语言程序设计及举例 4.5.1 算术运算

37、程序设计算术运算程序设计4.5.2 分支程序设计分支程序设计 4.5.3 循环程序设计循环程序设计4.5.4 字符串处理程序设计字符串处理程序设计4.5.5 码转换程序设计码转换程序设计4.5.6 有关有关I/O的的DOS功能调用功能调用4.5.7 宏汇编与条件汇编宏汇编与条件汇编微机原理与接口技术微机原理与接口技术物理与电子电气工程学院1、 显示字符源程序显示字符源程序5050行语句行语句微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.5 汇编语言程序设计及举例汇编语言程序设计及举例根据实际问题抽象出数学模型根据实际问题抽象出数学模型, ,确定算法确定算法画出程序框图画出程序框

38、图( (流程图流程图) ) 分配内存工作单元和寄存器分配内存工作单元和寄存器根据框图编写源程序,存成根据框图编写源程序,存成.ASM.ASM文件文件对源程序汇编,生成对源程序汇编,生成.OBJ.OBJ目标文件目标文件把把.OBJ.OBJ文件连接成文件连接成.EXE.EXE执行文件执行文件运行、调试运行、调试 汇编语言程序设计的步骤:汇编语言程序设计的步骤:微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.5 汇编语言程序设计及举例汇编语言程序设计及举例源程序从写出到执行的过程:源程序从写出到执行的过程:Mov ax,0123hMov bx,0456hAdd ax,bx源程序文件源程

39、序文件B82301BB560401DB可执行文件可执行文件1、编写汇编、编写汇编程序程序2、对源程序进行、对源程序进行编译连接编译连接3、执行可执行文、执行可执行文件中的程序件中的程序微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.5 汇编语言程序设计及举例汇编语言程序设计及举例(1)(1)用方框表示工作框,框中用简明语言标明要完用方框表示工作框,框中用简明语言标明要完成的功能成的功能(2) (2) 用菱形框表示判断框用菱形框表示判断框 框中标明比较、判断和条件框中标明比较、判断和条件如何绘制程序框图如何绘制程序框图( (流程图流程图) )?YN?微机原理与接口技术微机原理与接口

40、技术物理与电子电气工程学院4.5 汇编语言程序设计及举例汇编语言程序设计及举例(4)(4)各框之间用直线连起来表示程序走向。各框之间用直线连起来表示程序走向。框中标明子程序名字框中标明子程序名字( (入口参数等入口参数等) )(3)(3)用用 框表示调用子程序或过程。框表示调用子程序或过程。 微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.5 汇编语言程序设计及举例汇编语言程序设计及举例源程序的基本结构源程序的基本结构:顺序顺序分支分支循环循环处理处理P1P1条件满足条件满足?处理处理P2P2标号标号1:1:标号标号2:2:条件条件1 1条件条件2 2初始化初始化循环体循环体循环

41、控制循环控制继续循环?继续循环?YN初始化初始化处理处理1处理处理2微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.5 .1 算术运算程序算术运算程序 算术运算程序设计是程序设计中算术运算程序设计是程序设计中最简单的设计方法,它是将确定好最简单的设计方法,它是将确定好的算法或逻辑关系以正确的语句和的算法或逻辑关系以正确的语句和正确的逻辑关系有序地编写出来,正确的逻辑关系有序地编写出来,形成程序。形成程序。微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.5 .1 直线运行程序直线运行程序例:求两例:求两3232位无符号数的乘积。位无符号数的乘积。ABDCLBDHBDL

42、ADHADLBCHBCLACHACR1C0、1C2R2R3R4C1C3微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.5 .1 直线运行程序直线运行程序内存定义:内存定义:DWDWBADCR1R2R3R4BX+00BX+02 BX+04 BX+06 BX+08 BX+0A BX+0CBX+0E被乘数被乘数乘数乘数积积微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.5.1 直线运行程序直线运行程序微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.5.1 直线运行程序直线运行程序微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.5.2 分支程序设

43、计分支程序设计标号标号: :条件满足条件满足?处理处理N NY YIFIFTHENTHEN结构结构程序结构:程序结构: 测试测试/ /比较指令比较指令 (TEST/CMP)(TEST/CMP) 条件转移指令条件转移指令 (Jx (Jx 标号标号) ) 处理体处理体 标号标号: : 其他指令其他指令 微机原理与接口技术微机原理与接口技术物理与电子电气工程学院程序结构:程序结构: TEST/CMP TEST/CMP指令指令 Jx Jx 标号标号1 1 处理体处理体P1P1 JMP JMP 标号标号2 2标号标号1 1: 处理体处理体P2P2标号标号2 2:其他指令:其他指令 条件满足条件满足?处理

44、处理P1P1处理处理P2P2标号标号1:1:标号标号2:2:条件条件1 1条件条件2 2IFIFTHENTHENELSEELSE结构结构4.5.2 分支程序设计分支程序设计微机原理与接口技术微机原理与接口技术物理与电子电气工程学院标号标号1:条件条件1成立成立?P1NYCASE结构结构程序结构:程序结构: TEST/CMP指令(测试条件指令(测试条件1) Jx 标号标号1 ;不满足转标号不满足转标号1 处理体处理体P1 JMP 标号标号n+1标号标号1:TEST/CMP指令(测试条件指令(测试条件2) Jx 标号标号2 ;不满足转标号不满足转标号2 处理体处理体P2 JMP 标号标号n+1标号

45、标号2:TEST/CMP指令(测试条件指令(测试条件3) Jx 标号标号3 ;不满足转标号不满足转标号3 处理体处理体P3 JMP 标号标号n+1标号标号3:TEST/CMP指令(测试条件指令(测试条件4) 标号标号n+1:(公共出口):(公共出口)条件条件2成立成立?条件条件n成立成立?Pn+1标号标号2:标号标号n:标号标号n+1:P2PnNNYY4.5.2 分支程序设计分支程序设计微机原理与接口技术微机原理与接口技术物理与电子电气工程学院 对于程序中多次、有规律执行的部分,我们通常使用循环对于程序中多次、有规律执行的部分,我们通常使用循环结构重复运行这些部分,使程序有较高的运行效率和可读

46、性。结构重复运行这些部分,使程序有较高的运行效率和可读性。循环结构主要由三部分组成,它们是:循环结构主要由三部分组成,它们是:1. 1. :重复运行的部分,其中还包含了工作部分和循环控重复运行的部分,其中还包含了工作部分和循环控制部分。工作部分进行相应的操作,而循环控制部分则保证在制部分。工作部分进行相应的操作,而循环控制部分则保证在不满足循环条件时,跳出循环。不满足循环条件时,跳出循环。2. 2. :在循环体中包括了循环结束条件运算部分。在循环体中包括了循环结束条件运算部分。每循环一次除了工作部分进行相应的操作外,循环条件部分还每循环一次除了工作部分进行相应的操作外,循环条件部分还要通过运算

47、,得出当前循环的状态,以便在适当的条件下结束要通过运算,得出当前循环的状态,以便在适当的条件下结束循环。循环。3. 3. :用于设置开始循环时,循环体所处的初始状态,用于设置开始循环时,循环体所处的初始状态,如循环变量初值,循环体中用到的数据和地址指针等。如循环变量初值,循环体中用到的数据和地址指针等。4.5.3 循环程序设计循环程序设计微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.5.3 循环程序设计循环程序设计 1 1DODOUNTILUNTIL 结构结构 先执行,再判断条件。工作部分至少执行先执行,再判断条件。工作部分至少执行一次。一次。初始化初始化循环体循环体循环控制循

48、环控制继续循环?继续循环?YN微机原理与接口技术微机原理与接口技术物理与电子电气工程学院 2. DO WHILE 2. DO WHILE 结构结构 先判断条件,再执行。工作部分有可能一先判断条件,再执行。工作部分有可能一次都不执行。次都不执行。初始化初始化循环体循环体循环控制循环控制继续循环继续循环?Y YN N4.5.3 循环程序设计循环程序设计微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.5.3 循环程序设计循环程序设计例:在一串给定个数的数中寻找最大值,放至指定例:在一串给定个数的数中寻找最大值,放至指定的存储单元。(每个数用的存储单元。(每个数用1616位表示)位表示)

49、初始化初始化N NN N取待比较数取待比较数比较大小比较大小?置大数置大数取下一个数取下一个数CX=0CX=0?Y Y返回返回微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.5.4 字符串处理程序设计字符串处理程序设计1 1、确定字符串的长度、确定字符串的长度2 2、加偶校验到、加偶校验到ASCIIASCII字符字符微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.5.5 码转换程序设计码转换程序设计1 1、十六进制到、十六进制到ASCIIASCII的转换的转换2 2、从二进制到、从二进制到ASCIIASCII串的转换串的转换微机原理与接口技术微机原理与接口技术物理与

50、电子电气工程学院4.5.6 有关有关I/O的的DOS功能调用功能调用u系统功能调用系统功能调用由由OSOS提供的一组实现特殊功能提供的一组实现特殊功能的子程序供程序员在程序中调用,以减轻编程工的子程序供程序员在程序中调用,以减轻编程工作量。作量。u系统功能调用有两种,一种称为系统功能调用有两种,一种称为DOSDOS功能调用,功能调用,另一种称为另一种称为BIOSBIOS功能调用。功能调用。u用户程序在调用这些系统服务程序时,不是用用户程序在调用这些系统服务程序时,不是用CALLCALL命令,而是采用软中断指令命令,而是采用软中断指令INT nINT n来实现。来实现。u在在DOSDOS系统系统

51、中,功能调用都是用软中断指令中,功能调用都是用软中断指令INT INT 21H21H来实现的。来实现的。微机原理与接口技术微机原理与接口技术物理与电子电气工程学院4.5.6 有关有关I/O的的DOS功能调用功能调用微机原理与接口技术微机原理与接口技术物理与电子电气工程学院关于数据输入和输出我们这里只讨论键盘输关于数据输入和输出我们这里只讨论键盘输入和显示输出入和显示输出, ,调用系统功能需要提供入口参数调用系统功能需要提供入口参数及所调用的功能号及所调用的功能号, ,调用结束返回结果。调用结束返回结果。1. 1. DOSDOS键盘功能调用键盘功能调用(1) (1) 从键盘输入一个字符从键盘输入

52、一个字符( (功能号功能号=1)=1) MOV AH,1 MOV AH,1 INT 21H INT 21H AL 4.5.6 有关有关I/O的的DOS功能调用功能调用微机原理与接口技术微机原理与接口技术物理与电子电气工程学院u例例: :程序中有时需要用户对提示做出应答。程序中有时需要用户对提示做出应答。u GET_KEY: MOV AH,1 GET_KEY: MOV AH,1; ;等待键入字符等待键入字符u INT 21HINT 21H; ;结果在结果在ALAL中中u CMP AL,CMP AL,Y Y ; ;是是Y Y? ?u JZ YES JZ YES ; ;是是, ,转转YESYESu

53、CMP AL, CMP AL,N N ; ;是是N N? ?u JZ NO JZ NO ; ;是是, ,转转NONOu JMP GET_KEY JMP GET_KEY ; ;否则继续等待输入否则继续等待输入u YES: YES: u u NO: NO: 4.5.6 有关有关I/O的的DOS功能调用功能调用微机原理与接口技术微机原理与接口技术物理与电子电气工程学院u(2) (2) 输入字符串输入字符串( (功能号功能号=0AH)=0AH)u 此功能调用从键盘输入一串字符并把它存入用此功能调用从键盘输入一串字符并把它存入用户指定的缓冲区中。户指定的缓冲区中。u MOV AH, 0AHMOV AH,

54、 0AHu LEA DX, LEA DX, u INT 2INT 21 1H H (预留的预留的N1个字节的存储单元个字节的存储单元) 0DHN2N1 N1: N1: 缓冲区长度缓冲区长度( (最大键入字符数最大键入字符数) ) N2: N2: 实际键入的字符数实际键入的字符数( (不包括回车符不包括回车符) ) 用户定义的输入字符串的缓冲区格式用户定义的输入字符串的缓冲区格式 4.5.6 有关有关I/O的的DOS功能调用功能调用微机原理与接口技术微机原理与接口技术物理与电子电气工程学院u 若用户键入的字符数若用户键入的字符数( (包括回车包括回车) )定义的定义的N1,N1,本功本功能调用将不再接收新的键入,且光标不再向右移动。能调用将不再

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论