欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    汇编语言及汇编程序设计.ppt

    • 资源ID:6170994       资源大小:470.10KB        全文页数:59页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    汇编语言及汇编程序设计.ppt

    微机原理及应用,主讲教师 陈 玮,2023/10/2,第4章 汇编语言及汇编程序设计,2,第四章 汇编语言及汇编程序设计,一、概述二、伪指令三、表达式及运算符四、宏指令五、汇编语言程序的上机过程六、汇编程序的设计过程七、汇编程序基本设计方法八、系统功能调用 例题,作业,2023/10/2,第4章 汇编语言及汇编程序设计,3,一、概述,汇编语言是一种面向CPU指令系统的程序设计语言。指令格式:,1、标号是指该指令的符号地址,以冒号结束;2、用助记符表示操作码,是指令名称的代表符号,是语句中的关键字,不可缺省;,2023/10/2,第4章 汇编语言及汇编程序设计,4,一、概述(续上页),3、用符号代表操作数或操作数地址。操作数是本指令执行需要的数据。有些指令不需要指明操作数,可以默认;有些指令需要两个操作数;还有些操作数可以用表达式。4、注释项是可选项,用分号开始。,2023/10/2,第4章 汇编语言及汇编程序设计,5,一、概述(续上页),用汇编语言编写的程序称为源程序,常用的汇编程序有ASM-86和宏汇编MASM-86。汇编语言源程序的组成部分:可以使用CPU指令系统所提供的指令(硬指令);可以使用各种符合汇编语法的表达式,运算符以及自行定义生成满足需要的目标代码的指令。,2023/10/2,第4章 汇编语言及汇编程序设计,6,1、标号,8086/8088汇编语言中使用的标号必须遵循下列规则:(1)大小写字母;(2)数字09;(3)某些特殊字符(,_,?)(4)第一个字符不能是数字,“?”不能单独作为标号。(5)标号的有效长度是31;有效标号:START MY_PROGRAM 无效标号:MAIN%1BETA,2023/10/2,第4章 汇编语言及汇编程序设计,7,二、伪指令,伪指令是告诉汇编程序生成目标代码的指令语句。1、符号定义伪指令 2、内存数据定义伪指令 3、段定义伪指令 4、段寄存器说明伪指令 5、定位伪指令 6、子程序伪指令,2023/10/2,第4章 汇编语言及汇编程序设计,8,1、符号定义伪指令,(1)EQU伪指令(2)等号(赋值)伪指令(3)解除符号定义伪指令,2023/10/2,第4章 汇编语言及汇编程序设计,9,(1)EQU伪指令,伪指令格式:EQU 指令功能:给符号名赋值。符号名可以由程序员取定,表达式应该是可以计算得出一个具体值。例:PORT EQU 88H;定义符号PORT代表88H DATA EQU PORT+2;定义符号DATA代表;PORT+2注意:用EQU定义的符号,不能重新再定义,除非用PURGE伪指令解除;如果在表达式中用了其他符号,必须事先定义。,2023/10/2,第4章 汇编语言及汇编程序设计,10,(2)等号(赋值)伪指令,伪指令格式:=指令功能:与EQU类似,唯一的区别是“=”可以随时对符号名赋新值,而不必使用PURGE伪指令。例:PORT=88H;定义符号PORT代表88HDATA=PORT+2;定义符号DATA代表PORT+2,2023/10/2,第4章 汇编语言及汇编程序设计,11,(3)解除符号定义伪指令,伪指令格式:PURGE 符号1,符号2,指令功能:撤消用EQU赋值的符号名,以便于赋予新值。例:PURGE PORT,DATA;撤消用EQU对PORT、;DATA的赋值,2023/10/2,第4章 汇编语言及汇编程序设计,12,2、内存数据定义伪指令,格式:变量 命令 参数1,参数2,功能:数据定义语句用来分配存储单元。数据定义语句的命令有:DB 定义字节数据 DW定义字数据 DD定义双字数据 DQ定义8字节数据 DT定义10字节数据,2023/10/2,第4章 汇编语言及汇编程序设计,13,2、内存数据定义伪指令,复制操作符 格式:DUP 数据1,数据2,功能:汇编程序把所定义的数据按先后次序连续分配存储空间,所起的名称只代表第一个单元的字符。例题,2023/10/2,第4章 汇编语言及汇编程序设计,14,2、内存数据定义伪指令,例:VAR1 DB 32H,ABCVAR2 DW 1234H,40H,AB DD 12345678H DB?,11000011BARRY1 DB 2 DUP(0,1)ARRY2 DW 2 DUP(?,1),2023/10/2,第4章 汇编语言及汇编程序设计,15,三、表达式及运算符,在汇编语言中,指令的操作数除了可以是常数、寄存器、变量和标号外,还可以是表达式。表达式是由常数、寄存器、变量、标号和专用运算符组合而成。在程序汇编时,汇编程序自动把这些表达式计算出来,形成具体的指令操作数。1、常数、变量和标号 2、表达式及运算符,返回,2023/10/2,第4章 汇编语言及汇编程序设计,16,1、常数、变量和标号,常数 包括数值型常数和字符型常数。如:12H,1234H,AB变量 变量代表存放在存储单元中的数据。定义后的变量有三个属性:(1)段属性表示变量所在的逻辑段;(2)偏移量属性表示变量所在逻辑段中的偏移地址;(3)类型属性表示变量占用的存储单元数,DB、DW、DD、DQ、DT。,2023/10/2,第4章 汇编语言及汇编程序设计,17,1、常数、变量和标号,标号 是指令目标代码的符号地址。在转移指令中常用标号代替具体转移地址,标号的使用使编写汇编语言程序时,不必考虑程序汇编、连接后系统分配给指令代码的实际地址。标号同样有三个属性:(1)段属性表示指令代码所在的逻辑段;(2)偏移量属性表示指令代码所在的逻辑段中的偏移地址;(3)距离属性表示标号可作段内转移或段间转移(NEAR、FAR)。,2023/10/2,第4章 汇编语言及汇编程序设计,18,2、表达式及运算符,表达式由操作数和运算符组成。其中,操作数可以是常数、变量、寄存器和标号。运算符包括算术运算符、逻辑运算符、关系运算符、分析运算符和属性运算符五类运算。注意:运算符的先后次序。,2023/10/2,第4章 汇编语言及汇编程序设计,19,五、汇编语言程序的上机过程,建立汇编语言的环境,典型的汇编语言开发环境都包含4种工具:1、编辑程序 2、汇编程序 3、连接程序 4、汇编程序的上机过程,2023/10/2,第4章 汇编语言及汇编程序设计,20,1、编辑程序,(1)编辑程序是用来输入汇编语言源程序的工具,包括EDIT.EXE,EDLIN.EXE等;(2)汇编语言是以文本格式保存的;(3)汇编程序的源程序必须以ASM作为扩展名;(4)输入和编辑源程序时必须遵循汇编语言的语法规定。汇编程序的基本结构 例题 实际操作:编辑源程序 TEST11.ASM,2023/10/2,第4章 汇编语言及汇编程序设计,21,汇编程序的基本结构,DATAA SEGMENT;数据段内定义各类程序执行需要的相关的数据DATAA ENDSSTACKA SEGMENT;根据具体程序的需要,定义堆栈段供程序执行过程;中保持临时数据STACKA ENDSCODEA SEGMENT ASSUME CS:CODEA,DS:DATAA,SS:STACKA START:MOV AX,DATAA MOV DS,AX;完成具体操作的指令序列CODEA ENDS END START,2023/10/2,第4章 汇编语言及汇编程序设计,22,实际操作(实现X+YZ,源程序文件名:TEST11.ASM),DATA1 SEGMENT;数据段 X DB 05H Y DB 04H Z DB?DATA1 ENDSCODE1 SEGMENT;代码段 ASSUME CS:CODE,DS:DATASTART: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,2023/10/2,第4章 汇编语言及汇编程序设计,23,2、汇编程序,(1)汇编程序用来把源程序翻译成机器码,包括ASM.EXE,MASM.EXE;(2)汇编程序翻译源程序,产生一个目标代码文件,与源程序文件名相同,扩展名为OBJ。实际操作:产生目标文件TEST11.OBJ,2023/10/2,第4章 汇编语言及汇编程序设计,24,3、连接程序,通过汇编产生的是OBJ文件是二进制目标文件,但用的是浮动地址,不能直接运行,必须用连接程序LINK.EXE连接和定位。实际操作:产生可执行文件TEST11.EXE,2023/10/2,第4章 汇编语言及汇编程序设计,25,4、汇编程序的上机过程,实际操作演示,2023/10/2,第4章 汇编语言及汇编程序设计,26,data1 segment;数据段开始x 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,返回,2023/10/2,第4章 汇编语言及汇编程序设计,27,六、汇编程序的设计过程,1、分析问题确定算法 2、绘制程序流程图(做作业一定要求)3、编写代码,2023/10/2,第4章 汇编语言及汇编程序设计,28,七、汇编程序基本设计方法,1、简单程序 作业 2、分支程序 3、循环程序 4、子程序,2023/10/2,第4章 汇编语言及汇编程序设计,29,1、简单程序,简单程序是指顺序结构程序,在程序中不包含任何转移类指令。执行时按指令的先后次序从第一条开始逐条执行,直至程序结束。例题,2023/10/2,第4章 汇编语言及汇编程序设计,30,例题,1、有X,Y两个16位数3456H和0ABCDH,求两数之和,并将结果送到Z单元。解:编写流程图,2023/10/2,第4章 汇编语言及汇编程序设计,31,例题 程序清单,DATASEGMENT XDW3456H YDW0ABCDH ZDW0 DATAENDS;设置数据段,取名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,2023/10/2,第4章 汇编语言及汇编程序设计,32,作业,P.1202、3、5、7、12,2023/10/2,第4章 汇编语言及汇编程序设计,33,2、分支程序,分支程序就是利用转移指令,控制计算机执行某段程序或不执行某段程序。,两路分支,多路分支,例题,2023/10/2,第4章 汇编语言及汇编程序设计,34,例题,1、内存中有一个8位带符号数,求其绝对值,并将结果放回原处。答:编写流程图,程序清单,2023/10/2,第4章 汇编语言及汇编程序设计,35,例题 程序清单,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,AL求补DONE:MOV SI,AL;绝对值送回原内存单元 MOV DL,SI ADD DL,30HMOV AH,02HINT 21H;系统功能调用,显示该数值 MOV AH,4CH INT 21HCODE2 ENDS END START,2023/10/2,第4章 汇编语言及汇编程序设计,36,例题,2、编写程序实现函数。1(当X0)Y=0(当X=0)9(当X0)解:编写程序清单,程序清单,2023/10/2,第4章 汇编语言及汇编程序设计,37,例题 程序清单_数据段,DATAXY SEGMENT X DB 8FH;另外两组分别是7FH,00H Y DB?DATAXY ENDS,2023/10/2,第4章 汇编语言及汇编程序设计,38,例题 程序清单_代码段,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,2023/10/2,第4章 汇编语言及汇编程序设计,39,3、循环程序,循环程序就是控制计算机反复执行一段指令序列的程序结构。,非零次循环结构,零次循环结构,例题,2023/10/2,第4章 汇编语言及汇编程序设计,40,1、统计字节数据Z的1的个数,将结果放在RESULT内。解:编写流程图,例题,程序清单,2023/10/2,第4章 汇编语言及汇编程序设计,41,例题 程序清单 数据段,DATAXY SEGMENT X DB 0FFH;第二个程序换成5,即0fbh RESULT DB?DATAXY ENDS,2023/10/2,第4章 汇编语言及汇编程序设计,42,例题 程序清单 代码段,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,2023/10/2,第4章 汇编语言及汇编程序设计,43,4、子程序,一个程序中,当在不同的地方需要多次使用某段程序时,我们常将这段程序单独编写成一个程序段,称为子程序/过程。(1)子程序的定义格式(2)子程序的调用(3)编写子程序的注意事项,2023/10/2,第4章 汇编语言及汇编程序设计,44,(1)子程序的定义格式,格式:子程序名 PROC RET 子程序名 ENDP,2023/10/2,第4章 汇编语言及汇编程序设计,45,(2)子程序的调用,格式:CALL 子程序名,2023/10/2,第4章 汇编语言及汇编程序设计,46,(3)编写子程序的注意事项,1、现场保护:保护调用子程序的现场,即保护子程序中会用到的寄存器,将这些寄存器入栈;2、功能子程序:子程序要完成的功能;3、恢复现场:为了使计算机返回到主程序调用时的状态,将入栈的数据出栈。注意顺序!例题:子程序的基本框架,2023/10/2,第4章 汇编语言及汇编程序设计,47,子程序的基本框架,设某一子程序中要用到寄存器BX,CX,SI,DI则:ABC:PUSH BXPRSH CXPUSH SIPUSH DI;子程序的功能程序POP DIPOP SIPOP CXPOP BX RET,2023/10/2,第4章 汇编语言及汇编程序设计,48,例题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,2023/10/2,第4章 汇编语言及汇编程序设计,49,例题1 主程序_数据段_堆栈段,DATAXY SEGMENT X DB 0FFH SX DB?DATAXY ENDS;-STACK SEGMENT DW 100 DUP(?)STACK ENDS,2023/10/2,第4章 汇编语言及汇编程序设计,50,例题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,2023/10/2,第4章 汇编语言及汇编程序设计,51,例题2、,将一字节无符号二进制数转换为两位十进制数的ASCII码值,并存放在其后的两个字节。(显示程序用子程序编写)。解:编写流程图:,2023/10/2,第4章 汇编语言及汇编程序设计,52,程序数据段,data1 segment x db 2ah;可任取100的无符号字节数据 y db?z db?buff db 2ah=$data1 ends,2023/10/2,第4章 汇编语言及汇编程序设计,53,代码段:,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,2023/10/2,第4章 汇编语言及汇编程序设计,54,思考题,试编制程序将一个字数据用十六进制数的形式显示在屏幕上。,2023/10/2,第4章 汇编语言及汇编程序设计,55,八、系统功能调用,MS-DOS是8086/8088微机系统广泛使用的一种操作系统。MS-DOS中包含有许多通用的内部子程序,分别用于完成I/O管理、内存管理、文件管理以及作业管理等。MS-DOS以中断服务程序形式提供这些功能程序,在汇编语言源程序中可以用软中断调用它们。系统功能调用(INT 21H)应用步骤:(1)传送入口参数到规定的寄存器或存储单元;(2)把子程序功能编号送到AH寄存器;(3)执行软件中断指令INT 21H。,2023/10/2,第4章 汇编语言及汇编程序设计,56,常用的系统功能介绍,(1)返回操作系统(功能号:4CH)通常程序结束时,需调用4CH的系统功能把微机的控制权交还给操作系统,方法如下:MOV AH,4CH;功能号送AH INT 21H;调用功能子程序 在编程结束前,将以上两条指令插入,前面许多例题已经使用。,2023/10/2,第4章 汇编语言及汇编程序设计,57,常用的系统功能介绍,(2)键盘输入单字符并回显(功能号:01H)这一功能调用没有入口参数,它从标准输入设备(一般默认为键盘)读入一个字符以ASCII码形式送到AL,并且将该字符送到标准输出设备(一般默认为显示器)。如果读入的是Ctrl-Break码,则退出命令,读入的内容不送AL。例如程序中需要从键盘读入一个字符,可用下面语句实现:MOV AH,01H INT 21H 当上面第二条指令执行完时,系统等待键盘按键。按下任一字符时,AL中的内容即为该字符的ASCII码,同时显示器上显示出所按下的字符。,2023/10/2,第4章 汇编语言及汇编程序设计,58,(3)显示单字符(功能号:02H)这一功能调用时,系统将DL寄存器中的ASCII字符输出到显示器。例如需要显示字符“D”,可用以下指令实现:MOV DL,D;把要显示的字符送DL寄存器MOV AH,02H;功能号02H送AHINT 21H;调用系统功能显示字符D,常用的系统功能介绍,2023/10/2,第4章 汇编语言及汇编程序设计,59,常用的系统功能介绍,(4)显示字符串(功能号:09H)调用该功能可把内存缓冲区中的字符串输出到显示器,缓冲区中的字符串以$作为结束标志,缓冲区的首地址存放在DX。例如:.BUFF2 DB How do you do!$.MOV DX,OFFSET BUFF2;送字符串的首地址至DXMOV AH,09H;送功能号INT 21H;系统功能调用显示字符串 执行以上几条指令后,屏幕上将显示:How do you do!,

    注意事项

    本文(汇编语言及汇编程序设计.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开