河科大微机原理课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《河科大微机原理课件.ppt》由用户(ziliao2023)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 河科大 微机 原理 课件
- 资源描述:
-
1、.1 用指令助记符、标号、寄存器名、数字等用指令助记符、标号、寄存器名、数字等符号构成的编写程序的语言叫符号构成的编写程序的语言叫汇编语言汇编语言。汇编语。汇编语言是机器语言的言是机器语言的符号符号表示,它比机器语言好读,表示,它比机器语言好读,比高级语言占用的内存少、执行速度快。因此汇比高级语言占用的内存少、执行速度快。因此汇编语言总是程序设计的重要手段。编语言总是程序设计的重要手段。第七章第七章 汇编语言程序设计汇编语言程序设计.27.1 概述概述u用汇编语言编写的程序叫汇编语言程序,简称源程序。u机器语言程序称目标程序。u将源程序翻译成目标程序的过程叫做汇编。上机环境上机环境硬件硬件系统
2、软件系统软件 应用软件应用软件 操作系统:操作系统:DOS系统系统编辑器编辑器:EDIT.exe 汇编程序汇编程序:MASM.exe连接程序连接程序:LINK.exe调试程序:调试程序:DEBUG.exe用户开发的程序:用户开发的程序:ABC.exe等等CPU、存储器、存储器(ROM、RAM)、I/O接口、输入、输出设备接口、输入、输出设备.4D:EDIT ABC.asmD:MASM ABC;有语法错,回有语法错,回EDIT下改该程序下改该程序D:LINK ABC;有错,回在有错,回在EDIT下改程序下改程序D:ABC 运行结果错,回运行结果错,回EDIT下改程序下改程序 或在或在DEBUG下
3、调试,找原因。下调试,找原因。D:DEBUG ABC.exe 汇编语言上机过程汇编语言上机过程编辑源程序编辑源程序EDIT ABC.ASM汇编源程序汇编源程序MASM ABC.ASM形成目标程序形成目标程序ABC.OBJ连接目标程序连接目标程序LINK ABC.OBJ形成可执行程序形成可执行程序ABC.EXE运行程序运行程序用用DEBUG调试调试.6 伪指令是汇编语言程序中的伪指令是汇编语言程序中的指示性语句指示性语句,它体,它体现程序员的汇编意图,其作用是在源程序汇编时指现程序员的汇编意图,其作用是在源程序汇编时指导汇编程序汇编,而本身不会产生目标代码和占用导汇编程序汇编,而本身不会产生目标
4、代码和占用内存。内存。伪指令的具体功能是向汇编程序提供下列信息:伪指令的具体功能是向汇编程序提供下列信息:如何如何分段分段、段的、段的定义和说明定义和说明,段间,段间关系关系,模块的,模块的定定义义和说明以及和说明以及模块间模块间的关系,数据的的关系,数据的定义定义,开始开始汇编汇编和和结束结束汇编等。汇编等。7.2 伪指令伪指令(指示性语句指示性语句).7l指令性语句指令性语句是用指令系统中的指令构成的语句。是用指令系统中的指令构成的语句。例例 MOV AX,BXMOV AX,BXl指示性语句指示性语句是指示汇编程序进行汇编的操作。是指示汇编程序进行汇编的操作。例例 MOV AX,4 MOV
5、 AX,4+8 8 中的中的+code code SEGMENTSEGMENT 中的中的SEGMENTSEGMENT MOV BX,MOV BX,OFFSETOFFSET string string 中的中的OFFSETOFFSET指示性语句与指令性语句:指示性语句与指令性语句:.8 一个程序经汇编,连接和装入内存后,在执行一个程序经汇编,连接和装入内存后,在执行程序之前:程序之前:指示性语句的功能已经完成,故又称伪指令。指示性语句的功能已经完成,故又称伪指令。而指令性语句的功能尚未完成,需控制而指令性语句的功能尚未完成,需控制CPUCPU去去执行,才能完成。执行,才能完成。l 指示性语句与指
6、令性语句区别指示性语句与指令性语句区别.9 1、等值语句:、等值语句:格式格式 符号名符号名 EQU EQU 表达式表达式 作用是用符号名等值指作用是用符号名等值指定的表达式。其中表达式定的表达式。其中表达式可以是任何有效的操作数,可以是任何有效的操作数,汇编时用语句中的表达汇编时用语句中的表达式代替程序中符号所在的地方。式代替程序中符号所在的地方。应用:应用:1.1.定义符号常量,方便修改程序。定义符号常量,方便修改程序。2.2.某表达式多次出现时,用等值伪指令可以方某表达式多次出现时,用等值伪指令可以方便编程。便编程。一、符号定义伪指令一、符号定义伪指令例如:EMP EQU 8 COUNT
7、 EQU EMP+6 2、等号语句:、等号语句:格式格式 符号名符号名 =表达式表达式 作用是用符号名等值指作用是用符号名等值指定的表达式,定的表达式,用用“=”=”定义的符号名可重新定义。定义的符号名可重新定义。例如:NMU=6NMU=6 NMU=NMU+6 NMU=NMU+6.11 用来定义程序中所用的内存操作数。用来定义程序中所用的内存操作数。其中其中变量名变量名指示内存操作数的地址(符号地址);指示内存操作数的地址(符号地址);助记符助记符指示内存操作数的类型指示内存操作数的类型(字节、字、双字等字节、字、双字等);操作数操作数指示内存操作数的内容。指示内存操作数的内容。二、数据定义伪
8、指令二、数据定义伪指令.12常用的类型助记符有:常用的类型助记符有:DBDB 指示其后的操作数为字节类型指示其后的操作数为字节类型DWDW 指示其后的操作数为字类型指示其后的操作数为字类型DDDD 指示其后的操作数为双字类型指示其后的操作数为双字类型DQDQ 指示其后的操作数为八字节类型指示其后的操作数为八字节类型DTDT 指示其后的操作数为十字节类型指示其后的操作数为十字节类型二、数据定义伪指令二、数据定义伪指令例:DATA-BYTE DB 10,4,10H DATA-WORD DW 100,100H,5H DATA-DW DD 6+20,0FFFDH数据定义伪指令中的表达式也可以是字符串如
9、:MESSDBABCD 数据定义伪指令的表达式中会出现“?”数据项,ABC DB?,?,DEF DW?,50,?这时汇编程序会对“?”数据项保留相应的存储空间,而不存入数据。0AH04H10HDATA-BYTE64H00HDATA-WORD00H01HFBHFFH1AH00H00H00HDATA-DW100100H-526MESS41H42H43H44HABCDEF32H注意注意:3 3个及其以个及其以上的字符,上的字符,只能只能用用DBDB定义定义可用可用 DUP 复制操作符复制操作符定义相同的操作数,其定义相同的操作数,其格式为格式为 重复次数重复次数 DUP(操作数操作数)例例 EE D
10、B 3 DUP(4)等价于等价于EE DB 4,4,4例:例:ED DB 10 DUP(?)(?)相当于定义相当于定义10个空单元。个空单元。.17格式格式 段名段名 SEGMENT SEGMENT 定位类型定位类型组合类型组合类型类别类别 、段名段名 ENDSENDS 段定义由伪操作段定义由伪操作SEGMENTSEGMENT开始开始、ENDSENDS结束结束。其中:其中:SEGMENT SEGMENT 和和ENDS ENDS 必须成对出现,且语句前必须有段必须成对出现,且语句前必须有段名,名,段名必须相同段名必须相同。SEGMENTSEGMENT和和ENDSENDS语句之间可以有指令和其他伪
11、操作语句之间可以有指令和其他伪操作,表示存放在该段内存的变量、指令或其他伪操作对该段内存表示存放在该段内存的变量、指令或其他伪操作对该段内存的处理的处理 程序中可以定义多个段。程序中可以定义多个段。程序经汇编、连接及装入内存后,段名为一具体的段值。程序经汇编、连接及装入内存后,段名为一具体的段值。三、段定义伪操作三、段定义伪操作.18AA SEGMENT ;数据段数据段1 str1 DB Hello!AA ENDSBB SEGMENT ;数据段数据段2 str2 DB 6 dup(?)BB ENDSCC SEGMENT ;代码段代码段 ASSUME CS:CCASSUME DS:AA,ES:B
12、B start:CLD MOV AX,AA MOV DS,AX LEA SI,str1 MOV AX,BB MOV ES,AX LEA DI,str2 MOV CX,6 REP MOVSB MOV AH,4CH INT 21H CC ENDS END start数据传送源程序:数据传送源程序:定位类型、组合类型和类别说明段的属性,它们用定位类型、组合类型和类别说明段的属性,它们用方括号括起来表示可以缺省。若不缺省,各项排序不能方括号括起来表示可以缺省。若不缺省,各项排序不能错,项与项要用空格分开。错,项与项要用空格分开。定位类型有四种:定位类型有四种:PAGE(页)型要求该段物理地址低(页)型
13、要求该段物理地址低8位全为位全为0 PARA(节)型要求该段物理地址低(节)型要求该段物理地址低4位全为位全为0 WORD 型要求该段物理地址码为偶数(最低位为型要求该段物理地址码为偶数(最低位为0)BYTE型该段的物理地址可为任意值。型该段的物理地址可为任意值。组合类型组合类型说明本段与其它段的关系。说明本段与其它段的关系。类别类别它可以是任何合法的名称。它可以是任何合法的名称。.20格式格式 ASSUME ASSUME 段寄存器:段名段寄存器:段名 ,段寄存器段寄存器:段名段名,其中其中 段寄存器段寄存器为为CSCS、DSDS、ESES、SSSS中的一个中的一个 段名段名为用伪操作为用伪操
14、作SEGMENTSEGMENT定义过的段名定义过的段名例例 ASSUME CS:CC,DS:AAASSUME CS:CC,DS:AA四、段寄存器说明四、段寄存器说明ASSUME伪指令伪指令 ASSUME 伪操作的作用伪操作的作用 指示汇编程序指令中用到的标号、过程及变量指示汇编程序指令中用到的标号、过程及变量所在的段。所在的段。其中其中 对标号、过程必须用对标号、过程必须用 CS 段寄存器指示,段寄存器指示,对变量可用对变量可用 CS、DS、ES、SS 段寄存器指示。段寄存器指示。若未用若未用ASSUMEASSUME语句指示指令中用到的标号、过程语句指示指令中用到的标号、过程和变量所在的段和变
15、量所在的段,汇编程序将给出错误信息。汇编程序将给出错误信息。ASSUMEASSUME语句只起指示作用,并无实际的操作。在语句只起指示作用,并无实际的操作。在程序中引用定义的变量做内存操作数时,需按寻址程序中引用定义的变量做内存操作数时,需按寻址方式用传送指令(如方式用传送指令(如MOVMOV)给相应的段寄存器赋值。)给相应的段寄存器赋值。例例 用程序实现用程序实现 1234H+5678H1234H+5678Hdata SEGMENT value DW 1234H,5678H result DW?data ENDS code SEGMENT ASSUME CS:code,DS:data star
16、t:MOV AX,data ;给给DS赋值赋值 MOV DS,AX MOV AX,value ;取数取数 ADD AX,value+2 ;两数相加两数相加 MOV result,AX ;保存结果保存结果 MOV AH,4CH ;返回返回DOS INT 21H code ENDS END start12H34H78H56Hvalueresult.23 格式格式 过程名过程名 PROC PROC 类型类型 、过程名过程名 ENDPENDP 过程过程定义由伪操作定义由伪操作PROCPROC开始、开始、ENDPENDP结束结束。其中:其中:PROC PROC 和和ENDP ENDP 必须成对出现必须成
17、对出现,且语句前必须有过程名,且语句前必须有过程名,过程名必须相同过程名必须相同。PROCPROC和和ENDPENDP语句之间为子程序的指令序列。语句之间为子程序的指令序列。程序中可以定义多个过程。程序中可以定义多个过程。五、过程定义伪操作五、过程定义伪操作 程序经汇编、连接及装入内存后程序经汇编、连接及装入内存后,过程名为一具体过程名为一具体的内存地址,指示子程序入口。的内存地址,指示子程序入口。过程名常用作过程名常用作CALLCALL调用指令的操作数调用指令的操作数,子程的最后安排子程的最后安排RETRET返回指令,使执行完子程后返回指令,使执行完子程后能返回调用处。能返回调用处。过程有两
18、种类型:过程有两种类型:NEARNEAR和和FARFAR 无类型项时,无类型项时,默认为默认为NEARNEAR类型类型。当过程与调用指令不在同一段时,应将过程定义当过程与调用指令不在同一段时,应将过程定义为为 FAR FAR 类型。类型。过程类型决定子程中过程类型决定子程中RETRET的返回类型的返回类型 例例1 1 display PROC display PROC 、RET RET ;NEAR;NEAR 属性的过程对应段内返回属性的过程对应段内返回 display ENDPdisplay ENDP例例2 2 display PROC display PROC FARFAR 、RET RET
19、 ;FAR;FAR属性的过程对应段间返回属性的过程对应段间返回 display ENDPdisplay ENDP.261 1、NAME NAME 和和 TITLE TITLE 伪操作伪操作 格式:格式:NAMENAME 模块名模块名 格式:格式:TITLETITLE 模块名模块名 在源程序开始可用在源程序开始可用 NAME NAME 或或 TITLE TITLE 为模块命为模块命名名,模块名的作用是指示给连接程序进行连接用。模块名的作用是指示给连接程序进行连接用。源程序中可无模块定义,此时源文件名作为模源程序中可无模块定义,此时源文件名作为模块名。块名。六、模块定义和程序结束伪操作模块定义和程
20、序结束伪操作.27 格式:格式:END END 启动地址启动地址 作用是指示源程序到此结束。作用是指示源程序到此结束。汇编程序对汇编程序对 END END 之后的语句不进行处理。之后的语句不进行处理。程序中所有有效语句应放在程序中所有有效语句应放在 END END 语句之前。语句之前。源程序中必须有源程序中必须有 END END 结束语句。结束语句。汇编程序对无汇编程序对无 END END 语句的源程序不进行处理语句的源程序不进行处理,只给出无只给出无 END END 语句错误信息。语句错误信息。2、END伪操作伪操作.28 格式:格式:ORG ORG 数值表达式数值表达式 其功能是指定其后的
21、程序或数据块起始地址其功能是指定其后的程序或数据块起始地址 的偏移量。数值表达式的值是一个无符号数。的偏移量。数值表达式的值是一个无符号数。七、定位伪指令七、定位伪指令 例:例:ORG 1000HORG 1000H DATA SEGMENT DATA SEGMENT .29包括:包括:TYPE,LENGTH,SIZE,SEG,OFFSET。把一些特征或存贮器地址的一部分作为数值回送。把一些特征或存贮器地址的一部分作为数值回送。八、数值八、数值回送操作符回送操作符:.30TYPE variable 回送该变量的以回送该变量的以字节数表示的类型。字节数表示的类型。(DB为为1,DW为为2,DD为为
22、4,DQ为为8,DT为为10)或或 label 标号,回送标号类型数值(标号,回送标号类型数值(NEAR为为,FAR为为2)例:例:ARRAY DW 1,2,3 ADD SI,TYPE ARRAY汇编程序其形式:汇编程序其形式:ADD SI,2.31 LENGTH variable 对于变量中使用对于变量中使用DUP汇编回送分配给变量项数,汇编回送分配给变量项数,其他情况回送其他情况回送1。例:例:FESS DW 100 DUP(0)对于对于 MOV CX,LENGTH FESS汇编程序将其形式:汇编程序将其形式:MOV CX,100其他情况,回送其他情况,回送1。LENGTH.32例:例:A
23、RRAY DW 1,2,3对于指令对于指令 MOV CX,LENGTH ARRAY汇编程序将使其形式为:汇编程序将使其形式为:MOV CX,1例:例:TABLE DB ABCD对于指令对于指令 MOV CX,LENGTH TABLE汇编程序使其形式为:汇编程序使其形式为:MOV CX,1 LENGTH(续)(续).33SIZE variable回送分配给该变量的字节数回送分配给该变量的字节数LENGTH*TYPE例:例:FEES DW 100 DUP(0)MOV CX,SIZE ARRAY将形成:将形成:MOV CX,200 SIZE.34例:例:TABLE DBABCD MOV CX,SIZ
24、E TABLE将形成将形成 MOV CX,1例:例:ARRAY DW 1,2,3MOV CX,SIZE ARRAY形式形式 MOV CX,2 LENGTH*TYPE=2 SIZE(续)(续).35 TYPE变量变量的返回值是类型的字节数的返回值是类型的字节数:DB为为1,DW为为2,DD为为4,DQ为为8,DT为为10 TYPE标号标号的返回值是:的返回值是:NEAR为为-1,FAR为为-2。LENGTH变量变量返回返回DUP分配的项数,对于其分配的项数,对于其他情况则返回他情况则返回1。SIZE返回返回值是:值是:LENGTH和和TYPE值的乘积,值的乘积,即变量的字节数。即变量的字节数。.
25、36 SEG 取符号地址的段地址取符号地址的段地址 例例 MOV AX,SEG yy OFFSET 取符号地址的偏移地址取符号地址的偏移地址 例例 MOV BX,OFFSET yy SEG(OFFSET).37SEG、OFFSET只能对只能对符号地址符号地址操作操作MOV AX,SEG BXMOV BX,OFFSET SI 注意:注意:.38一、概述一、概述 (一)一)判断程序质量的标准判断程序质量的标准l 简明、易读、易维护。简明、易读、易维护。l 速度快、执行时间短。速度快、执行时间短。l 占用内存空间小。占用内存空间小。7.4汇编语言程序设计汇编语言程序设计.39 1.1.编写程序主体。
展开阅读全文