资源描述:
《4-1汇编语言程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章汇编语言程序设计——微机原理与接口技术2010.春ADDWORDPTRDS:[100],2例2:将偏移地址为100的字存储单元中的内容加2,其结果送回到原存储单元中。汇编语言(AssemblyLanguage)助记符变量或标号汇编语言:用记忆符号书写的(符号包括:指令助记符MOV、符号地址AX、标号START:、伪指令DB)、其主要操作与机器指令基本上是一一对应的、并遵循一定语法规则的语言。操作码地址码8106000102002;数据段DATASEGMENTSUMDW?;SUM为字变量,初值不定BBDD1;BB为双字变量,初值为1DATAE
2、NDS;堆栈段STACKSEGMENTSTACK;段名和组合类型DB200DUP(0);堆栈的大小为200个字节STACKENDS;代码段CODESEGMENTUSE16ASSUMECS:CODE,SS:STACK,DS:DATA,ES:DATASTART:MOVAX,DATAMOVDS,AX;数据段首址送DS汇编源程序举例3MOVCX,50;循环计数器置初值MOVAX,0;累加器置初值MOVBX,1;1→BXNEXT:ADDAX,BX;(AX)+(BX)→AXINCBXINCBX;(BX)+2→BXDECCX;(CX)-1→CXJNENEXT;
3、(CX)≠0转NEXTMOVSUM,AX;(CX)=0累加结果→SUMMOVAH,4CHINT21H;返回DOSCODEENDSENDSTART;源程序结束语句。程序运行时,启动地址为START汇编源程序举例4与C语言程序的对比:main(){intsum=0;//初始化变量inti,j;j=1;for(i=0;i<50;i++){ sum=sum+j;//求和j+=2; }}比较:C语言程序编译成可执行文件之后,大小为24K字节。汇编语言为几百字节。汇编源程序举例5汇编语言程序的开发过程编辑文本编辑器,如EDIT.COM源程序:文件名.asm
4、汇编汇编程序,如ML.EXE目标模块:文件名.obj连接连接程序,如LINK.EXE可执行文件:文件名.exe调试调试程序,如DEBUG.EXE应用程序错误错误错误错误6回顾:8086的寻址方式汇编格式功能、说明寄存器方式R操作数在寄存器中可用寄存器:除了SP外的通用寄存器存储器方式寄存器间接方式[R]操作数在存储器中R的内容为操作数的EA可用R:SIDIBXBP变址方式X[R]或[R+X]指定R的内容加上变址值X作为操作数的EA,常用于表指针可用R:SIDIBXBP基址加变址方式X[变址R][基址R]指定基址R的内容加上指定变址R的内容,加上位
5、移量X作为操作数的EA,常用于矩阵运算可用基址R:BXBP可用变址R:SIDI直接方式[n]或变量名指令目标代码的一部分作为操作数的EA立即方式n操作数跟在指令后面,即在代码段中,适用于赋初值74.1宏汇编语言的基本语法4.2常用的机器指令语句4.3伪指令语句4.4常用的系统功能调用4.5总结第4章目录84.1.1指令性语句和伪指令语句机器指令语句的一般格式[标号:][指令前缀]机器指令助记符[操作数][;注释]2.汇编控制语句(伪指令)的一般格式[名字]伪指令助记符[参数,…,参数][;注释]4.1宏汇编语言的基本语法93.1宏汇编语言的基本语
6、法常量与数值表达式常量数值表达式变量、标号与地址表达式变量标号地址表达式10(1)常量C语言中的常量定义:#definepi=3.1415926常量的基本概念:汇编时已有确定的数值的量(不是程序运行的时候才能确定的)。●用途:.机器指令语句中的立即操作数;.也可作存贮器操作数的组成部分(位移量V);.在数据定义伪指令语句中给变量赋初值;●分类:数值常量、符号常量1.常量与数值表达式11符号常量的定义:等价伪指令EQU等号伪指令=使用:定义后直接引用符号名。注意:①符号常量不分配存贮单元,只建立等价代换关系,可出现在任何段。②用EQU语句定义的符号
7、常量在该程序中不能再重新赋值,而用“=”定义的符号常量可多次重新赋值,使用时,以最后一次定义的值为准。1.常量与数值表达式——常量例1例212例1:DATASEGMENTUSE16NUMBEREQU4;COUNT=35TABDW70,80H,-5,NUMBER┇MOVAX,NUMBERMOVSI,COUNTMOVDX,TABCOUNT=10MOVBX,COUNT[ECX]MOVCX,TAB[ECX];注意这两条指令的区别4符号常量35TAB70,80H,-5,NUMBERNUMBERCOUNT符号常量特点:①在汇编期间被代换成相应等价的数据;②提
8、高程序的可读性;③便于随时修改程序中的参数。13例2:阅读下列程序DATASEGMENTUSE16数据段SUMDW0;SUM为字变量,初