汇编语言程序设计02数据表示与汇编语言基础

上传人:huo****ian 文档编号:246612938 上传时间:2024-10-15 格式:PPT 页数:40 大小:4.17MB
返回 下载 相关 举报
汇编语言程序设计02数据表示与汇编语言基础_第1页
第1页 / 共40页
汇编语言程序设计02数据表示与汇编语言基础_第2页
第2页 / 共40页
汇编语言程序设计02数据表示与汇编语言基础_第3页
第3页 / 共40页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,汇编语言程序设计,-,朱明,*,汇编语言程序设计,_02_,数据表示与汇编语言基础,大连理工大学软件学院,_,朱明,2009,年,5,月,31,日,_,V1.1,第一章提问,IA-32,内部有,8,个,32,位寄存器,如,EAX,、,EBX,等,当要将,EAX,和,EBX,作为,16,位寄存器和,8,位寄存器使用的时候,他们的名字分别是什么?,EFLAGS,中的与算术运算最相关的标志位的名称和功能分别是什么?,IA-32,的三种基本运行模式是什么?,为了减小,CPU,与内存之间交换数据的等待时间,在,CPU,与内存之间增加了缓存(,cache,)。一个好的,cache,替换算法能够提高命中率,那么请说出三种目前的替换算法?,IA-32,指令执行的五个步骤是什么?哪三个是必须的?,汇编语言程序设计,-,朱明,2,数据的表示方法,我们需要先回答以下的几个问题:,什么是进制?他与计数之间有什么关系?如何进行任意进制数的加法和减法运算?,“,逢,X,进,1,”,,不允许出现比,X,大的单位数字出现,加大了就向高位进位,减小了就从高位借位,计算机系统中常见的进制都有哪些?,二进制,逢,2,进,1,,有,0,、,1,十进制,逢,10,进,1,,有,09,十六进制,逢,16,进,1,,有,09,、,AF,计算机的内存系统中,每一个位保存的是哪种进制的数?,MSB,和,LSB,分别表示什么含义?,二进制数,只有,0,和,1,两个数字,MSB,最高有效位,,LSB,最低有效位,3,汇编语言程序设计,-,朱明,Section 1,数据的表示方法,我们需要先回答以下的几个问题:,字节、字、双字的位数分别是多少?,8,位的,Byte,,,16,位的,word,,,32,位的,doubleword,K,、,M,、,G,、,T,、,P,、,E,、,Z,、,Y,分别代表多大?,K=2,10,、,M=2,20,、,G=2,30,、,T=2,40,、,P=2,50,、,E=2,60,、,Z=2,70,、,Y=2,80,各类长度有符号和无符号整数的范围是多少?,无符号:,8,位,02,8,-1,,,16,位,02,16,-1,,,32,位,02,32,-1,有符号:有符号整数的最高位为符号位,若为,1,则表示是负数:,8,位,-2,7,2,7,-1,,,16,位,-2,15,2,15,-1,,,32,位,-2,31,2,31,-1,任意进制如何装换到,10,进制?,DEC=,+(D1*X,1,)+(D0*X,0,),4,汇编语言程序设计,-,朱明,Section 1,数据的表示方法,我们需要先回答以下的几个问题:,计算机中经常的字符集都有哪些?,ASCII,:美国标准信息交换码,,7,位,+1,位,Unicode,:,UTF-8,,,UTF-16,,,UTF-32,UTF-8,保留了,ASCII,字符的编码,国际编码,通用性强:英文,8,位,中文,24,位,UTF-16,是,Unicode,的最初设计目标,也是默认的,Unicode,GB2312,:基于区位码的,16,位汉字编码,编码范围:,0 xA1A1 -0 x7E7E,GBK,:向下兼容,GB2312,,包括所有,CJK,汉字,GB18030,:向下兼容,GBK,和,GB2312,,目前在文字符号方面收录较全的编码。,5,汇编语言程序设计,-,朱明,Section 1,数据的表示方法,ASCII,字符串:一个或多个字符的序列,“,ABC123,”,、,ABC123,41h,,,42h,,,43h,,,31h,,,32h,,,33h,,空字符结尾,ASCII,控制字符,部分:,汇编语言程序设计,-,朱明,6,ASCII,控制字符描述,0,NULL,,空字符,8,BackSpace,,退格,9,Tab,,水平制表符,10,NextLine,,换行,13,Enter,,回车,移动到最左列,Section 1,汇编语言的保留字,MASM,环境中,有一些字符具有特殊的含义:,指令的助记符,对于,MASM,来说,ADD,、,CALL,、,CMP,、,DEC,、,INC,、,JMP,、,MOV,等,伪指令,用于程序的编译设置,PROC,、,.MMX,、,.DATA,、,.DATA?,、,.CODE,等,属性,用于定义变量和操作数信息,BYTE,、,WORD,、,QWORD,等,属性也同属于,MASM,的伪指令内容,预定义符号,data,、,stack,、,$,、,Time,、,Version,等,更多的保留字会在后面的课程中接触到,汇编语言程序设计,-,朱明,7,Section 2,汇编语言的标识符,MASM,环境的标识符可以类比为,C,语言中的变量或函数,在汇编语言中使用标识符来标识程序中的变量、常量、过程或代码的标号,标识符由,1127,个字符组成,标识符默认大小写不敏感,可以在汇编时通过,“,-cP,”,选项设置标识符的大小写敏感,标识符必须不是任何保留字,对标识符首字符的要求,AZ,、,az,、,_,、,、,?,、,$,尽量避免使用,作为首字符,汇编语言程序设计,-,朱明,8,Section 2,汇编语言的伪指令,伪指令在程序运行时并不执行,汇编语言中由汇编器识别并执行相应的动作,在,C,语言中,宏定义由什么来识别并处理?,汇编语言的伪指令可以用于定义变量、宏、过程、段的命名以及其他的汇编器相关设置,伪指令大小写是不敏感的,变量的定义要使用伪指令,汇编语言程序设计,-,朱明,9,numDWORD100,listBYTE10,20,30,40,BYTE,“,Good,night,”,0,BYTE0Ah,A,22h,Section 2,汇编语言的指令,汇编指令的基本构成:,标号(可选),数据标号:数据标号标识了变量的地址,代码标号:代码标号,通常用于跳转和循环的目标地址,汇编语言程序设计,-,朱明,10,指令助记符,操作数,;,注释,numDWORD100,loop:,mov,eax,12,.,jmploop,Section 2,标号,:,汇编语言的指令,汇编指令的基本构成:,指令助记符,助记符是一个简单短的、能够被汇编器识别的单词,mov,,将一个值赋值到另外一个寄存器或变量中,add,,加法操作,sub,,减法操作,mul,,乘法操作,jmp,,跳转到一个新地址执行指令,call,,调用一个过程,汇编语言程序设计,-,朱明,11,标号,:,指令助记符,操作数,;,注释,Section 2,moveax,3,汇编语言的指令,汇编指令的基本构成:,操作数,汇编语言的操作数依汇编指令而定,一般是,03,个,操作数可以是寄存器、立即数或内存地址(标号)等,无操作数:,单操作数:,双操作数:,汇编语言程序设计,-,朱明,12,标号,:,指令助记符,操作数,;,注释,Section 2,nop,inceax,汇编指令的基本构成:,注释,注释就是用自然语言描述程序以实现方便阅读等功能,汇编语言中有几种方式能够实现注释的功能,比如,单行注释:,块注释:,COMMENT=,这是多行注释,=,汇编语言的指令,汇编语言程序设计,-,朱明,13,标号,:,指令助记符,操作数,;,注释,Section 2,;,这是一行注释,TITLEadd and subtract,;This is a example,32-bit integers,INCLUDEirvine32.inc,.code,mainPROC,moveax,10000h;eax,addeax,40000h;add,subeax,20000h;sub,callDumpRegs,exit,mainENDP,ENDmain,Section 3,程序范例,一个简单的加减法程序,汇编语言程序设计,-,朱明,14,TITLE,伪指令,定义列表文件标题,可以将整行标记为注释,分号右边的内容将作为本行的注释,注释的内容默认会被编译器忽略,TITLEadd and subtract,;This is a example,32-bit integers,INCLUDEirvine32.inc,.code,mainPROC,moveax,10000h;eax,addeax,40000h;add,subeax,20000h;sub,callDumpRegs,exit,mainENDP,ENDmain,Section 3,程序范例,一个简单的加减法程序,汇编语言程序设计,-,朱明,15,INCLUDE,伪指令,汇编时将从,irvine32.inc,文件中复制必要的定义信息和设置信息,INCLUDE,的目录在环境中已经设置,TITLEadd and subtract,;This is a example,32-bit integers,INCLUDEirvine32.inc,.code,mainPROC,moveax,10000h;eax,addeax,40000h;add,subeax,20000h;sub,callDumpRegs,exit,mainENDP,ENDmain,Section 3,程序范例,一个简单的加减法程序,汇编语言程序设计,-,朱明,16,.code,伪指令,标记代码段的开始,代码段中存放程序中的所有可执行语句,TITLEadd and subtract,;This is a example,32-bit integers,INCLUDEirvine32.inc,.code,mainPROC,moveax,10000h;eax,addeax,40000h;add,subeax,20000h;sub,callDumpRegs,exit,mainENDP,ENDmain,Section 3,程序范例,一个简单的加减法程序,汇编语言程序设计,-,朱明,17,PROC,伪指令,用于表示一个过程的开始,程序中的该过程被命名为,main,TITLEadd and subtract,;This is a example,32-bit integers,INCLUDEirvine32.inc,.code,mainPROC,moveax,10000h;eax,addeax,40000h;add,subeax,20000h;sub,callDumpRegs,exit,mainENDP,ENDmain,Section 3,程序范例,一个简单的加减法程序,汇编语言程序设计,-,朱明,18,call,可以用来调用另外一个过程,DumpRegs,过程是一个可以显示,CPU,内部所有寄存器的值的过程,TITLEadd and subtract,;This is a example,32-bit integers,INCLUDEirvine32.inc,.code,mainPROC,moveax,10000h;eax,addeax,40000h;add,subeax,20000h;sub,callDumpRegs,exit,mainENDP,ENDmain,Section 3,程序范例,一个简单的加减法程序,汇编语言程序设计,-,朱明,19,exit,语句将间接调用,irvine32,函数库中的一个函数终止程序,ENDP,伪指令用来标记过程的结束,END,伪指令用来标示程序的结束,即当前行是有效程序的最后一行,汇编代码,汇编程序的代码风格,汇编语言程序设计,-,朱明,20,TITLE,add and subtract,;This is a example,32-bit integers,INCLUDE,irvine32.inc,.code,main,PROC,mov,eax,10000h,;eax,add,eax,40000h,;add,sub,eax,20000h,;sub,call,DumpRegs,exit,main,ENDP,END,main,TITLE,.code,mov,eax,DumpRegs,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!