微机接口courseware-cpu

微机接口courseware-cpu

ID:40207655

大小:1.16 MB

页数:65页

时间:2019-07-25

微机接口courseware-cpu_第1页
微机接口courseware-cpu_第2页
微机接口courseware-cpu_第3页
微机接口courseware-cpu_第4页
微机接口courseware-cpu_第5页
资源描述:

《微机接口courseware-cpu》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第四章 汇编语言程序设计4.1汇编语言源程序高级语言高级语言是面向过程的语言,是脱离机器的语言,不用考虑计算机生产厂家,CUP型号。程序语句更接近于自然语言,因而易学、易懂、易掌握,应用也十分广泛。机器语言是指各种CPU所能直接识别和执行的二进制代码。这种语言难于记忆、书写和输入。汇编语言汇编语言是一种将机器代码指令“符号”化了的编程语言,即每一条指令都用一个助记符来表示,再加上一系列的编程规则。优点:①源程序采用助记符指令,容易记忆和书写。②源程序经编辑、汇编、连接和调试非常容易形成正确的可执行文件。③执行文件就是CPU能直接识别的二进制代码,因而具有实时、

2、精确、快捷的特点。不足:因硬件结构不同,汇编语言指令也不同。4.1.1汇编语言源程序的结构一个完整的汇编语言源程序通常由若干个逻辑段(SEGMENT)组成,包括数据段、附加段、堆栈段和代码段。每个逻辑段以SEGMENT语句开始,ENDS语句结束,整个源程序用END语句结束。段名1SEGMENT:段名1ENDS段名2SEGMENT:段名2ENDSEND例:完整汇编语言程序的组成结构----求两个数相加和的程序DSEGSEGMENT;定义数据段DATA1DW0F865H;定义被加数DATA2DW360CH;定义加数DSEGENDS;数据段结束ESEGSEGMENT

3、;定义附加段SUMDW2DUP(?);定义存放结果区ESEGENDS;附加段结束CSEGSEGMENT;定义代码段ASSUMECS:CSEG,DS:DSEG,ES:ESEG接上页程序START:MOVAX,DSEGMOVDS,AX;初始化DSMOVAX,ESEGMOVES,AX;初始化ESLEASI,SUM;SUM偏移地址送SIMOVAX,DATA1;取被加数ADDAX,DATA2;两数相加MOVES:[SI],AX;和AX→ES:[SI]HLTCSEGENDS;代码段结束ENDSTART;源程序结束4·1·2语句类型及格式汇编语言分两大类:指令性语句由指令组

4、成的可由CPU执行的语句格式如下:[标号:][前缀]操作码[操作数[,操作数]][;注释]指示性语句只起说明作用,不生成目标代码,也叫伪操作语句(伪指令)。格式如下:[名字]伪操作[操作数[,操作数]][;注释]4.1.3操作数操作数寄存器存储器单元数据项数据项常量标号变量表达式1.常量数字常量以字符D结尾-十进制常量以字符B结尾-二进制常量以字符H结尾-十六进制常量字符串常量如:‘AB’2.标号-符号地址例:LABLE:MOVAX,NUM1:JMPNEARLABLE;符号目标操作数不能与指令助记符或伪指令重名不允许由数字打头字符个数不超过31个标号有三种属性

5、段:标号所在段的代码段地址偏移量:标号所在段的段地址到定义该标号的地址之间的字节数类型:NEAR(段内)和FAR(段间)3.变量变量是某个数据区的名字,在指令中可以作为存储器操作数引用。变量必需以字母开头。由于数据区内容可以改变,所以变量也可以改变变量与标号一样也具有三种属性。段属性是它所在段的段地址,段值在DS或ES寄存器中。偏移量属性是变量所在段的段地址到变量地址之间的字节数。变量的类型有BYTE、WORD、DWORD(双字)、QWORD(4字)、TWORD(十字节)。…变量名与标号名的区别变量名是变量的符号地址,标号是指令的符号地址。例如:MOVAX,V

6、AR1MOVBL,VAR2JMPDONEDONE:ADDAL,54.表达式表达式不是指令,本身不能执行,汇编时对表达式进行相应的运算,程序执行时表达式已有指定的数值。表达式常用的运算符有算术运算符、逻辑运算符、取值运算符和属性运算符。表达式种类⑴算术运算符:+、-、*、/和MOD(取余数)例如:N1DB45H×6+9MOVAL,8+7⑵逻辑运算符:AND、OR、XOR、NOT例如:MOVAL,0ADHAND0CCH⑶取值算术运算符OFFSET得到一个标号或变量的偏移地址。例如:MOVSI,OFFSETDATA1将变量DATA1的偏移地址送SI,这条指令与下边的

7、指令执行结果相同。LEASI,DATA1SEG得到一个标号或变量的段地址。例如:MOVAX,SEGDATA;DATA段地址送→AXMOVDS,AX属性运算符PTR指定位于其后的存储器操作数的类型CALLDWORDPTR[BX];存储器操作数为4字节长MOVAL,BYTEPTR[SI];将SI指向的字节数送AL如有:VARDW1234HMOVAL,VARMOVAL,BYTEPTRVAR⑸其他运算符方括号[]在指令中用方括号表示存储器操作数,[]中的内容表示操作数的偏移地址,例如:MOVAX,[BX]段超越运算符“:”“:”跟在段名之后,表示段超越,用来指明存储器

8、操作数的段属性。例如:MOVAX,ES

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。