




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.微机原理与应用第四章:汇编语言程序设计,合肥工业大学计算机与信息学院,2。第四章:汇编语言程序设计,汇编语言伪指令汇编语言程序设计的基本要素,3。第四章:汇编语言程序设计,汇编语言伪指令汇编语言程序设计的基本要素,汇编语言常量运算符的格式和汇编语言表达式;5.第四章:汇编语言程序设计的基本要素;汇编语言中的汇编语言常量运算符和表达式的格式;6.第四章:汇编语言程序设计的基本要素;用汇编语言编写的源程序由许多语句组成(也称为汇编指令)。每条语句由14个部分组成,其格式为:标签指令助记操作数;注释标识符:给指令或存储位置地址的名称。它可以由下列字符组成:字母:a z;数字:0 9;特殊字符:一
2、,美元。数字不能用作标识符的第一个字符,但点只能用作第一个字符。标识符最长可达31个字符。当一个标识符后跟一个冒号时,它表示一个标签。它代表这一行指令的起始地址;当标识符后没有冒号时,它表示一个变量;伪指令之前的标识符中不添加冒号。指令助记符:表示不同操作的指令,可以是8086指令助记符或伪指令。操作数:在其上执行指令的对象。根据说明的要求,可以有一个、两个或没有。注意:此项是可选的,它是添加到源程序中的一个注释,以提高程序的可读性。第4章:汇编语言编程的基本要素汇编语言,汇编语言常量操作符的格式和汇编语言中的表达式8。第四章:汇编语言程序设计的基本要素汇编语言中的汇编语言常量可以分为数字常量
3、和字符串常量。数字常数可以用几种不同的形式表示,如二进制数、八进制数、十进制数、十六进制数等。在汇编语言中,不同的后缀用来区分它们。b:代表二进制数。例如,10100101B。d:表示十进制数。例如278D或278。q:代表八进制数。例如567、263。h:代表十六进制数。例如9AH、5678H。字符串常量是用单引号括起来的字符串。例子:这是一个学生!12345应该指出,这里12345的值不是十进制数12345,而是代表它们相应的ASCII码,即31H、32H、33H、34H和35H。第四章:汇编语言程序设计汇编语言操作符的基本要素和表达式汇编语言操作符在表达式中起着重要的作用。8086宏由五
4、种算术运算符、逻辑运算符、关系运算符、数字环回运算符和属性运算符组成。返回值操作符可以将一些特征或部分内存地址作为值返回。有五种:SEG(计算段基值)、OFFSET(计算偏移量)、TYPE(计算变量类型)、LENGTH(计算字节数)和SIZE(计算字节数)。其中LENGTH和SIZE仅对数据存储器地址操作数有效。属性运算符可用于建立和临时更改变量或标签的类型以及内存操作数的内存位置类型,同时忽略当前属性。共有6个:PTR、段属性前缀、短、这个、高和低。10,第4章:汇编语言编程的基本要素汇编语言,汇编语言中的运算符和表达式,第11章:汇编语言编程的基本要素汇编语言,汇编语言中的运算符和表达式数
5、字回声运算符SEG运算符:使用运算符SEG,您可以得到一个标签或变量的段基址格式:SEG变量名或标签名例如,已知的DATA段数据从内存03000H的实际地址开始,定义如下DATASEGMENT定义数据段VAR1DB10H、18H、25h、34H、25H和34H;定义字节数据变量2DW2300H,1200H定义字数据VAR3DD11002200H,33004400H定义双字数据DATAENDS在数据段的末尾,MOV BX,SEG VAR1被编译成:MOV BX,0300H MOV CX,SEG VAR2被编译成:MOV CX,0300H MOV DX,SEG VAR3被编译成;MOV DX,03
6、00H,12,第4章:汇编语言编程汇编语言的基本元素,汇编语言中的运算符和表达式数值返回运算符偏移量运算符:您可以通过使用运算符偏移量来获取变量的标签或偏移量。使用格式:偏移变量名或标签名DATASEGMENT定义数据段VAR1DB10H、18H、25h、34H、25H和34H;定义字节数据变量2DW2300H,1200H定义字数据VAR3DD11002200H,33004400H定义双字数据DATAENDS在数据段的末尾,MOVBX,OFFSET VAR1被编译成:MOVBX,0000h movcx,OFFSET VAR2被编译成:MOV CX,0000H MOV CX,offsetvar3
7、被编译成:MOV DX,0008H,13,汇编语言中的运算符和表达式返回值运算符TYPE运算符:TYPE运算符可以添加在变量、结构或标签之前,并计算这些内存操作数的类型部分。运算符TYPE的结果是一个数值,它对应于内存操作数类型的属性。MOVBX,类型VAR 1:MOVBX,1 MOVCX,类型VAR 2:MOVCX,2 MOV DX,类型VAR3: MOV DX,4,第4章:汇编语言编程汇编语言的基本元素,14,第4章:汇编语言编程汇编语言的基本元素,汇编语言中的运算符和表达式,数字回声运算符,LENGTH运算符:LENGTH运算符放在数组变量的前面,可以计算数组中包含的变量数。阵列1分贝1
8、00度(?)ARRAY2 DW 10DUP(?)阵列DD 10DUP(?)以下说明:MOVBX,LENGTH ARRAY1汇编后:MOVBX,100 MOVCX,LENGTH ARRAY2汇编后:MOVCX,10 MOV DX,LENGTH ARRAY3汇编后:MOV DX,10,15,第4章:汇编语言编程汇编语言的基本元素,运算符和表达式汇编语言中的数字回声运算符SIZE运算符:如果一个变量已被重复的运算符DUP所描述,则SIZE运算符可用于获取分配给该变量的字节总数。阵列1分贝100度(?)ARRAY2 DW 10DUP(?)阵列DD 10DUP(?以下说明:MOV BX,组装后的大小数组
9、1:MOV BX,100 MOV CX,组装后的大小数组2:MOV CX,20 MOV DX,组装后的大小数组3:MOV DX,40,16,第4章:汇编语言编程的基本元素,运算符和表达式属性运算符汇编语言PTR运算符:用于建立符号地址。它本身不分配内存,而是用来给分配的内存地址分配另一个属性,这样地址就有了另一种类型。Var1db 10h,18h,25h,34h var2dw 1223h,1200h mov ax,在执行字ptr var1之后:ax=1810h mov bl,在执行字节ptr var2之后:BL=23H,17,第4章:汇编语言编程,汇编语言的基本元素,伪指令汇编语言编程,18,
10、第4章:汇编语言编程伪指令,用于控制汇编程序,实现条件转移,列表,存储空间分配等处理它的格式与汇编指令相同,但它一般不产生目标代码,也就是说,它不直接命令中央处理器执行任何操作。也就是说,与机器指令不同,它不是在程序运行时由计算机执行,而是在汇编程序编译源程序时由汇编程序处理。19,第4章:汇编语言编程伪指令,定义数据伪指令符号定义伪指令段定义伪指令设置段寄存器伪指令定义过程伪指令宏指令ORG伪指令汇编结束伪指令end,20,第4章:汇编语言编程伪指令,定义数据伪指令符号定义伪指令段定义伪指令设置段寄存器伪指令定义过程伪指令宏指令ORG汇编结束伪指令END,21,第4章:汇编语言编程伪指令,定
11、义数据伪指令这种伪指令数据库:定义字节,即每个数据是1字节。数据仓库:定义字,即每个数据占用1个字(2字节)。定义双字,即每个数据占用2个字。低位字部分在低位地址,高位字部分在高位地址。DQ:定义4个单词长,即每个数据占用4个单词。定义10字节长,用于压缩十进制数据。例如,数据1数据库10H,6,78H,100意味着从数据1单元连续存储10H,6,78H,100,总共占用4个字节地址。22,第4章:汇编语言编程伪指令,定义数据伪指令data1db20hdata2dw0240h,1000hdata3db (-1 * 3),(15/5)data 4 DD 12345 hdata 5 db 0123
12、 data 6 dwab,c,d data7db?DATA8DD?数据9DB5DUP(00)数据10DW3DUP(?),23,第4章:汇编语言编程伪指令,定义数据伪指令,符号定义伪指令段,定义伪指令设置段,寄存器伪指令定义过程,伪指令宏指令,汇编结束伪指令,end,24,第4章:汇编语言编程伪指令,符号定义伪指令EQU伪指令定义符号值。在程序中,无论符号出现在哪里,它都被它在程序集中的值所代替,例如:COUNTEQU100COUNT替换常量100 SUMEQU30 * 25SUM替换数值表达式CEQUCXc替换寄存器cxmekumovm取代了MOV,应该注意的是,一旦一个符号被EQU伪指令赋值
13、,就不允许在整个程序中重新赋值相同的符号。25,第4章:汇编语言编程伪指令,定义数据伪指令,符号定义伪指令,段定义伪指令,设置段寄存器,伪指令,宏指令,ORG,汇编结束伪指令,end,26,第4章:汇编语言编程伪指令,段定义伪指令,段定义伪指令用于定义汇编语言程序中的逻辑段,指定段的名称和范围,并指示段的定位类型、组合类型和类别。常用的线段定义为线段和端点。段名称段定位类型组合类型类别(段中的语句序列)段名称ENDS,27,第4章:汇编语言编程伪指令,段定义伪指令数据1段数据1结束堆栈1段堆栈1结束代码1段假设cs: code1,ds: data1,ss: stack1mov ax,DATA
14、MOV DS,AX MOV AX,STACK MOV SS,AX CODE1 ENDS,28,第4章:汇编语言编程伪指令,定义数据伪指令符号,定义伪指令段,设置段寄存器,伪指令宏指令ORG, 伪指令汇编结束伪指令汇编结束,29,第4章:汇编语言编程伪指令,设置段寄存器伪指令设置段寄存器伪指令用于通知汇编程序哪个段寄存器是该段的段寄存器,以便使用变量或标签汇编指令。常用的段被定义为带有假定的指令。 假设段寄存器:段名称,段寄存器:段名称。注意:由于假定伪指令仅指示某个段地址应该存储在哪个段寄存器中,因此它不包括将段地址发送到该寄存器的操作。因此,需要汇编指令将实际段地址载入段寄存器。这一步是必不
15、可少的。30,第4章:汇编语言编程伪指令,设置段寄存器伪指令数据1段数据1结束堆栈1段堆栈1结束代码1段假设cs: code1,ds: data1,ss: stack1 movax,DATA MOV DS,AX MOV AX,STACK MOV SS,AX CODE1 endS,31,第4章:汇编语言编程伪指令,定义数据伪指令符号定义伪指令段定义伪指令设置段寄存器伪指令定义过程伪指令宏指令ORG伪指令汇编结束伪指令END,32在程序设计中,具有某些功能的程序段可以看作是一个进程(相当于一个子程序),可以被其他程序调用。PROCess由伪指令PRocESS和ENDP定义。进程名proc类型进程体
16、RET进程名ENDP,其中进程名是给进程的名称,不能省略。过程的类型由远过程(远过程,在段之间调用)和近过程(在该段内调用)决定。如果默认类型为,流程将默认为近流程。ENDP标志着这个过程的结束。程序主体中至少应有一条RET指令返回被调用的地方。过程可以嵌套或递归使用。33,第4章:汇编语言编程伪指令,定义进程伪指令DELAYPROC MOVBL,10d ly:MOVEcx,2801 wait:loop wait decbl jnzdely ret delay endp,34,第4章:汇编语言编程伪指令,定义数据伪指令符号定义伪指令段定义伪指令设置段寄存器伪指令定义进程伪指令ORG伪指令汇编结束伪指令结束,35,第4章:汇编语言编程伪指令,如果某些程序段在源中使用多次这个程序段可以被一个宏指令代替,当汇编
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 责令改正法律适用研究
- SLM成形HfO2@TiCp-GH3536复合材料组织性能研究
- 基于VR-AR的编程课程教学设计与应用研究-以中职C语言为例
- 糖尿病酮症病人的个案护理
- 妇女两癌健康知识
- 幼儿健康蔬菜知识启蒙
- 颌面部骨折护理课件
- 某企业客户关系管理分析
- 2025护理质量控制计划
- 傅玄教育思想体系解析
- 土木工程结构力学课件
- 【课件】《科学记数法》说课课件2024-2025学年人教版数学七年级上册
- 学校国际学生管理制度
- 旧钢板桩买卖合同范本
- 第1章 人工智能概述幻灯片
- 工程尾款减免协议书
- 基因组变异数据库构建-洞察阐释
- 地铁安检考试试题及答案
- 人生规划家族会议课件
- DB36T 2033.2-2024国土空间总体规划数据库规范+第2部分:县级
- TCCEAS001-2022建设项目工程总承包计价规范
评论
0/150
提交评论