




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,3.3汇编语言基础(P111),西安电子科技大学冯育长,序言计算机语言发展简介一常量及其数制二、汇编语言语句格式三、伪指令*(重点难点),2,硬件,机器语言,汇编语言,高级语言,继续,计算机语言发展简介,3,返回,硬件是所有数字系统的基础没有软件的硬件系统毫无意义诺依曼原理:程序存储+程序控制,4,机器语言:用二进制代码表示的一种语言。如,8086/8088的的机器代码B034H代表(AL)34H优点:机器语言是机器唯一能识别的语言,是人机之间的接口界面。执行速度最快,执行效率最高。缺点:可读性差,表达的意义不直观,编写、阅读、调试较困难。面向机器每一种微处理器都有自己的机器语言,不能通用,返回,5,汇编语言:是一种符号语言,使用助记符表示相应的操作如,8086/8088的机器代码B034H写成汇编语言MOVAL,34H;(AL)34H比机器语言更易于为人们所理解,可读性强。与机器语言一一对应,是面向机器的语言必须遵循一定的语法规则。(如指令的书写格式等)可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。70%以上的系统软件是用汇编语言编写的。,返回,6,高级语言:面向人的语言,与机器无关BASICPASCALC/C+JAVA便于阅读,易学易用,不涉及硬件,具有通用性。但目标代码冗长,占用内存多,从而执行时间长,效率不高不能直接对某些硬件进行操作。经常与汇编语言配合使用,应用十分广泛。,返回,7,汇编语言与机器语言的关系,用汇编语言编写的程序称为汇编语言源程序,MASM.EXE系统软件,汇编程序,汇编语言源程序.ASM,机器语言目标程序,汇编语言的两种语句类型,1.CPU指令CPU执行的语句,如MOV,ADD等能够生成目标代码2.伪指令(指示性语句)CPU不执行,而由汇编程序执行的语句,不生成目标代码.定义逻辑段、指示程序开始和结束等.,8,一、汇编语言的常量及其数制,B二进制数D(或缺省)十进制数H十六进制数A单引号表示ASCII码(字符串常量),用后缀表示常数的数制,等价,如:MOVAL,01100100BMOVAL,64HMOVAL,100MOVAL,1;(AL)=31HMOVAL,0ABH,以AF开头的数,加前导0,9,允许使用一些简单的常量表达式,等价,如:MOVAL,3+5MOVAL,16/2MOVAL,8,10,二、汇编语言语句格式,标号:助记符操作数,操作数;注释,表示可选项指令的符号地址,标号后要有冒号,注释前加分号,根据不同的指令可有可无,可多可少,操作码不可缺省,1.CPU指令语句格式:,如L1:MOVAL,BL;数据传送,11,标号由下列字符组成:AZ或az?_.09但09不能作为第一个字符,L1:MOVAL,BL,字母数字串,大小写不分,不要用保留字,合法的标号L1:L21:NEXT:LOOP2:EXITagain:,非法的标号1L:21L:$NEXT:LOOP:,12,变量名助记符操作数,操作数;注释,变量的符号地址,后无冒号,伪指令助记符不可缺省,2.伪指令语句格式:,指示汇编程序要完成的操作。用来定义变量,分配存储单元,指示程序开始和结束等,MASM.EXE,1.CPU指令语句格式:,13,三、伪指令,CPU不执行,而由汇编程序执行的语句,指示汇编程序(MASM.EXE)要完成的操作。用于定义变量、分配存储区、定义逻辑段、指示程序开始和结束等,14,1、定义段的伪指令2、定义数据的伪指令3、变量的属性及属性操作符4、定义字符串5、问号?及DUP在DB和DW的应用,重点掌握:伪指令的格式及实现的操作伪指令的应用,15,1、定义段的伪指令,段名SEGMENT定位类型组合类型类别段名ENDS,说明段的起始位置,缺省,则起始地址为0H(段的起始地址能被16整除),说明不同模块中同名段的连接方式缺省,不组合(同名段在逻辑上相互独立),说明段的结束,类别相同者,组合时连续存放,不组合时应缺省,16,2、定义数据的伪指令,用于定义数据区中变量的类型DB定义字节数据DefinByte指令格式:变量名DB数1,数2;注释,可省略,可选,可有多个数据项,17,定义数据段DATA,其中包含3个变量M,N和SUM,DATASEGMENTMDB10HNDB25HSUMDB0DATAENDS,例1,由系统自动为段分配内存,且起始地址一定为0H,DATA是程序员指定的数据段段名;SEGMENT段的定义伪指令段名可以是:DATA2D1D2等,定义字节变量,ENDS数据段结束,数据由此开始!,1FFFFH,20000H,20001H,20002H,18,定义数据段DATA,其中包含3个变量M,N和SUM,DATASEGMENTMDB10HNDB25HSUMDB0DATAENDS,例1,由系统自动为段分配内存空间,且起始地址一定为0H,M,10H,N,25H,SUM,00H,段的起始地址能被16整除每个段最大为64KB最小视需要而定,要点:,19,CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,MADDAL,NMOVSUM,ALCODEENDSENDSTART,定义代码段CODE,实现M+NSUM,DATASEGMENTMDB10HNDB25HSUMDB0DATAENDS,数据段由此开始,CODE是程序员指定的代码段段名;SEGMENT段的定义伪指令,在代码段开头必须用ASSUME指定各段的段寄存器:CS代码段段寄存器,DS数据段段寄存器,ES附加段段寄存器,SS堆栈段段寄存器,注意语法格式,ENDS代码段结束END源程序结束一般在END之后是第一条指令的标号,段名DATA代表数据段的段地址值,用户应完成DS的初始化,方法固定。,变量名表征变量的偏移地址引用变量名访问变量直接寻址方式,20,CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,MADDAL,NMOVSUM,ALCODEENDSENDSTART,定义代码段CODE,实现M+NSUM,DATASEGMENTMDB10HNDB25HSUMDB0DATAENDS,数据段由此开始,CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,2000HMOVDS,AXMOVAL,0000HADDAL,0001HMOV0002H,ALCODEENDSENDSTART,设已知地址如图示,则等价于:,由于地址是由系统自动分配的,故:一律用段名代表段地址值,完成DS的初始化用变量名访问变量直接寻址方式,21,CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,MADDAL,NMOVSUM,ALCODEENDSENDSTART,定义代码段CODE,实现M+NSUM,DATASEGMENTMDB10HNDB25HSUMDB0DATAENDS,请问:,数据段由此开始,代码段的起始地址?,CS:IP会自动初始化2001H:0000H,22,35H,分析程序的运行结果?,DATASEGMENTMDB10HNDB25HSUMDB0DATAENDS,CODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,MADDAL,NMOVSUM,ALCODEENDSENDSTART,SUM=?,23,1、定义段的伪指令,段名SEGMENT段名ENDS,要点归纳:,定义段的伪指令,必须成对出现必须有段名,ASSUMECS:CODE,DS:DATA,;用在代码段首行,指定段寄存器,段的起始地址由系统自动安排段的起始地址能被16整除(段的起始地址一定为0H)CS:IP会自动初始化用户应完成其它段寄存器和偏移地址寄存器的初始化,24,2、定义数据的伪指令,DB定义字节数据DefinByte,归纳:,一般格式:,DB定义字节数据DefinByte,一个数据占1个字节DW定义字数据DefinWord,一个数据占2个字节DD定义双字数据DefinDoubleword,一个数据占4个字节DQ定义的数据为4字型(8字节)DT定义的数据为10字节型,变量名DB数1,数2,;注释,其它几个定义数据的伪指令:,25,画出变量在内存中的存放示意图,D1SEGMENTM1DB1,2M2DW3456H,7D1ENDS,例2,M1,不再关心段地址的具体数值,01,M2,02,56H,34H,07H,00H,第一个变量的偏移地址一定是0000H其他数据按顺序分配内存,26,画出变量在内存中的存放示意图,D1SEGMENTM1DB1,2M2DW3456H,7D1ENDS,例2,M1,不再关心段地址的具体数值,01,M2,02,56H,34H,07H,00H,请问:变量M1的字节长度=?,2,设DS已初始化,写出指令把M1的第一个数据元素存入AL,MOVAL,M1,;直接寻址方式,写出指令把M1的第二个数据元素存入BH,MOVBH,M1+1,;直接寻址,M1+1称为地址表达式,27,画出变量在内存中的存放示意图,D1SEGMENTM1DB1,2M2DW3456H,7D1ENDS,例2,M1,不再关心段地址的具体数值,01,M2,02,56H,34H,07H,00H,请问:变量M2的字节长度=?,4,写出指令把M2的第一个数据元素存入AX,MOVAX,M2,;直接寻址方式,写出指令把M2的第二个数据元素存入BX,MOVBX,M2+2,;直接寻址,M2+2称为地址表达式,28,画出变量在内存中的存放示意图,D1SEGMENTM1DB1,2M2DW3456H,7D1ENDS,M1,不再关心段地址的具体数值,01,M2,02,56H,34H,07H,00H,写出指令把DL的中的数据存入M1的首单元,MOVM1,DL,写出指令把DX中的数据存入M2的首单元,MOVM2,DX,DL,DL,DH,29,画出下列变量占用内存空间的示意图。,D1SEGMENTDATA_BYTEDB10,10H,2*16,255DATA_WORDDW100,250HD1ENDS,课堂作业1,30,画出下列变量占用内存空间的示意图。,D1SEGMENTDATA_BYTEDB10,10H,2*16,255DATA_WORDDW100,250HD1ENDS,DATA_BYTE,0AH,10H,20H,FFH,DATA_WORD,64H,00H,50H,02H,课堂作业1,31,分析程序的功能,课堂作业2,DATASEGMENTXDB5,1,6,3,4,5,6,0,8,9DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,0MOVCX,10MOVBX,0000HL1:ADDAL,BX;(AL)(AL)+(BX)INCBX;(BX)(BX)+1DECCX;(CX)(CX)-1JNZL1;若(CX)0则转向L1HLT;暂停,(AL)=X0+X1+X9,32,数据段的段名为D2,该段中字节变量VAR1中的数据为5,10,-2,11。该段中字变量VAR2中的数据为5678H,100。请写出数据段的程序代码。,D2SEGMENTVAR1DB5,10,-2,11VAR2DW5678H,100D2ENDS,课堂作业3,;或D2SEGMENTVAR1DB5,10DB-2,11VAR2DW5678HDW100D2ENDS,33,编程,把VAR1的第一个数据存入AL,把VAR2的第一个数据存入BX。请写出代码段。,CODESEGMENTASSUMECS:COD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 61496-3:2025 EN-FR Safety of machinery - Electro-sensitive protective equipment - Part 3: Particular requirements for active opto-electronic protective devices responsiv
- JJF(石化)077-2023二氧化碳气体检测报警器校准规范
- 人教版八年级英语上册单元同步知识点与语法训练 unit3 section A
- 两票执行细则培训
- 老年人心病防治知识培训课件
- 水溶液中的离子平衡-高考化学二轮复习知识清单与专项练习(新高考专用)原卷版
- 外研版八年级英语下册Module6单元测试试卷及答案
- 声音的特性(分层作业)-2023学年八年级物理上册(人教版)
- 动脉测压导管维护全流程指南:从置入到拔除的规范操作
- 外研版八年级英语上册Module11单元测试试卷-含答案01
- 老年患者麻醉专家共识
- 口腔病理学牙发育异常
- 2025年云南省初中学业水平考试物理及答案
- 《中华人民共和国慈善法》培训解读课件
- 2025前期咨询服务合同协议书模板
- 公共空间设计课程标准
- CJ/T 249-2007城镇污水处理厂污泥处置混合填埋泥质
- T/CACEM 22.3-2022校车运营服务管理第3部分:驾驶员与随车照管员管理规范
- 儿童商业插画课件图片
- 智能医疗中的知识图谱与多模态数据融合研究-洞察阐释
- 厨师岗位安全协议书
评论
0/150
提交评论