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

    《微机计算原理》PPT课件.ppt

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

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

    《微机计算原理》PPT课件.ppt

    第七章 汇编语言及汇编程序,7.1 宏汇编语言的基本语法7.2 伪指令7.3 宏指令7.4 系统功能调用7.5 汇编程序的功能及汇编过程7.6 汇编语言程序设计,7.1 概述,汇编语言程序的上机处理过程,主要的汇编程序:MASM,【例7.1】设计要求:在源程序中设置数据段、堆栈段及代码段。在数据段中定义8个字节数据,把这些数据转换成十六进制数的ASCII码存在上述数据之后,然后在屏幕上显示这些数据。显示数据用DOS功能2号调用,每个数据用空格分隔。(2)程序流程:程序流程如图7.6和图7.7所示。,图7.6,图7.7,NAME EX1DAT SEGMENT PARA DAT A1 DB 12H,34H,56H,78H,9AH DB 0BCH,0DEH,0F0H B1=$-A1;求出$到A1所占的字节数 B2=B1*2 A2 DB B2 DUP(?);定义B2个内存空间DAT ENDS注:$:当前数据指针,是一个偏移地址值;未用内存数据定义伪指令定义的变量不占内存空间,因而B1、B2不占内存空间,,例7.1程序运行结果显示:12 34 56 78 9A BC DE F0,(3)程序清单:二进制数对十六进制数转换及显示主程序:,1、常量,二进制xxxxxxxxB01000101B八进制xxxO或xxxQ721O或721Q十进制xxxx或xxxxD1991或1991D十六进制xxxxH0F1D4H字符串xxx AB常出现在指令和伪指令中,7.1.1 常量、变量和标号,7.1 宏汇编语言的基本语法,常量,在程序中,常数主要出现在:(1)指令语句中源操作数中作立即数,它应与目的操作数的位数相一致,可以是8位或16位,例如:MOVAX,0A5F1H(2)在指令语句的基址加变址的寻址方式中作位移量,例如:MOVBX,SI+32H(3)在数据定义伪指令中,例如:DB12H;定义一个字节数据 DW 1234H;定义一个字数据 DD12345678H;定义一个双字数据 DBA B C D;定义4个字节的字符串数据,2、标号(作为操作数的标号),指令存放单元的符号地址,是转移/调用/循环指令的操作数标号的三种属性:段 SEG偏移量 OFFSET距离 NEAR/FAR,标号,2.标号的定义标号只在代码段中定义和使用,定义的方式有两种:(1)书写在符号指令前,用:定义,为NEAR类型,NEAR型标号只能在段内使用!例:ABC:MOV AL,SI;定义近标号CYCLE(2)用PROCENDP伪指令定义过程名例:ABC PROC FAR;定义过程名ABC为FAR型标号 ABC ENDP,在汇编中都使用变量和地址表达式来表示存储器的地址。变量是存储器中的数据或数据区的符号表示。变量名是数据的地址或数据区的首地址。地址表达式由变量、标号、寄存器、常量和运算符组成。寄存器只能是16位的SI、DI、BX、BP和32位的通用寄存器,且寄存器必须位于 中。,3.变量,(1)变量和地址表达式,如:SEG W;取变量W的段基址,如:OFFSET W;取变量W的偏移地址,(2)变量的属性,变量的类型有:字节(byte),字(word),双字(dword),数据存放规律字节数据-一个字节单元存放字数据-二个字节单元存放双字数据-四个字节单元存放规定:(1)“低对低,高对高”(2)低位字节的地址为字的地址,(3)变量存储区中数据的存放,变量名 DB 表达式,;定义字节变量变量名 DW 表达式,;定义字变量变量名 DD 表达式,;定义双字变量变量名 DQ 表达式,;定义四字变量,数据定义伪指令指明了变量的类型表达式确定变量的初值。表达式有如下6种:,(4)变量的定义,变量,(1)表达式为常量或数值表达式存入数值 如:W1 DW 1(2)表达式为ASCII字符串 存入ASCII值 如:W2 DW AB;用DW定义时,串长不可大于2 B2 DB AB$;用DB定义时,串长可大于2(3)表达式为重复子句 格式:N DUP(表达式)如:B3 DB 2 DUP(0)B4 DB 2 DUP(5,A),变量的定义,(4)地址表达式(只适用DW、DD和DF3个伪指令)格式:变量名 DW 地址表达式;取其偏移地址来初;始化变量 变量名 DD 地址表达式;取16位偏移地址和段;基址来初始化其变量变量名 DF 地址表达式;取32位偏移地址和段;基址来初始化其变量(5)由以上表达式组成的序列,之间用,分隔 B5 DB 1,2,3,变量、标号以及由其组成的地址表达式均有类型属性。地址表达式的类型属性由其中的变量或标号(一个地址表达式不可能同时含有变量和标号)决定。不含变量或标号,仅含寄存器的地址表达式没有类型属性。可以使用PTR算符临时变更原地址表达式的类型属性,或者明确没有类型属性的地址表达式的类型,而仍保持它们原来的段基址和偏移地址属性不变。格式:类型 PTR 地址表达式如:BYTE PTR BX+5;明确类型 WORD PTR B2;临时变更,5.地址表达式类型的变更,7.1.2 表达式与运算符,表达式由操作数和运算符组成,在汇编的时,一个表达式得到一个值操作数可以是寄存器、常量(数值常量、符号常量)、存储器操作数(标号、变量)运算符包括:算术运算符、逻辑运算符、关系运算符、数值返回运算符和属性运算符,注:表达式中的运算符是一种伪操作,也是由汇编程序来完成的,不要将它与指令混淆了,1.算术运算符+,-,*,/是加减乘除运算符。MOD是除法取余运算符。例如,32 MOD 52。SHL是左移操作符。例如,21H SHL 284H。SHR是右移操作符。,2.逻辑运算符AND是逻辑“与”操作符。例如,24H AND 0FH04H。OR是逻辑“或”操作符。例如,24H OR 0FH2FH。XOR是“异或”操作符。例如,24H XOR 0FH2BH。NOT是逻辑“非”操作符。例如,NOT 24H0DBH。,3.关系运算符关系运算是逻辑判定式的,当为“真”时结果取0FFFFH,当为“假”时结果取0。关系运算是数值型的。EQ等于。例如,已赋给符号PP为25,则25 EQ PP0FFFFH。EQ,NE,LT,LE,GT,GE,4.分析运算符,SEG 变量/标号(求段基址)OFFSET 变量/标号(求偏移地址)MOV SI,OFFSET S1(LEA SI,S1)MOV DI,OFFSET S2(LEA DI,S2)TYPE 变量/标号(P159 表 7-1)变量返回类型:1:字节、2:字、4:双字标号返回类型:-1:NEAR、-2:FARSIZE 符号名(求为符号名分配的字节数,为符号名定义的数据项必须是由DUP()定义的)LENGTH 符号名,5.组合运算符(改变、建立符号名的新类型),(1)定义符号为新类型格式:类型 PTR 符号名MOV AX,WORD PTR D1(2)指定新类型格式:THIS 类型LABC EQU THIS BYTE(新类型)LABD DW 4321H,2255HMOV AL,LABC;AL=21HMOV AX,LABD;AX=4321H,分离运算符,(1)LOW 取低字节格式:LOW 表达式(2)HIGH 取高字节格式:HIGH 表达式P160 例:设SSY=2050H MOV AL,LOW 3080H;AL=80H MOV AH,HIGH SSY;AH=20H MOV CL,LOW 3A4BH;CL=4BH,7.2 伪指令(Directive)不由CPU 来执行而由汇编(MASM)来识别的指令称为伪指令,伪指令没有对应的机器指令,其格式为标号 伪指令 操作数;注释,1、符号定义伪指令 EQU、=表达式的值赋给符号名注意:该语句把表达式的值赋给符号名,在同一程序中,用EQU语句赋值的符号名不能被重新赋值,但用“”号赋值的符号名可以被重新赋值。该定义不占内存空间。,7.2 伪指令(Directive),注意:表达式或数据项表多于一项时,项与项之间用逗号“,”或空格分隔,表达式或数据项重复书写时,可用重复格式简写。定义重复数据操作符DUP必须与DB、DW、DD、DQ配合使用。,2、内存数据定义伪指令:DB、DW、DD、DQDB:表达式值或项表中的每一项是一个字节数,它们从符号名地址开始按字节连续存放 例,B1 DB 20H DUP(?)B2 DB 2 DUP(3 DUP(ABC),括号内是重复的内容,7.2 伪指令,3.段定义伪指令存储器在逻辑上是分段的,各段的定义由伪指令实现。格式:段名SEGMENT定位方式连接方式类别名 段名ENDS段定义伪指令为程序的汇编和连接说明了段名、分段的各种属性以及分段的开始和结束。段名是自定义符,开始的段名与结束的段名必须相同。段的长度不超过64KB。SEGMENT后面的参数是可选项。(P163),4.段寄存器说明伪指令格式:ASSUME段寄存器:段定义名1,段寄存器:段定义名2,该伪指令告诉汇编程序在汇编时,段寄存器CS:,DS:,SS:和ES:应具有的符号段基址,以便汇编指令时确定段和建立错误信息。但是段寄存器实际值(CS除外)还要由传送指令在执行程序时赋值。,5、过程(子程序)定义伪指令格式:过程名PROC NEAR(FAR).过程名ENDP(P162),8 定位伪指令 ORG 100H该指令后面的一条指令语句或数据区定义命令从偏移地址为100H处开始存放。,12、记录伪指令:(1)记录定义伪指令:RECORD(2)记录存储单元分配及赋值13、结构伪指令STRUC ENDS,11.连接伪指令连接伪指令主要解决多模块的连接问题,对一个大程序来说,往往要分模块编程,分模块调试,最后再系统连接与调试。连接伪指令为多模块连接进行说明。(1)公用符号伪指令格式:PUBLIC符号名1,符号名2,本模块用PUBLIC伪指令说明的自定义符号名可由其他程序模块引用,没有说明的符号名不能被其他模块引用。符号名可以是变量名、标号、过程名或符号常量等。(2)引用符号伪指令格式:EXTRN符号名1:类型,符号名2:类型在本模块引用的在其他模块定义的符号名必须用EXTRN进行说明,否则不能引用。此外还应注意,所引用的外模块定义的符号名还应是用PUBLIC伪指令说明过的。(3)插入伪指令(或称包含伪指令)格式:INCLUDE模块名在本模块汇编时,把另一模块插入该伪指令处一起汇编,被插入的模块可以是不完整的。,DS:0000DS:000AH,DAT SEGMENT ARRAY1 EQU 100AH ARRAY2 DB 12H,34H TABLE1 DW?TABLE2 DB 2 DUP(DEF)B1=$-TABLE1 DAT ENDS MOV AX,ARRAY1LEA SI,TABLE1 MOV SI,AX,填写DS:0000-DS:000AH内存,并求B1的值。,练习:,7.4 系统功能调用,1、MS-DOS系统中的内部子程序2、对汇编语言编程者来说是独立中断子程序,用软中断指令调用,它们的入口地址已由系统置入中断入口地址表中。3、INT 21H 称为系统功能调用,共有88个功能号4、使用格式(1)入口参数 指定寄存器(无参数的不用此句)(2)功能号 AH(3)INT 21H5、重点掌握 1、0AH、2、9、4CH 号,调用格式:MOV AH,1 INT 21H 入口:无入口参数 出口:键入字符ASCII码值在AL中,回显该字符。,常用功能调用,(1)1号功能调用键入并显示一个字符,调用格式:MOV DL,待显示字符的ASCII MOV AH,2 INT 21H 入口:输出字符的ASCII 送 DL 出口:无出口参数例:显示字符 B MOV AH,2 MOV DL,B INT 21H,(2)2号功能调用显示器显示一个字符,7.4 系统功能调用,调用格式:MOV DX,OFFSET BUF MOV AH,0AH INT 21H 入口:DS:DX置输入数据区首址,第一单元置允许键入的字符数(含回车符)出口:键入的实际字符数在第二单元中,键入的字符从第三单元开始存放,(3)0A号功能调用键盘输入字符串,7.4 系统功能调用,调用格式:MOV DX,待显示字符串的首偏移地址 MOV AH,9 INT 21H 入口:DS:DX置字符串首地址,字符串以结束 出口:无出口参数,(4)9号功能调用显示器显示字符串,7.4 系统功能调用,例:显示 AZ 26个字符方法一:用2号功能调用,单个字符依次输出方法二:定义一个存储区,存放26个字符,并以$结束,用9号功能调用输出字符串OBUF DB ABCDXYZ$MOV DX,OFFSET OBUF MOV AH,9 INT 21H,7.4 系统功能调用,调用格式:MOV AH,4CH INT 21H入口:无入口参数 出口:执行结果是结束当前正在执行的程序,并返回操作系统。,(5)4CH号功能调用返回操作系统,注意:1.汇编中的“回车”操作仅将光标移至本行行首,故一般在10号功能调用后要输出一个换行0AH,将光标移至下一行的行首2.2号、9号、10号功能调用均会破坏AL中的内容,故为了防止AL中内容被破坏,在调用前应先保护AL,调用后再恢复,7.4 系统功能调用,7.5 汇编程序的功能及汇编过程(1),1.编辑汇编语言程序a.先通过附件进入DOS状态 C:;b.D:CD MASM;进入D盘MASM子目录 D:MASM;c.EDIT ABC.ASM(ABC.ASM为文件名,用户可自己取名,但后缀必须为ASM)d.键入程序2汇编(MASM)源程序:MASM ABC;(生成ABC.OBJ 文件)3程序连接:LINK ABC;(生成ABC.EXE 文件),7.5汇编程序的功能及汇编过程(2),4执行程序:ABC(注:本例无显示结果的程序段,因而无法看到结果,要想看结果,必须使用DEBUG程序;5调试程序a.DEBUG ABC.EXE;(将ABC.EXE文件调入内存并进入DEBUG状态-)b.-U(显示程序,程序从IP=0000处开始)c.-G(运行程序ABC.EXE,运行完后回到DEBUG状态-)d.查看程序结果:-U0000(显示程序,并从程序的第4句知数据段的段地址,例如0B4E-D4C28:0 0B4E:0000 7A 0A 07.,7.6汇编语言源程序设计 8086汇编语言源程序的结构,DATA SEGMENT.DATA ENDSSTACK SEGMENT STACK.STACK ENDSCODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODESTART:CODE ENDS END START,数据段,堆栈段,代码段,8086的16位段模式的格式如下:stack segment stack stack dw 32 dup(0)stack endsdata segment data endscode segmentbegin proc far assume ss:stack,cs:code,ds:data push ds sub ax,ax push ax mov ax,data mov ds,ax retbegin endpcode ends end begin,宏汇编源程序的格式,【例7.1】设计要求:在源程序中设置数据段、堆栈段及代码段。在数据段中定义8个字节数据,把这些数据转换成十六进制数的ASCII码存在上述数据之后,然后在屏幕上显示这些数据。显示数据用DOS功能2号调用,每个数据用空格分隔。(2)程序流程:程序流程如图7.6和图7.7所示。,图7.6,图7.7,NAME EX1DAT SEGMENT PARA DAT A1 DB 12H,34H,56H,78H,9AH DB 0BCH,0DEH,0F0H B1=$-A1;求出$到A1所占的字节数 B2=B1*2 A2 DB B2 DUP(?);定义B2个内存空间DAT ENDS注:$:当前数据指针,是一个偏移地址值;未用内存数据定义伪指令定义的变量不占内存空间,因而B1、B2不占内存空间,,例7.1程序运行结果显示:12 34 56 78 9A BC DE F0,(3)程序清单:二进制数对十六进制数转换及显示主程序:,STAC SEGMENT PARA STACK STA STA1 DW 100 DUP(?)STAC ENDS,CODE SEGMENT PARA CODE ASSUME CS:CODE,DS:DAT ASSUME SS:STAC,ES:DAT STAR PROC FAR PUSH DS XOR AX,AX PUSH AX MOV AX,DAT MOV DS,AX MOV ES,AX,;执行后返回所需指令,;赋段及偏移地址,LEA SI,A1 LEA DI,A2 28:MOV CX,B1;要转换的字节数 G1:MOV BL,2;每字节转换2次 MOV AL,SI MOV BH,AL;取出的数先暂存于BH PUSH CX MOV CL,4;先取出高4位 ROR AL,CL POP CX,G2:AND AL,0FH DAA ADD AL,0F0H ADC AL,40H MOV DI,AL INC DI MOV AL,BH;取回暂存数据准备取低4位 DEC BL JNZ G2;一个字节未转换完2次则转G2 INC SI LOOP G1,MOV SI,OFFSET A1+1 MOV CX,B2;CALL P1 RET,G2:AND AL,0FH DAA ADD AL,0F0H ADC AL,40H,;AL=07H;AL=07H;AL=F7H,CF=0;AL=37H,;AL=0AH;AL=10H;AL=00H,CF=1;AL=41H,P1 PROC;显示两数据、一个空格的子程序 MOV BL,2;计数值 G:MOV DL,SI MOV AH,2 INT 21H INC SI DECBL JNZT MOV DL,MOV AH,2 INT 21H MOVBL,2 T:LOOP G RET,;系统功能调用(P169),;显示空格,P1 ENDP CODE ENDS END STAR,MOV AL,SI AND AL,0FH MOV SI+1,AL MOV AL,SI MOV CL,4 SHR AL,CL MOV SI+2,AL,CMP AL,0AH JC AB1 ADD AL,7 AB1:ADD AL,30H,CMP AL,0AH JC AB2 ADD AL,7AB2:ADD AL,30H,;转换成ASCII码,;转换成ASCII码,加30H/37H:,7.3 宏指令,1、为了简化汇编语言源程序的书写,将一些频繁出现的程序段定义为“宏指令”,当遇到这个程序段时,只需用一条宏调用语句代替。2、汇编过程中要将宏指令所代替的程序段汇编成相应的机器代码并插入到源程序的目标代码中。例如,(1)宏定义SHIFT MACRO MOV CL,4 SAL AL,CL ENDM(2)宏调用 MOV AL,SI SHIFT,DAT SEGMENT A1 DB 12H,34H A2 EQU 100AH T1 DW?T2 DB 2 DUP(ABC)B1=$-A1 DAT ENDS MOV AX,A2LEA SI,T1MOV SI,AX,填写数据段内存,并求B1的值。,练习:,

    注意事项

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

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开