1、1在线教务辅导网:在线教务辅导网:http:/教材其余课件及动画素材请查阅在线教务辅导网教材其余课件及动画素材请查阅在线教务辅导网QQ:349134187 或者直接输入下面地址:或者直接输入下面地址:http:/2第第4 4章章 汇编语言程序设计汇编语言程序设计 内容提要:本章介绍了汇编语言基本语法,汇编语言程序的实现,汇编语言程序设计方法及应用,并通过程序设计举例说明了顺序结构程序设计;分支结构程序设计;循环结构程序设计;子程序设计以及宏的定义和调用。学习要求:熟练掌握8086/8088微处理器汇编语言程序设计的方法及应。机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术3汇
2、编语言程序设计汇编语言程序设计 4.1 汇编语言基础 4.2 汇编语言程序结构 4.3 汇编语言程序设计 小结 机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术44 4.1.1 汇编语言基础汇编语言基础 在计算机内部,控制计算机工作的指令都以二进制代码形式出现,这样的指令称为机器指令,用机器指令编写的程序称为机器语言程序。可见,机器语言是二进制编码表示的命令和数据的总称,是面向机器的,能够被计算机直接识别和执行。然而,二进制表述的机器语言既不直观,又不便于记忆、阅读和书写,为了程序设计的方便,产生了汇编语言。汇编语言是一种符号语言,用与操作功能含义相应的缩写英文字符组成的助记
3、符号作为编程使用的语言,来表示二进制格式的指令代码和变量地址。计算机在运行汇编语言程序之前要先将其转换成机器代码,才能由计算机识别执行,转换的过程是由编译程序来完成。4.1.1 汇编语言概述机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术54.1.2 汇编语言语句格式汇编语言语句格式 同其它语言一样,汇编语言的基本组成单位是语句,在汇编语言源程序中每个语句由四项组成,其格式如下:标号:操作码 操作数 ;注释其中,操作项是必不可少的。1、标号字段 标号是一个可选字段,由字母(A Z、a z)数字(0 9)及专用字符(?、.、-、$)组成的字符串,最长不超过31个字符,要求必须以
4、字母开头,用冒号与操作项分开。机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术62 2操作码字操作码字段段操作码是汇编语言程序中不可省略的部分,用指令助记符或定义符表示的机器指令操作码,如:MOV、ADD等,它告诉CPU要完成何种操作(操作功能)(操作功能)。有的操作码带有前缀,指令系统中允许与指令助记符一起出现的前缀是前缀指令和段超越前缀。3 3操作数字段操作数字段 操作数紧跟在操作码之后,具体指明指令对哪些变量或常数进行操作(操作对象)(操作对象),它可以是两个操作数、一个操作数或无操作数。如:MOV、ADD等指令要求两个操作数,它们之间用逗号隔开;NEG、INC等指令只
5、需要一个操作数;而CLC等指令不需要写操作数,因为操作数已隐含在指令助记符中。操作数可以是数据,也可以是存放数据的地址,所以可以作为操作数的有:常量、变量、表达式、寄存器和标号。机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术7注释也是一个可选项,跟在汇编语句之后,以分号“;”开始,注释内容并不出现在汇编后的机器代码中,也不影响汇编程序的功能。一段完整的程序中,注释是很重要的部分,它用于说明一条指令或一段程序的功能,阐述程序的思路,使程序容易阅读,特别在模块化程序设计中可通过注释将各模块的功能描述出来,大大加强了程序的可读性。4、注释机械工业出版社机械工业出版社 微机原理及接
6、口技术微机原理及接口技术8 汇编语言源程序采用分段式结构,一个汇编语言源程序由若干个逻辑段组成,每个逻辑段以SEGMENT语句开始,以ENDS语句结束,整个源程序以END语句结束。而逻辑段包括数据段、堆栈段、代码段及附加段,要注意任何一个源程序至少必须有一个代码段和一条作为源程序文件结束的伪指令END,END后面的标号START表示该程序执行时的启动地址。4.2 汇编语言程序结构4.2.1 源程序机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术91数据定义伪指令4.2.2 伪指令 伪指令又称伪操作,汇编程序对源程序汇编时,伪指令本身不会产生可执行的机器指令代码,它仅仅是告诉汇
7、编程序有关源程序的某些信息,或者用来说明内存单元的用途,即伪指令在汇编过程中是由汇编程序执行的指令,它可以用来进行数据定义、符号定义、段定义、过程定义及程序命名及结束等主要操作。数据定义伪指令用于定义变量的类型、给存储器赋初值或给变量分配存储单元。常用的数据定义伪指令有DB、DW、DD等。一般格式为:标号 伪指令助记符 数据表达式机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术10 这里的符号是指变量名、标号名、过程名、指令助记符和寄存器名,符号定义伪指令用于给一个符号重新命名或定义新的类型属性。(1)EQU伪指令 EQU伪指令将表达式的值赋予一个名字,这是一个等值语句。定义
8、以后可以用这个名字来代替对应的表达式。表达式可以是一个常数、符号、数值、表达式或地址表达式,EQU伪指令的格式如下:名字 EQU 表达式2符号定义伪指令机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术11(2)等号(=)伪指令 等号(=)伪指令的功能与EQU伪指令相仿,区别在于它可以对同一个名字重复定义。其伪指令格式如下:名字 =表达式利用等号(=)伪指令可以使程序设计更加灵活。例如:TABLE=1MOV AX,TABLERRRR:ADD AX,1 TABLE=TABLE+1MOV AX,TABLECMP AX,100JNE RRRR 机械工业出版社机械工业出版社 微机原理及
9、接口技术微机原理及接口技术123段定义伪指令段定义伪指令在汇编语言源程序中定义逻辑段,提供了构造程序的手段。常用的段定义伪指令有ASSUME、SEGMENT和ENDS等。(1)SEGMENTSEGMENT和和ENDSENDS 用SEGMENT和ENDS伪指令可以将程序分成多个段,用于定义一个逻辑段,给逻辑段赋予一个段名,并在后面的任选项中给出这个逻辑段的其他特性,如定义类型、组合类型和类别。其伪指令格式如下:段名 SEGMENT 定位类型 组合类型 类别 (段定义体)段名 ENDS(2)ASSUME ASSUME 指示汇编程序指定段所使用的寄存器,即将段寄存器与某个逻辑段建立起对应关系,该伪指
10、令不产生任何目标代码。其格式如下:ASSUNE 段寄存器名:段名,段寄存器名:段名机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术13过程又称子程序,它是程序的一部分,可以被程序调用,当过程中的指令执行完后,返回程序调用点,调用过程的指令是CALL,从过程返回的指令为RET。程序设计中,我们常常把具有一定功能的程序段设计成一个子程序,汇编程序用“过程”来构造子程序。过程定义伪指令的格式如下:过程名 PROC NEAR/FAR ;NEAR与FAR只选一个,或缺省 (过程体)过程名 ENDP4过程定义伪指令机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术14汇编
11、程序内,为了指定下一个数据或指令在相应段中的偏移量,汇编程序使用了一个定位伪指令。其格式为:ORG 表达式它表示把表达式的值赋给当前位置计数器$。5定位伪指令ORG和当前位置计数器$6标题伪指令TITLE标题伪指令TITLE用于给程序设置一个标题,列表文件中每一页的第一行都会显示这个标题,它是用户任意选定的字符串,但是字符的个数不能超过60,用END标识源程序模块的结束,其后可跟程序启动标号或过程名,用于指明程序的启动地址,系统根据这个地址初始化CS。其格式为:TITLE 字符串 END 启动标号机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术157源程序结束伪指令告诉汇编程
12、序任务到此结束,其后可跟程序启动标号或过程名,用于指明程序执行时第一条指令的地址。其格式为:END 表达式4.2.2 伪指令汇编语言中,如果源程序中需要多次重复使用同一组指令,为了简化汇编语言源程序的书写,缩短主程序的长度,可以将这组指令定义为一个“宏指令”,以后需要时,可以按宏指令名来引用,这比子程序更灵活、更简便。机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术16宏定义的一般格式为:宏指令名 MACRO 形式参数1,形式参数2,(宏定义体)ENDM其中,宏定义符MACRO和宏结束符ENDM必须成对出现,其间的宏定义体就是用宏指令名来代替的指令组。形式参数用于向宏定义体传
13、送参数,在宏调用时代入实际参数,这使宏指令具有更强的通用性。宏调用格式为:宏指令名 实际参数1,实际参数2,1宏定义与宏调用机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术172宏取消伪指令PURGEPURGE的用途是取消已有的宏定义。汇编程序允许所定义的宏指令名与机器指令的助记符或伪指令的名字相同,汇编程序优先考虑宏指令的定义。也就是说,与宏指令同名的指令助记符或伪指令原来的含义失效。用伪指令PURGE取消宏指令定义后,可恢复这些机器指令或伪指令的原来含义。对一个宏指令重新定义时,也必须用伪指令PURGE取消原来的宏定义。其格式如下:PURGE 宏指令名,宏指令名,3重复宏
14、指令REPT重复宏体所包含的语句,重复次数由表达式的值决定。该语句与宏定义不同,宏定义可在程序不同地方多次引用,而重复宏指令只能在程序某个地方重复语句块。其格式如下:REPT 表达式 宏体 ENDM机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术184.3 汇编语言程序设计4.3.1 设计步骤程序设计是指为计算机编写能够接受并执行的,并具有实际意义的语句序列。汇编语言程序设计需要经过几个阶段,但问题的复杂程度不同编程者的经验不同,使得程序设计的具体过程也会有所不同。一般来说,在实际的程序设计中常常要经过以下几个阶段:1、分析题目 对给出的题目进行全面细致的了解和分析。了解程序
15、应完成的任务、应用的场合、硬件环境、人机接口要求、输入输出信息等,这是编程的准备阶段。2、建立数学模型 在分析问题和明确要求的基础上,建立数学模型。3、确定算法和处理方案 数学模型建立后,要研究具体的算法,也就是适合于计算机使用的计算方法,并对算法进行优化。机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术194、画出流程图 流程图是对算法和整个程序结构的描述,它以图形的方式把解决问题的先后次序形象地描述出来,也可以准确地描述各种程序结构之间的关系,这有利于程序的编写和调试。对于复杂的程序,一定要先画出流程图,这样才能从全局的角度来规划程序结构。流程图的基本元素如图4-3所示。
16、机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术205、编制程序 编制程序时,应先分配好存储空间及所使用的寄存器,根据流程图及算法编写程序。应注意的是,编写程序要简洁,注意提高程序的可读性。6、上机调试 程序编写完成之后,要进行上机调试。在调试过程中往往会碰到语法错误,连接错误等问题,这时需要及时修改源程序,再反复调试。对于复杂的程序一般分块解决,也就是先对独立的模块进行单独调试,最后将整个程序连接在一起调试。7、试运行 程序调试成功后,并不代表程序设计整个过程完成,试运行程序及分析程序各模块运行结果是检验程序是否达到要求的最后环节。有时程序调试通过了,但在执行过程中,却不能
17、达到原设计要求,这时还要动态地分析程序,从分析问题开始,对源程序进行修改,再对程序进行调试,最终达到设计要求。机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术214.3.2 顺序结构 顺序结构是解决简单问题的一种程序设计方法,它按指令存放的先后次序执行一系列操作。程序中没有分支、不循环、不转移,一直执行到最后一条指令,这种程序也称为直线程序。顺序结构程序在设计上比较简单,实际应用中,完全由顺序结构构成的程序很少,但它作为一个程序的局部却广泛存在于每个复杂程序中,它是设计复杂程序的基础。例4-1 求表达式Z=(10X+4Y)/2的值(X、Y为字节型变量,Z为字型变量)。解:本题
18、为典型的顺序结构。在数据段设定X、Y的数据是66H、35H,采用左移的方法完成10X、4Y,用右移的方法完成除2的计算。机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术22程序如下:DATA SEGMENT ;定义数据段 X DB 66H Y DB 35H ;定义X、Y为字节变量 Z DW?;定义Z为字变量DATA ENDCODE SEGMENT ;定义代码段 ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX ;对DS赋值 MOV AL,X SHL AX,1 ;AX=2X MOV BX,AX SHL BX,1 ;BX=4X S
19、HL BX,1 ;BX=8X ADD BX,AX ;BX=2X+8X 机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术23 MOV AH,0 MOV AL,Y SHL AX,1 ;AX=2Y SHL AX,1 ;AX=4Y ADD BX,AX ;AX=10X+4Y SHR BX,1 ;AX=(10X+4Y)/2 MOV Z,BX ;将结果存入Z MOV AH,4CH ;结束进程,返回操作系统 INT 21H CODE ENDS END START注意:上例没有使用堆栈段,所以程序中没有给SS、SP赋值,若使用了堆栈段,必须给堆栈段赋值。该程序中没有结果显示的程序段,程序运行后
20、屏幕上没有输出显示,可以执行DEBUG程序观察其运行结果。机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术244.3.3 分支结构 分支结构是对问题的处理方法有两种以上不同选择时,根据不同条件转向不同程序段执行的程序设计方法。分支结构要求程序先进行不同条件的判断,然后依据判断结果用控制转移指令,将程序的执行流程转移到相应的分支上去,判断一次只可能有一路分支被选择。机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术25机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术264.3.4 循环结构 循环结构按给定的条件重复做一系列的操作,直到条件满足为
21、止。循环结构可以在解决复杂问题时,缩短程序代码,提高编程效率。循环程序一般由循环初始状态设置、循环体和循环控制三个部分。循环初始状态:是循环的准备部分,主要给地址指针寄存器设置初始值、设置循环计数器初值、给累加器、进位标志清零等。循环体:包括循环的工作部分和修改部分,工作部分就是根据具体要求设计的程序段,修改部分是对各种计数器、累加器、进位标志的增量或减量修改,以配合工作部分的程序执行。循环控制:是循环的核心部分,通过测试循环的条件,控制循环程序的运行和结束。循环控制部分分计数控制法和条件控制法两种。机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术27机械工业出版社机械工业出
22、版社 微机原理及接口技术微机原理及接口技术284.3.5 子程序结构 在一个程序设计中,常常会出现不同的地方需要多次使用相同的某段程序代码的情况,如果在每个需要的地方都编写这一段程序代码,当程序装入内存时会占用很多的存储空间,造成不必要的资源开销,另外重复编写程序也增加了程序设计人员的工作量,并使程序复杂化,不便于阅读和检查。因此常将这一段公用的程序代码单独编制成一段程序代码,作为一个独立的程序模块处理,使用时就转移到这个公用程序段上,该程序段执行完毕后,又返回到原来的程序位置继续运行。这个单独编制的独立公用程序段称为子程序,也称过程,转移到子程序的过程称为调用子程序。机械工业出版社机械工业出
23、版社 微机原理及接口技术微机原理及接口技术291子程序的定义子程序由伪指令PR0C和ENDP定义。子程序和调用程序在同一代码段时,子程序设置为NEAR属性(或缺省);子程序和调用程序不在同一代码段时,子程序设置为FAR属性。子程序定义格式如下:子程序名 PROC 属性(NEAR或FAR)子程序体子程序名 ENDP机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术302子程序的调用和返回 子程序的调用和返回用指令CALL和RET实现。一般CALL指令在主程序中,它实质上是一条特殊的带返回的无条件转移指令,由于转移后要返回,所以要进行断点保护。而RET指令则在被调用子程序的末尾,在
24、子程序执行完后返回到CALL指令的下一条指令继续执行主程序,调用与返回指令的使用如图4-12所示。当然,子程序还可以调用其他子程序或自身。机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术313现场信息的保护和恢复 由于子程序执行时可能要使用某些寄存器,而主程序在调用子程序的前后也可能正在使用这些寄存器,此时主程序和子程序使用的寄存器就可能发生冲突,所以必须考虑现场信息的保护和恢复。这个过程可以在主程序中完成。4.参数传递子程序的设计要求有一定通用性,调用子程序时,经常要求主程序将参数传递给子程序,从子程序返回时,子程序往往要将处理结果传递回主程序。这就是主程序和子程序之间参数
25、的传送问题,参数传递的主要方法有以下四种:n 利用存储器传递参数n 利用寄存器传递参数n 利用堆栈传递参数n 利用公用数据区传递参数机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术324.3.6 系统功能调用 DOS系统设置了DOS和BIOS两组中断程序供调用,可以完成键盘输入、信息显示、存储管理、文件操作等服务。BIOS为系统中的输入输出设备提供软件接口,使用户在不了解硬件特性的情况下,也能通过调用其程序使用这些设备,它们驻留在系统ROM内存区,入口安排在中断向量表中,系统调用的中断类型号为051FH(关于中断的详细内容在第8章介绍)。DOS提供了更容易使用和方便移植的中断
26、程序,一般都尽量使用DOS功能调用。机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术33 DOS系统为程序设计人员提供了许多功能调用,即功能子程序,供用户调用。调用时使用中断指令:INT n 其中,n为中断调用类型号,其范围是10H0FFH。INT指令的执行过程为:(1)保护现场 SPSP-2,SS:SPFLAGS SPSP-2,SS:SPINT n下一条指令的CS SPSP-2,SS:SPINT n下一条指令的IP IP0000:n4,CS0000:n4+2 (2)查中断矢量表,获得中断程序的入口地址,并执行中断服务程序 中断服务程序执行完后,用中断返回指令IRET,恢复被
27、中断程序的断点地址和CPU状态,返回被中断程序继续执行。此时若有出口参数,应将其放在指定的寄存器或存储单元中,让用户可以取出使用。机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术34 DOS系统功能调用通常是指对类型号是21H的软中断子功能的调用,INT21H中断保护多个子程序,每个子程序对应一个功能号。下面对部分功能调用举例说明。1、带显示的键盘输入 01号功能调用。该功能调用是扫描键盘,等待键盘输入,若按下一个字符键,将字符的ASCII码送入寄存器AL,并在屏幕上显示该输入字符。若按下CTRL+BREAK组合键,将中断程序运行,返回DOS。此功能调用没有入口参数,出口参数
28、放在寄存器AL中,是输入字符的ASCII码。调用方式为:MOV AH,01H INT 21H机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术35 2、字符显示 02号功能调用。该功能调用是在屏幕上显示单个字符,先将要显示的字符的ASCII码存入DL中,调用时将DL寄存器中的字符送标准输出设备(如显示器)输出。注意,若DL中的内容为CTRL+BREAK的ASCII码时,退出功能调用。调用方式为:MOV AH,02H INT 21H 在屏幕上显示字符Y的使用示例如下:MOV DL,Y MOV AH,02H INT 21H机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接
29、口技术36 3、字符打印 05号功能调用。该功能调用是把DL寄存器的内容(ASCII码)送到标准打印设备打印输出。该功能调用与02号功能调用类似,也需要先将要打印的字符的ASCII码送DL寄存器,但两者的输出设备不同。调用方式为 MOV AH,05H INT 21H 例如要在打印机上打印字符A时,可以如下调用:MOV DL,A MOV AH,05H INT 21H机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术37 4、不带显示的键盘输入 07号功能调用。该功能调用与01H号功能调用类似,也是从键盘输入字符,将其ASCII码送AL寄存器,差别是07H功能调用不在屏幕上显示,也
30、不响应CTRL+BREAK组合键。这一特点,可以禁止由CTRL+BREAK引起的程序中断。调用方式为:MOV AH,07H INT 21H 5、不带显示的键盘输入 08号功能调用。该功能调用与07H号功能基本相同,差别是会对CTRL+BREAK组合键响应。调用方式为:MOV AH,08H INT 21H机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术38 6、字符串显示 09号功能调用。该功能调用是在显示器上显示以$为结束标志的字符串。调用前先把要显示的字符串存入缓冲区,注意在字符串的结尾存入$结束标志,并将缓冲区的首地址送DX寄存器,段基地址送DS寄存器。调用方式为:MOV
31、 AH,09H INT 21H 例如,在屏幕上显示ABCDEFG时,可进行下调用:DATA SEGMENT STRING DB ABCDEFG,$DATA ENDS MOV DS,SEG STRING MOV DX,OFFSET STRING MOV AH,09H机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术397字符串输入 10号功能调用该功能调用是将键盘上输入一行字符写入内存缓冲区中。10号功能调用示例如下:DATA SEGMENTBUF DB 20 ;定义缓冲区的大小 DB?;预留,存放输入字符个数 DB 20 DUP(?);存放输入字符 DATA ENGS MOV
32、DS,SEG BUF MOV DX,OFFSET BUF MOV AH,0AH INT 21H机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术408返回操作系统 4CH号功能调用该功能调用表示结束当前正在执行的程序,并将控制权返回到启动该程序的上一级。一般用于返回DOS操作系统。调用方式为:MOV AH,4CHINT 21H机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术414.3.7 汇编语言程序设计举例例4-12 统计数据区DAT中0、正数、负数的个数,将结果分别存放在S0、S1、S2中。解:在数据段设置数据区DAT存放一组带符号的数,定义S0、S1、S
33、2单元存放统计结果;采用循环程序结构,逐个读取DAT中的数据和0比较,根据比较结果修改临时计数寄存器BL、BH、DH的数值,最后将计数寄存器中的数值存入S0、S1、S2中,程序框图如图4-15所示。程序设计如下:DATA SEGMENTDAT DB -9,0,9,3,-4,-5,4,7,0,-8S0 DB 0S1 DB 0S2 DB 0ASCII DB 30H,30H,30H,$DATA ENDS机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术42STACK SEGMENT DB 20 DUP(?)STACK ENDSCODE SEGMENT ASSUME CS:CODE,D
34、S:DATA,SS:STACKSTART:MOV AX,DATA MOV DS,AX MOV BX,0 MOV DX,0 ;设置计数寄存器初始值为0 LEA SI,DAT ;取数据区DAT的首地址 MOV CX,D0-DAT ;取数据区数据个数,作为循环次数COMP:MOV AL,SI ;取数据 CMP AL,0 ;和0进行比较 JE ZERO JNS PLUS INC DH ;为负数,DH计数寄存器加1 JMP NEXT ;转移到NEXT,统计下一个数据机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术43ZERO:INC BH JMP NEXTPLUS:INC BL JMP
35、 NEXTNEXT:INC SI LOOP COMP MOV S0,BH MOV S1,BL MOV S2,DH ;计数寄存器数值送S0、S1、S2单元 ADD ASCII,BH ADD ASCII+1,BL ADD ASCII+2,DH ;数值转换成ASCII码 LEA DX,ASCII MOV AH,09H INT 21HMOV AH,4CH INT 21HCODE ENDS END START机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术44程序执行完成后,屏幕上显示“2,4,4”,分别表示数据区DAT中0、正数、负数的个数。机械工业出版社机械工业出版社 微机原理及接
36、口技术微机原理及接口技术45本章小结 l 本章详细介绍了汇编语言程序设计方法及应用。汇编语言的基本组成单位,每个语句由四项组成,格式:标号:操作码 操作数 ;注释l其中,操作码必不可少。l 一个汇编语言源程序由若干个逻辑段组成。在汇编语言源程序中还有伪指令和宏指令。伪指令又称伪操作,源程序汇编时,伪指令不产生可执行机器指令代码,在汇编过程中是由汇编程序执行的指令,它可以用来进行数据定义、符号定义、段定义、过程定义及程序命名及结束等主要操作。为了简化汇编语言源程序的书写,缩短主程序的长度,可以将源程序中需要多次重复使用的同一组指令定义为一个“宏指令”,以后需要时,可以按宏指令名来引用,这比子程序更灵活、更简便。机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术46汇编语言程序设计的步骤:1、分析题目;2、建立数学模型 3、确定算法和处理方案;4、画出流程图 5、编制程序;6、上机调试 7、试运行 汇编语言程序结构:顺序结构程序设计;分支程序设计;循环程序设计;子程序设计;宏;系统功能调用容。机械工业出版社机械工业出版社 微机原理及接口技术微机原理及接口技术