微机原理第4章-汇编语言及汇编程序设计课件

上传人:仙*** 文档编号:241326854 上传时间:2024-06-18 格式:PPT 页数:62 大小:1.20MB
返回 下载 相关 举报
微机原理第4章-汇编语言及汇编程序设计课件_第1页
第1页 / 共62页
微机原理第4章-汇编语言及汇编程序设计课件_第2页
第2页 / 共62页
微机原理第4章-汇编语言及汇编程序设计课件_第3页
第3页 / 共62页
点击查看更多>>
资源描述
微机原理及应用微机原理及应用主讲教师主讲教师广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计2第四章第四章 汇编语言及汇编程序设计汇编语言及汇编程序设计一、一、概述概述二、二、伪指令指令三、三、表达式及运算符表达式及运算符四、宏指令四、宏指令五、五、汇编语言程序的上机言程序的上机过程程六、六、汇编程序的程序的设计过程程七、七、汇编程序基本程序基本设计方法方法八、八、系系统功能功能调用用 例例题作作业广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计3一、概述一、概述 汇编语言是一种面向言是一种面向CPU指令系指令系统的程序的程序设计语言。指令格式言。指令格式:1 1、标号号是指是指该指令的符号地址,以冒号指令的符号地址,以冒号结束;束;2 2、用助、用助记符表示操作符表示操作码,是指令名称的代表符号,是指令名称的代表符号,是是语句中的关句中的关键字,不可缺省;字,不可缺省;广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计4一、概述一、概述(续上页续上页)3、用符号代表操作数或操作数地址。、用符号代表操作数或操作数地址。操作数是本指操作数是本指令令执行需要的数据。行需要的数据。有些指令不需要指明操作数,可以默认;有些指令不需要指明操作数,可以默认;有些指令需要两个操作数;有些指令需要两个操作数;还有些操作数可以用表达式。还有些操作数可以用表达式。4、注、注释项是可是可选项,用分号开始。,用分号开始。广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计5一、概述一、概述(续上页续上页)用用汇编语言言编写的程序称写的程序称为源程序,常用的源程序,常用的汇编程序有程序有ASM-86和宏和宏汇编MASM-86。汇编语言源程序的言源程序的组成部分成部分:可以使用可以使用CPU指令系指令系统所提供的指令所提供的指令(硬指令硬指令);可以使用各种可以使用各种符合符合汇编语法法的表达式,的表达式,运算运算符以及自行定符以及自行定义生成生成满足需要的目足需要的目标代代码的指令。的指令。广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计61、标号、标号 8086/8088汇编语言中使用的言中使用的标号必号必须遵循下列遵循下列规则:(1)大小写字母;大小写字母;(2)数字数字09;(3)某些特殊字符(某些特殊字符(,_,?)(4)第一个字符不能是数字,第一个字符不能是数字,“?”不能不能单独作独作为标号。号。(5)标号的有效号的有效长度是度是31;有效有效标号号:START MY_PROGRAM 无效无效标号号:MAIN%1BETA广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计7二、伪指令二、伪指令 伪指令是告指令是告诉汇编程序生成目程序生成目标代代码的指令的指令语句。句。1、符号定符号定义伪指令指令 2、内存数据定内存数据定义伪指令指令 3、段定段定义伪指令指令 4、段寄存器段寄存器说明明伪指令指令 5、定位定位伪指令指令广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计81、符号定义伪指令、符号定义伪指令 (1)EQU伪指令指令 (2)等号等号(赋值)伪指令指令 (3)解除符号定解除符号定义伪指令指令广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计9(1)EQU伪指令伪指令伪指令格式指令格式:EQU 指令功能指令功能:给符号名符号名赋值。符号名可以由程序。符号名可以由程序员取取定,定,表达式表达式应该是可以是可以计算得出一个具体算得出一个具体值。例。例:PORT EQU 88H;定定义符号符号PORT代表代表88H DATA EQU PORT+2;定定义符号符号DATA代表代表;PORT+2注意注意:用用EQU定定义的符号,不能重新再定的符号,不能重新再定义,除非用,除非用PURGE伪指令解除;指令解除;如果在表达式中用了其他符号,必如果在表达式中用了其他符号,必须事先定事先定义。广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计10(2)等号等号(赋值赋值)伪指令伪指令伪指令格式指令格式:=指令功能指令功能:与与EQU类似,唯一的区似,唯一的区别是是“=”可以可以随随时对符号名符号名赋新新值,而不必使用而不必使用PURGE伪指令。指令。例例:PORT=88H;定定义符号符号PORT代表代表88HDATA=PORT+2;定定义符号符号DATA代表代表PORT+2广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计11(3)解除符号定义伪指令解除符号定义伪指令伪指令格式指令格式:PURGE 符号符号1,符号符号2,指令功能指令功能:撤消用撤消用EQU赋值的符号名,的符号名,以便于以便于赋予新予新值。例例:PURGE PORT,DATA;撤消用撤消用EQU对PORT、;DATA的的赋值广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计122、内存数据定义伪指令、内存数据定义伪指令格式格式:变量量 命令命令 参数参数1,参数参数2,功能功能:数据定数据定义语句用来分配存句用来分配存储单元。数据定元。数据定义语句的句的命令命令有有:DB 定定义字字节数据数据 DW定定义字数据字数据 DD定定义双字数据双字数据 DQ定定义8字字节数据数据 DT定定义10字字节数据数据广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计132、内存数据定义伪指令、内存数据定义伪指令复制操作符复制操作符 格式格式:DUP 数据数据1,数据,数据2,功能功能:汇编程序把所定程序把所定义的数据按先后次序的数据按先后次序连续分配存分配存储空空间,所起的名称只代表第一个,所起的名称只代表第一个单元的字元的字符。符。例例题广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计142、内存数据定义伪指令、内存数据定义伪指令例例:VAR1 DB 32H,ABCVAR2 DW 1234H,40H,AB DD 12345678H DB?,11000011BARRY1 DB 2 DUP(0,1)ARRY2 DW 2 DUP(?,(?,1)广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计15 3、段定义伪指令、段定义伪指令格式格式:SEGMENT ENDS广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计164、段寄存器说明伪指令、段寄存器说明伪指令格式格式:ASSUME 段寄存器:段名段寄存器:段名1,段寄存器:段名段寄存器:段名2,功能功能:该伪指令告指令告诉汇编程序在程序在汇编时,各个段寄存,各个段寄存器所器所对应的的逻辑段基址。段基址。注意:注意:除了除了CS,所有段寄存器的所有段寄存器的实际值还必必须用用传送指令在送指令在执行行时赋值广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计175、定位伪指令定位伪指令格式格式:ORG 功能:起址定位功能:起址定位伪指令指令告告诉汇编程序,以下的程序程序,以下的程序或数据从表达式指定的偏移地址开始存放;或数据从表达式指定的偏移地址开始存放;格式格式:EVEN 功能:偶地址定位功能:偶地址定位伪指令指令告告诉汇编程序,以下的程程序,以下的程序或数据从偶地址开始存放。序或数据从偶地址开始存放。广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计18三、表达式及运算符三、表达式及运算符 在在汇编语言中,指令的操作数除了可以是常数、言中,指令的操作数除了可以是常数、寄存器、寄存器、变量和量和标号外,号外,还可以是表达式。可以是表达式。表达式表达式是由常数、寄存器、是由常数、寄存器、变量、量、标号和号和专用用运算符运算符组合而成。合而成。在程序在程序汇编时,汇编程序自程序自动把把这些表达式些表达式计算出来,形成具体的指令操作数。算出来,形成具体的指令操作数。1、常数、常数、变量和量和标号号 2、表达式及运算符表达式及运算符广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计191、常数、变量和标号、常数、变量和标号常数常数 包括数包括数值型常数和字符型常数。型常数和字符型常数。如:如:12H,1234H,AB变量量 变量代表存放在存量代表存放在存储单元中的数据。元中的数据。定定义后的后的变量有三个属性:量有三个属性:(1)段属性表示段属性表示变量所在的量所在的逻辑段;段;(2)偏移量属性表示偏移量属性表示变量所在量所在逻辑段中的偏移地址;段中的偏移地址;(3)类型属性表示型属性表示变量占用的存量占用的存储单元数,元数,DB、DW、DD、DQ、DT。广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计201、常数、变量和标号、常数、变量和标号标号号 是指令目是指令目标代代码的符号地址。的符号地址。在在转移指令中常用移指令中常用标号代替具体号代替具体转移地址,移地址,标号号的使用使的使用使编写写汇编语言程序言程序时,不必考,不必考虑程序程序汇编、连接后系接后系统分配分配给指令代指令代码的的实际地址。地址。标号同号同样有三个属性:有三个属性:(1)段属性表示指令代段属性表示指令代码所在的所在的逻辑段;段;(2)偏移量属性表示指令代偏移量属性表示指令代码所在的所在的逻辑段中的段中的偏移地址;偏移地址;(3)距离属性表示距离属性表示标号可作段内号可作段内转移或段移或段间转移移(NEAR、FAR)。)。广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计21 2、表达式及运算符、表达式及运算符表达式表达式由操作数和运算符由操作数和运算符组成。成。其中,操作数可以是常数、其中,操作数可以是常数、变量、寄存器和量、寄存器和标号。号。运算符包括算运算符包括算术运算符、运算符、逻辑运算符、关系运运算符、关系运算符、分析运算符和属性运算符五算符、分析运算符和属性运算符五类运算。运算。注意:运算符的先后次序注意:运算符的先后次序。广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计22五、汇编语言程序的上机过程五、汇编语言程序的上机过程 建立建立汇编语言的言的环境,典型的境,典型的汇编语言开言开发环境都包含境都包含4种工具:种工具:1、编辑程序程序 2、汇编程序程序 3、连接程序接程序 4、汇编程序的上机程序的上机过程程广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计231、编辑程序、编辑程序 (1)编辑程序是用来程序是用来输入入汇编语言源程序的工具,言源程序的工具,包括包括EDIT.EXE,EDLIN.EXE等;等;(2)汇编语言是以文本格式保存的;言是以文本格式保存的;(3)汇编程序的源程序必程序的源程序必须以以ASM作作为扩展名展名;(4)输入和入和编辑源程序源程序时必必须遵循遵循汇编语言的言的语法法规定。定。汇编程序的基本程序的基本结构构 例例题 实际操作操作:编辑源程序源程序 TEST11.ASM广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计24汇编程序的基本结构汇编程序的基本结构DATAA SEGMENT ;数据段内定数据段内定义各各类程序程序执行需要的相关的数据行需要的相关的数据DATAA ENDSSTACKA SEGMENT STACK ;根据具体程序的需要,定根据具体程序的需要,定义堆堆栈段供程序段供程序执行行过程程 ;中保存;中保存临时数据数据STACKA ENDSCODEA SEGMENT ASSUME CS:CODEA,DS:DATAA,SS:STACKA START:MOV AX,DATAA MOV DS,AX;送数据段基址送数据段基址 ;完成具体操作的指令序列完成具体操作的指令序列CODEA ENDS END START广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计25实际操作实际操作(实现实现X+YZ,源程序文件名源程序文件名:TEST11.ASM)DATA1 SEGMENT;数据段数据段 X DB 05H Y DB 04H Z DB?DATA1 ENDSCODE1 SEGMENT;代代码段段 ASSUME CS:CODE1,DS:DATA1START:MOV AX,DATA;数据段基址数据段基址AX MOV DS,AX;AX DS MOV AL,X;内存内存单元元X的数据的数据AL ADD AL,Y;内存内存单元元Y的数据的数据+ALAL,即即X+Y AL MOV Z,AL;AL内存内存单元元Z,即求和即求和结果送回果送回Z MOV AH,4CH;送功能号送功能号 INT 21H;系系统功能功能调用,返回操作系用,返回操作系统 CODE1 ENDS END START广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计262、汇编程序、汇编程序 (1)汇编程序程序用来把源程序翻用来把源程序翻译成机器成机器码,包括包括ASM.EXE,MASM.EXE;(2)汇编程序翻程序翻译源程序,源程序,产生一个目生一个目标代代码文文件,与源程序文件名相同,件,与源程序文件名相同,扩展名展名为OBJ。实际操作操作:产生目生目标文件文件TEST11.OBJ广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计273、连接程序、连接程序 通通过汇编产生的是生的是OBJ文件是二文件是二进制目制目标文件,文件,但用的是浮但用的是浮动地址,地址,不能直接运行,不能直接运行,必必须用用连接程接程序序LINK.EXE连接和定位。接和定位。实际操作操作:产生可生可执行文件行文件TEST11.EXE广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计284、汇编程序的上机过程、汇编程序的上机过程实际操作演示操作演示广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计29data1 segment;数据段开始数据段开始 test1.asmx db 05hy db 04hz db?buff db 5+4=$;定定义一个数据串,数据串一个数据串,数据串规定以定以$结尾,尾,为了了;显示示5+4=data1 endscode1 segment;代代码段开始段开始 assume cs:code1,ds:data1;start:mov ax,data1;将数据段基址将数据段基址ax mov ds,ax;axds mov al,x;内存数据内存数据xal add al,y;内存数据内存数据Y+alal,即即X+Y al mov z,al;alZ,即即X+Y Z lea dx,buff;装装载 buff的有效地址的有效地址 mov ah,09h;送功能号送功能号 int 21h;系系统功能功能调用,用,显示屏示屏显示字符串示字符串5+4=mov dl,z;将将z送送dl add dl,30h;将将z的的值转换成成对应的的ASCII码值 mov ah,02h;送功能号送功能号 int 21H;系系统功能功能调用,用,将将x+y的和的和z以以单字符形式在字符形式在显;示屏上;示屏上显示出来示出来 mov ah,4ch;送功能号送功能号 int 21h;系系统功能功能调用,返回用,返回DOS状状态code1 ends end start 广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计30六、汇编程序的设计过程六、汇编程序的设计过程 1、分析、分析问题确定算法确定算法 2、绘制程序流程制程序流程图(要求同学要求同学们从从现在开始在开始编写写程序前养成先程序前养成先绘制流程制流程图的的习惯)3、编写代写代码广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计31七、汇编程序基本设计方法七、汇编程序基本设计方法 1、简单程序程序 作作业 2、分支程序分支程序 3、循循环程序程序 4、子程序子程序广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计321、简单程序、简单程序 简单程序程序是指是指顺序序结构程序,构程序,在程序中不包含在程序中不包含任何任何转移移类指令。指令。执行行时按指令的先后次序从第一按指令的先后次序从第一条开始逐条条开始逐条执行,直至程序行,直至程序结束。束。例例题广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计33例题例题 1、有、有X,Y两个两个16位数位数3456H和和0ABCDH,求两求两数之和,并将数之和,并将结果送到果送到Z单元。元。解解:编写流程写流程图广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计34例题例题 程序清单程序清单 DATA SEGMENT XDW3456H YDW0ABCDH ZDW0 DATA ENDS;设置数据段,取名置数据段,取名DATA CODE SEGMENT ASSUME DS:DATA,CS:CODESTART:MOV AX,DATA;取数取数码段段DATA段址至段址至AX MOV DS,AX;段地址送段地址送DS LEA SI,X;将将X的有效地址送的有效地址送S1 LEA DI,Y;将将Y的有效地址送的有效地址送D1 MOV AX,SI;将将X的的值送送AX ADD AX,DI;AX+Y的的值送回送回AX MOV Z,AX;将将AX的的值送到存送到存储单元元Z MOV AH,4CH;设置功能号置功能号 INT21H;系系统功能功能调用,返回用,返回DOSCODE ENDS END START 广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计35作业作业P.1262、4、5、7、12广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计362、分支程序、分支程序 分支程序分支程序就是利用就是利用转移指令,控制移指令,控制计算机算机执行行某段程序或不某段程序或不执行某段程行某段程序。序。两路分支两路分支多路分支多路分支例例题广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计37例题例题 1、内存中有一个、内存中有一个8位位带符号数,求其符号数,求其绝对值,并将,并将结果放回原果放回原处。答:答:编写流程写流程图程序清程序清单广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计38例题例题 程序清单程序清单DATA2 SEGMENTM DB 05H;第二个程序第二个程序换成成5,即,即0fbhDATA2 ENDSCODE2 SEGMENTASSUME CS:CODE2,DS:DATA2START:MOV AX,DATA2 MOV DS,AX;送段地址至送段地址至DS LEA SI,M;取取M的地址指的地址指针 MOV AL,SI;取取带符号数符号数 AND AL,AL;判断符号位判断符号位JNS DONE;SF=0,转移到移到DONENEG AL;SF=1,AL0)Y=0 (当当X=0)9 (当当X0)解解:编写程序清写程序清单程序清程序清单广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计40例题例题 程序清单程序清单_数据段数据段DATAXY SEGMENT X DB 8FH;另外两另外两组分分别是是7FH,00H Y DB?DATAXY ENDS广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计41例题例题 程序清单程序清单_代码段代码段CODE SEGMENT ASSUME CS:CODE,DS:DATAXYSTART:MOV AX,DATAXY MOV DS,AX;送段地址送段地址 LEA SI,X;取取X的指的指针MOV AL,SI;将将X的的值送送AL AND AL,AL;自身与,取符号自身与,取符号标志位志位JNS OTHER;SF=0,转移到移到OTHER MOV Y,09H;SF=1,则X0DONE:MOV DL,YADD DL,30HMOV AH,02HINT 21H;系系统功能功能调用,用,显示示Y的的 值 MOV AH,4CH INT 21HCODE2 ENDS END START广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计423、循环程序、循环程序 循循环程序程序就是控制就是控制计算机反算机反复复执行一段指令序列的程序行一段指令序列的程序结构。构。非零次循非零次循环结构构零次循零次循环结构构例题广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计43 1、统计字字节数据数据Z的的1的个的个数,将数,将结果放在果放在RESULT内。内。解:解:编写流程写流程图例题例题程序清程序清单广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计44例题例题 程序清单程序清单 数据段数据段DATAXY SEGMENT X DB 0FFH;第二个程序第二个程序换成成5,即,即0fbh RESULT DB?DATAXY ENDS广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计45例题例题 程序清单程序清单 代码段代码段CODE SEGMENT ASSUME CS:CODE,DS:DATAXYSTART:MOV AX,DATAXY MOV DS,AX;送段地址至送段地址至DSXOR BL,BL;累加器累加器BL清清0MOV CX,08H;循循环次数送次数送CXLEA SI,X;取取X的指的指针MOV AL,SI;取取X送送ALSUM:SHR AL,1;逻辑右移右移1位位JNC NONE;CF=0,转移到移到NONEINC BL;CF=1,BL+1BLNONE:LOOP SUM MOV RESULT,BL;统计值送送RESULT内存内存单元元 MOV DL,RESULT ADD DL,30HMOV AH,02HINT 21H;系系统功能功能调用,用,显示示该统计数数值 MOV AH,4CH INT 21HCODE ENDS END START广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计464、子程序、子程序 一个程序中,当在不同的地方需要多次使用某一个程序中,当在不同的地方需要多次使用某段程序段程序时,我,我们常将常将这段程序段程序单独独编写成一个程序写成一个程序段,称段,称为子程序子程序/过程。程。(1)子程序的定子程序的定义格式格式(2)子程序的子程序的调用用(3)编写子程序的注意事写子程序的注意事项广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计47(1)子程序的定义格式)子程序的定义格式格式格式1:子程序名子程序名 PROC RET 子程序名子程序名 ENDP格式格式2:子程序名:子程序名:RET广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计48(2)子程序的调用)子程序的调用 格式格式:CALL 子程序名子程序名广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计49(3)编写子程序的注意事项)编写子程序的注意事项 1、现场保保护:保保护调用子程序的用子程序的现场,即保即保护子程序中会用到的寄存器,子程序中会用到的寄存器,将将这些寄存器入些寄存器入栈;2、功能子程序、功能子程序:子程序要完成的功能;子程序要完成的功能;3、恢复、恢复现场:为了使了使计算机返回到主程序算机返回到主程序调用用时的状的状态,将入将入栈的数据出的数据出栈。注意注意顺序序!例例题:子程序的基本框架子程序的基本框架广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计50子程序的基本框架子程序的基本框架 设某一子程序中要用到寄存器某一子程序中要用到寄存器BX,CX,SI,DI则:ABC:PUSH BXPRSH CXPUSH SIPUSH DI ;子程序的功能程序子程序的功能程序POP DIPOP SIPOP CXPOP BX RET广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计51例题例题1 编写写统计X数据中的数据中的“1”的个数子程序,并的个数子程序,并编写主程序写主程序调用。用。子程序如下子程序如下:ABC:PUSH BX PUSH CX XOR BL,BL;累加器累加器BL清清0 MOV CX,08H;循循环次数送次数送CXSUM:SHR AL,1;逻辑右移右移1位位 JNC NONE;CF=0,转移到移到NONE INC BL;CF=1,BL+1BLNONE:LOOP SUM MOV AL,BL;AL里保存的是里保存的是“1”的的统计个个数数 POP CX POP BX RET广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计52例题例题1 主程序主程序_数据段数据段_堆栈段堆栈段DATAXY SEGMENT X DB 0FFH SX DB?DATAXY ENDS;-STACK SEGMENT DW 100 DUP(?)STACK ENDS广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计53例题例题1 主程序主程序_代码段代码段CODE1 SEGMENT ASSUME CS:CODE1,DS:DATAXY,SS:STACKSTART:MOV AX,DATA MOV DS,AX LEA BX,X MOV AL,BX CALL ABC MOV BX+1,AL MOV DL,SX ADD DL,30H MOV AH,02H INT 21H;系系统功能功能调用,用,显示示该统计数数值 MOV AH,4CH INT 21H ;子程序插入此子程序插入此处CODE1 ENDS END START 广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计54例题例题2、将一字将一字节无符号二无符号二进制数制数转换为两位十两位十进制数制数的的ASCII码值,并存放在,并存放在其后的两个字其后的两个字节。(显示示程序用子程序程序用子程序编写写)。解:解:编写流程写流程图:广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计55程序程序数据段数据段data1 segment x db 2ah;可任取可任取100的无符号字的无符号字节数据数据 y db?z db?buff db 2ah=$data1 ends广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计56代码段:代码段:code1 segment assume cs:code1,ds:data1 start:mov ax,data1 mov ds,ax mov al,x cbw mov bl,0ah div bl mov y,al mov z,ah lea dx,buff mov ah,09h int 21h mov al,y ;下接右上下接右上;上接左下上接左下 call disp mov al,z call disp jmp eend disp:mov dl,al add dl,30h mov ah,02h int 21h ret eend:mov ah,4ch int 21hcode1 ends end start广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计57思考题思考题 试编制程序将一个字数据用十六制程序将一个字数据用十六进制数的形式制数的形式显示在屏幕上。示在屏幕上。广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计58八、系统功能调用八、系统功能调用 MS-DOS是是8086/8088微机系微机系统广泛使用的一种广泛使用的一种操作系操作系统。MS-DOS中包含有中包含有许多通用的内部子程多通用的内部子程序,分序,分别用于完成用于完成I/O管理、内存管理、文件管理以管理、内存管理、文件管理以及作及作业管理等。管理等。MS-DOS以中断服以中断服务程序形式提供程序形式提供这些些功能程功能程序序,在,在汇编语言源程序中可以用言源程序中可以用软中断中断调用它用它们。系系统功能功能调用(用(INT 21H)应用步用步骤:(1)传送入口参数到送入口参数到规定的寄存器或存定的寄存器或存储单元;元;(2)把子程序功能)把子程序功能编号送到号送到AH寄存器;寄存器;(3)执行行软件中断指令件中断指令INT 21H。广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计59常用的系统功能介绍常用的系统功能介绍(1)返回操作系返回操作系统(功能号:(功能号:4CH)通常程序通常程序结束束时,需,需调用用4CH的系的系统功能把微功能把微机的控制机的控制权交交还给操作系操作系统,方法如下:,方法如下:MOV AH,4CH ;功能号送功能号送AH INT 21H ;调用功能子程序用功能子程序 在在编程程结束前,将以上两条指令插入,前面束前,将以上两条指令插入,前面许多例多例题已已经使用。使用。广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计60常用的系统功能介绍常用的系统功能介绍(2)键盘输入入单字符并回字符并回显(功能号:(功能号:01H)这一功能一功能调用没有入口参数,它从用没有入口参数,它从标准准输入入设备(一般(一般默默认为键盘)读入一个字符以入一个字符以ASCII码形式送到形式送到AL,并且将并且将该字符送到字符送到标准准输出出设备(一般默(一般默认为显示器)。如果示器)。如果读入入的是的是Ctrl-Break码,则退出命令,退出命令,读入的内容不送入的内容不送AL。例如程序中需要从例如程序中需要从键盘读入一个字符,可用下面入一个字符,可用下面语句句实现:MOV AH,01H INT 21H 当上面第二条指令当上面第二条指令执行完行完时,系,系统等待等待键盘按按键。按下。按下任一字符任一字符时,AL中的内容即中的内容即为该字符的字符的ASCII码,同,同时显示示器上器上显示出所按下的字符。示出所按下的字符。广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计61(3)显示示单字符(功能号:字符(功能号:02H)这一功能一功能调用用时,系,系统将将DL寄存器中的寄存器中的ASCII字符字符输出到出到显示器。示器。例如需要例如需要显示字符示字符“D”,可用以下指令可用以下指令实现:MOV DL,D;把要把要显示的字符送示的字符送DL寄存器寄存器MOV AH,02H;功能号功能号02H送送AHINT 21H;调用系用系统功能功能显示字符示字符D常用的系统功能介绍常用的系统功能介绍广广东东工工业业大大学学 自自动动化化学学院院 自自动动控控制制系系 陈陈玮玮2024/6/18第第4章章 汇编语言及言及汇编程序程序设计62常用的系统功能介绍常用的系统功能介绍(4)显示字符串(功能号:示字符串(功能号:09H)调用用该功能可把内存功能可把内存缓冲区中的字符串冲区中的字符串输出到出到显示器,示器,缓冲区中的字符串以冲区中的字符串以$作作为结束束标志,志,缓冲区的首地址冲区的首地址存放在存放在DX。例如:例如:.BUFF2 DB How do you do!$.MOV DX,OFFSET BUFF2 ;送字符串的首地址至送字符串的首地址至DXMOV AH,09H ;送功能号送功能号INT 21H ;系系统功能功能调用用显示字符串示字符串 执行以上几条指令后,屏幕上将行以上几条指令后,屏幕上将显示:示:How do you do!
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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